这是一个名为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中捕获它。
答案 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
$