【问题标题】:How to pass env variable to rollup.config.js via npm cli?如何通过 npm cli 将 env 变量传递给 rollup.config.js?
【发布时间】:2020-02-08 18:00:06
【问题描述】:

我有一个脚本文件夹,其中单独的文件夹中有许多单独的脚本,我想通过将脚本名称作为参数传递来分别构建每个脚本。

我已经在 package.json 中设置汇总,例如 "watch": "rollup --watch --config rollup.config.js"

我想从 cli 传递参数,例如 npm run watch script_name=abc_script

可以通过 process.argv 在 rollup.config.js 中访问

但出现此错误

rollup v1.23.1 bundles abc_script → dist/bundle.js [!] Error: Could not resolve entry module

没有 npm cli 参数一切似乎都很好。

Rollup 有 --environment 变量,但使用 npm run watch -- --environment script:script_name 有点长

有什么办法可以缩短吗?

提前致谢。

【问题讨论】:

    标签: javascript node.js rollupjs


    【解决方案1】:

    虽然以下答案没有直接解决 OP 的需求(通过命令行传递变量),但它确实解决了他们对简洁的渴望(“--环境变量,但使用起来有点长”)

    在项目的根目录中创建一个.env 文件,并在每一行填写VAR_NAME=value

    NODE_ENV=development
    SECRET_KEY=ahuehueheueheueheu
    

    不要提交该文件。而是将.env 添加到您的.gitignore

    接下来安装dotenv节点包

    npm i -D dotenv
    
    yarn add -D dotenv
    

    最后把它放在你的rollup.config.js的最顶部

    import dotenv from 'dotenv';
    dotenv.config();
    

    【讨论】:

      【解决方案2】:

      您可以像这样传递将被process.argv 捕获的参数

      npm run watch -- some_arg
      

      在您的程序中,您将在 process.argv 中获得一个数组,其中最后一个值将是传递给程序的值。

      【讨论】:

        【解决方案3】:

        或者,您可以将环境变量传递给命令 - 它比命令行参数更容易处理。

        Cli 用法:

        minify=on ./node_modules/.bin/rollup -c

        package.json 脚本:

        {
          ...
          scripts: {
            ...
            "build-production": "minify=on rollup -c"
          }
        }
        

        rollup.config.js

        const enableMinification = process.env.minify === 'on'
        

        【讨论】:

          【解决方案4】:

          npm run watch -- --environment script=script_name 为我工作,所以我可以通过汇总配置中的 process.env 访问 script_name

          【讨论】:

            猜你喜欢
            • 2022-12-24
            • 1970-01-01
            • 2020-10-29
            • 1970-01-01
            • 2021-08-05
            • 1970-01-01
            • 2018-02-23
            • 2021-11-11
            • 2023-03-09
            相关资源
            最近更新 更多