• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

将参数传递给npm运行脚本

node.js 来源:Nick 7次浏览

我在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目录的路径,所以我们可以生成可执行文件,就像它们是在同一个文件夹!


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)