将参数从节点文件发送到 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
$
这是一个名为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
$