如何解决npm package.json 脚本的参数化
npm7 中 npm6 .npmrc $npm_config_* vars 的替代方法是什么(不推荐使用配置变量)。 脚本中的用法示例:
"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"
解决方法
### 选项 1: 不要使用 Npm 环境,仅将其用作 JavaScript 的垫脚石。通过 Npm 将您需要的任何参数传递给您的 Javascript。
例如 在您的 package.json 脚本部分:
"scripts": {
"build": "cross-var node env/build.js"
}
定义为在 node 下运行 javascript 的构建脚本 - 可选使用 cross-var 包来帮助它在 Windows 上工作 (https://www.npmjs.com/package/cross-var)
在命令行上调用:
npm run build -- <YourFirstArgHere>
注意 -- 后面的空格
要在您的 javascript 中访问:
let firstParm = process.argv[2]
### 选项 2: 使用标准环境变量来捕获上面提到的“启动状态”(Jun21)。
(注意:我还没有尝试过这种技术,并且不确定环境变量值是否会在 preScript - Script 和 postScript npm 执行之间保持不变 - 假设人们知道这一点:https://docs.npmjs.com/cli/v7/using-npm/scripts/)
在此处设置这些环境变量的详细信息: How to set environment variables from within package.json?
特别感兴趣的是评论 14:
如果你想在脚本内部使用环境变量,你需要在前面加上 $,例如,如果你运行 mode=prod npm run print 并且你的 package.json 中有一个名为 print "print": "echo环境 '$mode'" 它将打印环境 'prod' – Jonathan Morales Vélez
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。