【问题标题】:Paramatrization of npm package.json scriptsnpm package.json 脚本的参数化
【发布时间】:2021-10-01 07:14:52
【问题描述】:

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"

【问题讨论】:

    标签: javascript node.js serverless npm-scripts


    【解决方案1】:

    ### 选项 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: 使用标准环境变量来捕获上面提到的“开始状态”(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 environment '$mode'" 它将打印 environment 'prod' – Jonathan Morales Vélez

    【讨论】:

      猜你喜欢
      • 2018-09-04
      • 2016-05-15
      • 2020-05-09
      • 2014-06-26
      • 2020-05-16
      • 2020-07-07
      • 1970-01-01
      相关资源
      最近更新 更多