Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Grunt-如何从外部项目运行常见的外部任务_Javascript_Node.js_Build_Gruntjs_Build Process - Fatal编程技术网

Javascript Grunt-如何从外部项目运行常见的外部任务

Javascript Grunt-如何从外部项目运行常见的外部任务,javascript,node.js,build,gruntjs,build-process,Javascript,Node.js,Build,Gruntjs,Build Process,我刚开始使用Grunt,我想有一个通用的项目,在那里我可以定义通用的任务。之后,每个团队都可以创建自己的项目,并能够将我的公共项目添加为依赖项并运行公共任务 当您想向FE构建管道添加一些预定义任务时,这也很有用。当有人将该项目推送到github并尝试使用Jenkins来构建它时,默认情况下我还想运行一些其他任务(比如jslint、uglify、compress、nexus deploy等) 我尝试通过创建一个包含所有这些常见任务的grunt项目,然后将其作为依赖项添加到其他项目中来实现这一点。问

我刚开始使用Grunt,我想有一个通用的项目,在那里我可以定义通用的任务。之后,每个团队都可以创建自己的项目,并能够将我的公共项目添加为依赖项并运行公共任务

当您想向FE构建管道添加一些预定义任务时,这也很有用。当有人将该项目推送到github并尝试使用Jenkins来构建它时,默认情况下我还想运行一些其他任务(比如jslint、uglify、compress、nexus deploy等)


我尝试通过创建一个包含所有这些常见任务的grunt项目,然后将其作为依赖项添加到其他项目中来实现这一点。问题是我无法从外部项目运行常见任务。有没有其他方法可以实现这一点?

不太喜欢将所有任务放在一个存储库中并将其拉入,但这是可能的

我以前没有做过这件事(我从目录中做过loadTasks,它可以正常工作),我不喜欢它。但我看到了两种可能性:

1。使用子模块

您可以使用将任务repo拉入项目repo的文件夹中,并从项目repo加载任务

从文件夹加载任务的方式如下(加载此文件夹中的所有文件!):


2。使用1 Git回购并通过NPM安装

创建一个包含任意多个任务的存储库。一个任务应该驻留在一个文件中(它只适用于一个文件,但我不推荐它)

然后,您可以在项目中作为简单的开发人员依赖项安装git repo:

要使其工作,您的GrunFile需要为这两个任务配置目标


我会做什么

我自己会为每个任务创建一个git repo,并将每个任务分别安装到我需要的项目中(从git repo安装npm)

将对社区有用的任务发布到npm注册表。用于创建新任务


关于构建过程:

只需在GrunFile中添加一个别名任务,其中包含您希望在新提交中运行的所有任务:

grunt.registerTask('jenkins', ['jslint', 'compress', ...]);
并将jenkins配置为运行此任务(您需要在项目配置中添加git钩子和源代码管理),并将shell脚本配置为构建步骤:

npm install && grunt jenkins
或者更好的方法是,在package.json中添加一个并使用test命令

我在这个话题上创造了一个更好的答案,不幸的是,这个答案被删除了(我不知道为什么,它有很多投票权……):

下面是关于自定义任务开发的另一个答案:


您提出了一些有效且有趣的观点。我会重新考虑整个情况,也许在那之后,我会发布我的选择。非常感谢。
$ npm install git+ssh://your-tasks-repo.git --save-dev
grunt.registerTask('jenkins', ['jslint', 'compress', ...]);
npm install && grunt jenkins