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

Sending a parameter from node file to package.json script command

这是一个名为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"

这是我的元素-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 中捕获它。

But then I dont know how to catch it in 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
$