npm package.json 脚本的参数化

问题描述 投票:0回答:1

npm7 中 npm6 .npmrc $npm_config_* vars 的替代方案是什么(配置 var 已弃用)。

脚本中的使用示例:

"package": "sam package --profile $npm_config_awsProfile --template-file template.yaml --s3-bucket $npm_config_s3BucketName --output-template-file template-out.yaml",

.npmrc 示例

awsProfile = "au"
s3BucketName = "production-tmp-bucket-ap-southeast-2"
javascript node.js serverless npm-scripts
1个回答
0
投票

### 选项 1: 不要使用 Npm 环境,仅将其用作 JavaScript 的垫脚石。通过 Npm 将您需要的任何参数传递到您的 Javascript。

例如 在 package.json 脚本部分:

 "scripts": {
    "build": "cross-var node env/build.js"
 }

定义在节点下运行 javascript 的构建脚本 - 可选使用 cross-var 包来帮助它在 Windows 上工作 (https://www.npmjs.com/package/cross-var

在命令行上调用:

npm run build -- <YourFirstArgHere>

注意--之后的空格

在您的 javascript 中访问:

let firstParm = process.argv[2]

### 选项 2: 使用标准环境变量捕获上面提到的“启动状态”(6月21日)。

(注意:我还没有尝试过这种技术,并且不确定环境变量值是否会在 preScript - Script 和 postScript npm 执行之间持续存在 - 假设人们知道这一点:https://docs.npmjs.com/cli/ v7/using-npm/scripts/)

有关设置这些环境变量的详细信息: 如何从package.json中设置环境变量?

特别感兴趣的是评论14:

如果你想在脚本本身中使用环境变量,你需要在前面加上 $,例如,如果你运行 mode=prod npm run print 并且你的 package.json 中有一个名为 print "print": "echoenvironment ' $mode'” 它将打印环境 'prod' – Jonathan Morales Vélez

© www.soinside.com 2019 - 2024. All rights reserved.