不使用全局gulp和不链接bin js文件的情况下使用gulp

20

我有一个gulpfile.js文件,当在命令行中键入 gulp 时可以完美运行。

所有 gulp bash命令真正做的就是调用全局安装的gulp中 package.json >> bin >> gulp 指定的js文件。

现在,我想通过简单地键入 node gulpfile.js 来运行gulpfile而无需全局安装gulp,但这显然会失败,并且已经多次提到过,尽管gulp已在本地安装并且在 gulpfile.js 开头被需要。

不使用cli工具就可以使用gulp作为其他npm插件的一部分。

注意:
当这个原始gulpfile.js通过gulp cli工具启动时,从原始gulpfile.js require另一个gulpfile.js可以工作。

问题:
在没有全局cli gulp工具的情况下运行/要求gulp的最佳方法是什么(//编辑:或在本地链接到它)?例如,当gulp仅作为本地安装的依赖项存在时,是否能够从另一个JS文件中简单地require它(换句话说,在CLI干预的情况下从JS内部以编程方式启动gulp)

6个回答

41

在 package.json 文件中

"scripts": {
   "gulp": "gulp"  
},

然后运行命令 npm run gulp。此外,npm 提供了向你的命令传递额外参数的能力。这仅适用于 npm >= 2.0。

更新:无 bin 链接

你可以检查 node_modules/.bin/gulpnode_modules/gulp/bin/gulp.js 文件,以了解如何启动 gulp(第129行很有趣)。

我认为这应该可以工作:

var gulp = require('gulp');

gulp.task('default', function() {
    console.log('do something');
});

gulp.start.apply(gulp, ['default']);

这也是链接CLI工具的另一种方式。 - philkunz
是的,自从npm >= 2.0版本以来,您也可以向CLI工具传递参数。 - Sander Visser
请检查 node_modules/.bin/gulp。 - Sander Visser

9

当你在本地安装它(npm install --save-dev gulp)后,可以通过调用./node_modules/.bin/gulp all来运行它。

或者你可以定义一个npm脚本,并使用npm run gulp来运行它。

通过将以下内容添加到package.json中:

"scripts": {
  "gulp": "gulp"
}

好的,但那只是另一种链接到CLI工具的方式,不是吗? - philkunz
@philli 是的,但是不需要全局安装,你只需要在项目的 node_modules 目录中使用本地安装。你需要在某个地方安装 gulp,否则无法运行 gulp。 - t.niese
@philli 哦,现在我明白你在问什么了。你想从应用程序内部以编程方式启动它。 - t.niese
是的 :) 如有需要,请随意修改问题的措辞。 - philkunz
你可以检查 node_modules/.bin/gulp 文件。 - Sander Visser
显示剩余3条评论

8

同时,自npm版本号>=5.2.0开始,您可以使用'npx'来执行此操作:

npx gulp

它执行位于./node_modules/.bin目录下的二进制文件。顺便一提,它有能力执行未安装的工具,这些工具只是临时安装、执行,然后被删除。请查看Kat Marchán的文章:介绍npx:一个npm包运行器

5
在你的 package.json 文件中添加以下内容:
"scripts": {
  "gulp": "node ./node_modules/gulp/bin/gulp.js <task-name>" 
}

你可以通过在命令行中输入npm run gulp来运行。

这样做可以避免全局安装gulp所带来的依赖问题。


4
我认为最直接的答案如下所示:

node ./node_modules/gulp/bin/gulp.js

是的,将其添加到npm脚本中可行,但在自动化构建等情况下并没有用处。此时你需要运行一个从存储库获取现有代码的gulp任务,并且无法轻松更改package.json。
一般来说,Sander Visser的回答可能是最好的,但这是可以在任何地方实现的最低级别调用。

0
重申上面的答案,但包括gulpfile位置和gulp命令(在本例中为build)。在Windows上,您可以使用以下命令:

node node_modules\gulp\bin\gulp.js build --gulpfile "C:\my_project_location\gulpfile.js"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接