Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将命令行参数传递给package.json中的npm脚本_Npm_Package.json_Npm Scripts - Fatal编程技术网

将命令行参数传递给package.json中的npm脚本

将命令行参数传递给package.json中的npm脚本,npm,package.json,npm-scripts,Npm,Package.json,Npm Scripts,我的package.json中有以下脚本: "scripts": { "vumper": "node node_modules/vumper/index.js", "format": "prettier --single-quote -width=80 --write package.json" }, “vumper”包接受命令行参数(如“dv”)。我希望能够有一个连续运行这两个命令的命令 基本上,我希望能够运行: npm run vumber dv 然后 npm run

我的package.json中有以下脚本:

"scripts": {
    "vumper": "node node_modules/vumper/index.js",
    "format": "prettier --single-quote -width=80 --write package.json"
 },
“vumper”包接受命令行参数(如“dv”)。我希望能够有一个连续运行这两个命令的命令

基本上,我希望能够运行:

npm run vumber dv
然后

npm run format
但在一个命令中,类似于

npm run my-build dv
它将运行上述两个命令,正确接受命令行参数“dv”,并将其传递给第一个npm run vumper。这可能吗?

简短回答: 本质上,您想要的是有一个类似这样的npm脚本,
,如下所示:

package.json

。。。
“脚本”:{
“我的构建”:“func(){npm run vumper\“$1\”&&npm run format;};func”,
“vumper”:“node node_modules/vumper/index.js”,
“格式”:“更漂亮--单引号-宽度=80--写package.json”
},
...
说明:

名为
func
的Bash函数执行以下操作:

  • 首先运行
    npm运行vumper/参数)
  • 随后,它通过命令
    npm run format
    运行名为
    format
    的脚本
  • 这两个
    npm run
    命令使用
    &
    操作符链接,因此第二个
    npm run format
    命令只有在初始
    npm run vumper将
    --
    选项描述为:

    。。。特殊选项
    --
    用于限定选项的结尾。npm将把
    --
    后面的所有参数直接传递给脚本:。。。参数将仅传递给
    npm run
    之后指定的脚本,而不会传递给任何pre或post脚本


    解决方案2-跨平台: 对于跨平台解决方案(成功地与Bash、Windows命令提示符/cmd.exe和PowerShell等配合使用的解决方案),您需要使用如下nodejs帮助程序脚本

    run.js

    让我们将nodejs脚本命名为run.js,并将其保存在projects根目录中,与package.json处于同一级别

    const execSync=require('child_process')。execSync;
    常量arg=process.argv[2]||“dv”;//如果通过CLI未提供参数,则默认值为'dv'。
    execSync('npm run vumper'+arg,{stdio:[0,1,2]});
    execSync('npm运行格式',{stdio:[0,1,2]});
    
    package.json

    my build
    脚本配置为调用run.js,如下所示:

    。。。
    “脚本”:{
    “我的构建”:“节点运行”,
    “vumper”:“node node_modules/vumper/index.js”,
    “格式”:“更漂亮--单引号-宽度=80--写package.json”
    },
    ...
    
    运行
    我的构建
    脚本:

    根据解决方案1,要通过CLI调用
    my build
    ,您需要运行:

    npm运行我的构建--dv
    
    说明:

    • run.js用于获取通过CLI传递的参数(例如,
      dv
      )。如果在运行
      npm run my build
      时未提供任何参数,则默认值(即
      dv
      )将传递给
      vumper
      npm脚本

    • run.js还利用来抛出/调用两个
      npm run
      命令

    简短回答: 本质上,您想要的是有一个类似这样的npm脚本,
    ,如下所示:

    package.json

    。。。
    “脚本”:{
    “我的构建”:“func(){npm run vumper\“$1\”&&npm run format;};func”,
    “vumper”:“node node_modules/vumper/index.js”,
    “格式”:“更漂亮--单引号-宽度=80--写package.json”
    },
    ...
    
    说明:

    名为
    func
    的Bash函数执行以下操作:

  • 首先运行
    npm运行vumper/参数)
  • 随后,它通过命令
    npm run format
    运行名为
    format
    的脚本
  • 这两个
    npm run
    命令使用
    &
    操作符链接,因此第二个
    npm run format
    命令只有在初始
    npm run vumper将
    --
    选项描述为:

    。。。特殊选项
    --
    用于限定选项的结尾。npm将把
    --
    后面的所有参数直接传递给脚本:。。。参数将仅传递给
    npm run
    之后指定的脚本,而不会传递给任何pre或post脚本


    解决方案2-跨平台: 对于跨平台解决方案(成功地与Bash、Windows命令提示符/cmd.exe和PowerShell等配合使用的解决方案),您需要使用如下nodejs帮助程序脚本

    run.js

    让我们将nodejs脚本命名为run.js,并将其保存在projects根目录中,与package.json处于同一级别

    const execSync=require('child_process')。execSync;
    常量arg=process.argv[2]||“dv”;//如果通过CLI未提供参数,则默认值为'dv'。
    execSync('npm run vumper'+arg,{stdio:[0,1,2]});
    execSync('npm运行格式',{stdio:[0,1,2]});
    
    package.json

    my build
    脚本配置为调用run.js,如下所示:

    。。。
    “脚本”:{
    “我的构建”:“节点运行”,
    “vumper”:“node node_modules/vumper/index.js”,
    “格式”:“更漂亮--单引号-宽度=80--写package.json”
    },
    ...
    
    运行
    我的构建
    脚本:

    根据解决方案1,要通过CLI调用
    my build
    ,您需要运行:

    npm运行我的构建--dv
    
    说明:

    • run.js用于获取通过CLI传递的参数(例如,
      dv
      )。如果在运行
      npm run my build
      时未提供任何参数,则默认值(即
      dv
      )将传递给
      vumper
      npm脚本

    • run.js还利用
       "my-build": "npm run vumper %npm_config_myflag% && npm run format",