使用没有全局gulp的gulp //编辑:并且不链接到bin js文件

phi*_*unz 16 javascript node.js npm gulp

我有一个gulpfile.js在键入gulp命令行时完美运行.

所有gulpbash命令实际上都是调用package.json >> bin >> gulp全局安装的gulp中指定的js文件.

现在我想运行没有全局安装gulp的gulpfile,只需键入node gulpfile.js哪个明显失败并且已经经常被提及,尽管gulp在本地安装并且在开头需要gulpfile.js

使用没有cli工具的gulp可以很容易地将gulp用作其他npm插件的一部分.

注意:
当通过gulp cli工具启动此原始gulpfile.js时,需要另一个gulpfile.js从原始gulpfile.js开始工作.

问题:
在不需要全局cli gulp工具的情况下运行/需要gulp的最佳方法是什么(//编辑:或在本地链接到它)?例如,当gulp只是本地安装的依赖项时,能够简单地从另一个js文件中请求它.(换句话说,从JS内部以编程方式启动gulp,无需任何类型的CLI干预)

San*_*ser 35

在package.json中

"scripts": {
   "gulp": "gulp"  
},
Run Code Online (Sandbox Code Playgroud)

然后这个命令npm run gulp 同样npm提供了将额外参数传递给命令的功能.这只是npm> = 2.0的情况

更新:没有bin链接

您可以查看node_modules/.bin/gulpnode_modules/gulp/bin/gulp.js文件以了解如何开始吞咽(第129行很有趣)

我认为这应该有效:

var gulp = require('gulp');

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

gulp.start.apply(gulp, ['default']);
Run Code Online (Sandbox Code Playgroud)


t.n*_*ese 8

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

或者您可以定义npm脚本,然后运行它npm run gulp

通过添加这个 package.json

"scripts": {
  "gulp": "gulp"
}
Run Code Online (Sandbox Code Playgroud)


Meg*_*sht 5

在package.json中添加以下内容:

"scripts": {
  "gulp": "node ./node_modules/gulp/bin/gulp.js <task-name>" 
}
Run Code Online (Sandbox Code Playgroud)

并通过键入npm run gulp从命令行运行.

这消除了全局安装gulp的依赖性


twe*_*ini 5

同时,由于npm> = 5.2.0。您可以使用“ npx”来做到这一点:

npx gulp
Run Code Online (Sandbox Code Playgroud)

它在./node_modules/.bin中执行二进制文件

顺便说一句,它具有执行未安装工具的能力,这些工具只是临时安装,执行然后删除。

查看KatKatán的帖子:npx 简介:npm包运行器