不太喜欢尝试将所有任务放入一个存储库并将它们拉入,但这是可能的。
我以前没有这样做过(我已经从目录中完成了 loadTasks,它只是工作),我不喜欢它。但我看到了两种可能性:
1.使用子模块
您可以使用git submodules 将您的tasks-repo 拉到您的项目repo 的文件夹中,然后从它们加载您的任务。
从文件夹加载任务是通过这种方式完成的(加载此文件夹中的所有文件!):
grunt.loadTasks "./your-git-submodule-folder"
2。使用 1 个 Git-Repo 并通过 NPM 安装它
创建一个包含尽可能多任务的存储库。一项任务应驻留在 1 个文件中(它仅适用于 1 个文件,但我不推荐它)
// task1.js
grunt.registerMultiTask(task1", "run task1", function() {
// do stuff here
});
// task2.js
grunt.registerMultiTask(task2", "run task2", function() {
});
然后您可以将 git-repo 作为简单开发依赖项安装在您的项目中:
$ npm install git+ssh://your-tasks-repo.git --save-dev
为此,您的 Gruntfile 需要为这两个任务配置目标
我会做什么
我自己会为每个任务创建一个 git-repo,并将每个任务单独安装到我需要它们的项目中(从 git-repo 安装 npm)。
将可能对社区有用的任务发布到 npm-registry。使用grunt-init gruntplugin 创建新任务。
关于您的构建过程:
只需在您的 gruntfile 中添加一个别名任务,其中包含您希望在新提交上运行的所有任务:
grunt.registerTask('jenkins', ['jslint', 'compress', ...]);
并配置您的 jenkins 以运行此任务(您需要在 Projects-Config 中添加一个 git-hook 和 Source-Code-Management),并将一个 shell 脚本配置为 Build-Step:
npm install && grunt jenkins
或者更好的是,将scripts-section 添加到您的 package.json 并使用测试命令。
我在这个主题上创建了一个更好的答案,不幸的是被删除了(我不知道为什么,它有很多赞成...):
https://stackoverflow.com/questions/14722649/continuous-integration-in-nodejs/15657588#15657588
这是另一个关于自定义任务开发的答案:
Grunt: custom task development how-to