如何将参数从命令行传递到npm和grunt?
我正在尝试自动化我的工作流程中的一些过程,为了做到这一点,我需要使用一些变量来控制我正在工作的环境 我将从一个简单的示例开始,这是一个创建新文件夹并复制一些样板文件的命令。为此,我使用了npm和grunt,如下所示:如何将参数从命令行传递到npm和grunt?,npm,gruntjs,Npm,Gruntjs,我正在尝试自动化我的工作流程中的一些过程,为了做到这一点,我需要使用一些变量来控制我正在工作的环境 我将从一个简单的示例开始,这是一个创建新文件夹并复制一些样板文件的命令。为此,我使用了npm和grunt,如下所示: npm run new --target:my-folder-name package.json “脚本”:{ “新”:“咕噜新——目标” }, grunt.js module.exports=函数(grunt){ const target=grunt.option('targ
npm run new --target:my-folder-name
package.json
“脚本”:{
“新”:“咕噜新——目标”
},
grunt.js
module.exports=函数(grunt){
const target=grunt.option('target');
log('Target:',Target);
grunt.config.set('copy'{
新的:{
档案:[{
是的,
cwd:“资产/邮政编码”,
src:“*.zip”,
dest:'项目/',
}]
},
});
}
我试着这样称呼它:
npm run new --target:my-folder-name
这只是一个简单的例子,我正在运行其他脚本,如解压缩文件、重命名、复制、处理SCS等
我期望的任务是运行一个将文件复制到名为my folder name
的文件夹中的任务,但它没有发生。控制台正在打印true
,而不是文件夹名称
我需要做什么才能将参数传递给脚本?假设我们的人造项目目录的结构如下:
。
├── Grunfile.js
├── 资产
│ └── 拉链
│ ├── file1.zip
│ ├── file2.zip
│ └── file3.zip
├── 节点单元
│ └── ...
└── package.json
然后考虑下面的GruntFiel.js示例:使用:
grunfile.jsmodule.exports=函数(grunt){
const target=grunt.option('target')| |'foobar';//默认目录为'foobar'。
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.initConfig({
副本:{
拉链:{
档案:[{
是的,
cwd:“资产/邮政编码”,
src:“*.zip”,
目标:“项目/”+目标
}]
}
}
});
grunt.registerTask('copy-zips',['copy:zips']);
};
通过grunt
命令的输出。
cd
到项目目录并运行以下grunt
命令:
grunt copy-zips
npm run copy-zips
在项目目录的根目录中创建以下文件夹(projects/foobar
)
结果示例A
。
├── ...
└── 项目
└── 福巴
├── file1.zip
├── file2.zip
└── file3.zip
注意已创建默认的foobar
文件夹,其中包含*.zip
文件的副本。该文件夹名为foobar
,因为我们没有通过命令行提供参数
cd
到项目目录并运行以下grunt命令:
grunt copy-zips --target=my-folder-name
在项目目录的根目录中创建以下文件夹(projects/my folder name
)
结果示例B
。
├── ...
└── 项目
└── 我的文件夹名
├── file1.zip
├── file2.zip
└── file3.zip
注意这次创建的我的文件夹名
文件夹包含*.zip
文件的副本,因为我们提供了--target=my folder name
参数/选项
npm
命令的输出。
首先,让我们在projects package.json中配置脚本部分,如下所示:
包,json
{
...
“脚本”:{
“复制拉链”:“grunt复制拉链”
},
...
}
如果我们cd
到项目目录并运行以下npm
命令:
grunt copy-zips
npm run copy-zips
我们得出的结果与前面提到的结果示例A部分所示的结果相同
接下来,如果我们再次cd到项目目录并运行以下npm
命令:
grunt copy-zips
npm run copy-zips
npm运行复制拉链--target=我的文件夹名
我们得到的结果与前面提到的结果示例B部分所示的结果相同
注意:npm run copy zips
和参数--target=my folder name
之间的附加--
选项
npm将--
选项描述如下:
截至npm@2.0.0,您可以在执行脚本时使用自定义参数。的特殊选项-->
用于分隔选项的结尾。npm将把-->
之后的所有参数直接传递给您的脚本:
补充说明:
如果您不想在projects
文件夹中创建my folder name
文件夹,而是想在项目目录的根目录中创建my folder name
文件夹,则可以在copy
任务中重新定义dest
属性,如下所示:
grunfile.js
/。。。
grunt.initConfig({
副本:{
拉链:{
档案:[{
是的,
cwd:“资产/邮政编码”,
src:“*.zip”,
目的地:目标//