【问题标题】:npm run points to different .env filenpm run 指向不同的 .env 文件
【发布时间】:2019-11-18 11:27:37
【问题描述】:

我们正在处理nodeJs/ExpressJs,我们为开发和生产配置了多个.env 文件,并将其指向package.json 以用于不同的执行过程,我们在脚本中存在命名对话问题。

每当我们运行npm run prod 时,它都需要preprod 配置。可能是什么问题?

更新:我们发现脚本键的后缀在下一个脚本中是相同的,在将preprod 更新/重命名为preProd 之后,两者都运行良好。但为什么呢?

例如:

  "scripts": {
    "dev": "clear; env-cmd -f ./config/hostedDev.env nodemon --exec babel-node index.js",
    "prod": "clear; env-cmd -f ./config/prod.env nodemon --exec babel-node index.js",
    "preprod": "clear; env-cmd -f ./config/preprod.env nodemon --exec babel-node index.js"
  },

【问题讨论】:

  • 您能否创建一个更简单的可重现示例。就像只是“回声”(而不是“nodemon”)只是为了确认你所说的确实发生了。
  • 使用different .env files in an anti-pattern。不同的环境(dev/prod)应该有自己的“.env”文件(相同的文件名)。
  • @laggingreflex,确实如此,我尝试使用echo。显然它与“preprod”有关,脚本使用“preProd”甚至“prrprod”正确执行(只需一个字符更改)。
  • 另外要注意的是,当我们运行npm run prod 时它会同时运行两个脚本,即它分别执行 preprod 和 prod。
  • @151291 如果您认为答案有用,请批准/投票! :)

标签: node.js npm terminal package.json


【解决方案1】:

显然问题出在“pre”这个词上。
如果您注意到它会同时运行 preprod 和 prod 命令(先运行 preprod)。
如果您将脚本名称更改为“postprod”,则 postprod 脚本将稍后运行。

所以,我猜 npm 使用 'pre' as 在 'prod' 脚本之前运行,然后运行 ​​'prod' 脚本本身。

【讨论】:

    猜你喜欢
    • 2021-12-08
    • 2022-11-08
    • 1970-01-01
    • 2021-12-23
    • 2021-07-01
    • 1970-01-01
    • 2021-10-22
    • 2019-08-20
    • 1970-01-01
    相关资源
    最近更新 更多