将参数从节点文件发送到package.json脚本命令

时间:2020-11-11 12:23:56

标签: npm package.json npm-scripts

这是一个名为myFile.js的文件,我通过节点执行该文件:

var aa = `npm run build -- --main=src/` + (component === `widget` ? `thisPath/` : ``) + `${component}/myFile.ts`;
execSync(`${aa} `);

这在一个foreach循环中,每个循环中'component'的值都会改变。

这是我package.json中的构建命令:

"build": "ng build --aot --outputHashing=\"all\" --sourceMap=false --vendorChunk=false --extra-webpack-config elements-webpack.config.js --single-bundle"

这是我的elements-webpack.config.js文件:

const path = require('path');
const uuidv1 = require('uuid/v1');

console.log(process.argv);
var pathData = process.argv[10];

module.exports = {
  output: {
    filename: pathData === 'main' ? '[name].[contenthash].js' : '[name].[contenthash].js',
    jsonpFunction: 'myElements-' + uuidv1(),
    library: 'elements'
  },
  externals: {
    "rxjs": "rxjs",
    "@angular/core": "ng.core",
    "@angular/common": "ng.common",
    "@angular/common/http": "ng.common.http",
    "@angular/platform-browser": "ng.platformBrowser",
    "@angular/platform-browser-dynamic": "ng.platformBrowserDynamic",
    "@angular/compiler": "ng.compiler",
    "@angular/elements": "ng.elements",
    "@angular/forms": "ng.forms",
    "@angular/router": "ng.router"
  }
};

我想做的是将myFile.js中的一个参数发送到package.json中的命令,以便在webpack配置文件中获取它。该参数是“ component”变量的值。

我认为它应该像这样:

var aa = `npm run build -- --main=src/` + (component === `widget` ? `thisPath/` : ``) + `${component}/myFile.ts` + ` ${component}`;

但是后来我不知道如何在package.json中捕获它。

1 个答案:

答案 0 :(得分:1)

但是后来我不知道如何在package.json中捕获它。

您无需在package.json中进行任何特殊处理即可传递参数。如果调用使用--,则--之后的所有内容都会添加到命令中。

示例package.json:

{
  "name": "temp",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "build": "ls"
  },
  "author": "",
  "license": "MIT"
}

从命令行:

$ npm run build

> temp@1.0.0 build
> ls

package.json
$

很酷。现在,如果我们要将-a选项传递给ls,我们可以做到,但只能在--之后。

所以这不起作用:

$ npm run build -a
> temp@1.0.0 build
> ls

package.json
$

但这可行:

$ npm run build -- -a

> temp@1.0.0 build
> ls "-a"

.       ..      package.json
$