将参数传递给npm运行脚本

我在npm package.json中创建脚本。将参数传递给npm运行脚本

该脚本将运行自耕农脚手架我的模板,然后我想运行一饮而尽任务做一些更多的东西,以一个特定的文件(注射用gulp-inject)

故宫任务看起来是这样的:

"scaffolt": "scaffolt -g scaffolt/generators template && gulp inject"

现在,我需要能够从命令行中给我的模板命名。

我需要运行的命令如下:

npm run scaffolt {templateName}

,但如果我这样做,然后我尝试运行一饮而尽任务调用一样的类型化{} TEMPLATENAME。

一个简单的例子:如果我运行npm run scaffolt myTemplate,那么第二部分将尝试运行一个名为gulp myTemplate的任务,失败。

是否有任何方法将{myTemplate}名称作为参数传递给脚本的第二部分,以便它可以在gulptask中使用?

吞咽任务目前只有console.logprocess.argv

回答:

您可以将参数传递给npm运行脚本。这里是documentation。

为这些操作完成大量的任务。

//gulpfile.js 

const gulp = require('gulp');

const commandLineArgs = require('command-line-args');

const spawn = require('child_process').spawn;

gulp.task('inject', ['scaffolt'],() => {

console.log('scaffolt complete!');

});

gulp.task('scaffolt', (cb) => {

const options = commandLineArgs([{ name: 'templateName' }]);

//use scaffolt.cmd on Windows!

spawn('scaffolt', ['-g', 'scaffolt/generators', options.templateName])

.on('close', cb);

});

而在你的包

//package.json 

"scripts": {

"scaffolt": "gulp inject "

}

并运行它npm run scaffolt -- --templateName=something

提示: NPM运行脚本追加node_modules/.bin目录的路径,所以我们可以生成可执行文件,就像它们是在同一个文件夹!

以上是 将参数传递给npm运行脚本 的全部内容, 来源链接: utcz.com/qa/262733.html

回到顶部