Node.js 利用环境变量推动回购

Node.js 利用环境变量推动回购,node.js,git,Node.js,Git,在我的机器上的repo中,我有一个名为.env的文件。这包含了我在项目中进行测试的环境变量 但是,当我推到Github时,我不希望包含此文件。所以我把它添加到.gitignore。我有另一个名为.env.sample的文件,其中包含供用户设置的空变量 使用npm install安装应用程序时,我有一个脚本,可以将它从.env.sample移动到.env 这给我带来了一个问题,因为当我测试并运行安装时,它会覆盖我原来的.env。这是正常的行为,但我忍不住认为有更好的方法来阻止这种情况的发生 这很痛

在我的机器上的repo中,我有一个名为
.env
的文件。这包含了我在项目中进行测试的环境变量

但是,当我推到Github时,我不希望包含此文件。所以我把它添加到
.gitignore
。我有另一个名为
.env.sample
的文件,其中包含供用户设置的空变量

使用
npm install
安装应用程序时,我有一个脚本,可以将它从
.env.sample
移动到
.env

这给我带来了一个问题,因为当我测试并运行安装时,它会覆盖我原来的
.env
。这是正常的行为,但我忍不住认为有更好的方法来阻止这种情况的发生

这很痛苦,因为就在我推之前,我必须将
.env
重命名为
.env.sample
,并清除开发变量

你知道怎么做吗?这样我就不用在推之前手动重命名文件了

以下是
package.json
中的安装脚本:

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack --config webpack.config.babel.js",
    "start": "npm run build && electron .",
    "postinstall": "bash postinstall.sh && mv .env.sample .env",
    "add-cors": "add-cors-to-couchdb"
  },

每次运行install以构建某些软件时,都会运行
postinstall.sh
。我可以把
mv
放在里面,我可能会这么做。

最简单的解决方案是不覆盖文件:

"postinstall": "bash postinstall.sh && cp -n .env.sample .env",
(请注意,我建议使用
cp
而不是
mv
,这样您就不会删除默认文件)


另一个(常见的)方法是简单地要求用户这样做。与他必须执行的所有配置相比,这是一项轻松的任务。

“我有一个脚本,可以将此从.env.sample移动到.env”。这个脚本应该只运行一次,或者它应该检测文件的存在并比较日期。文档中经常要求用户手动复制和编辑配置文件()。为了回答这个问题,我觉得我们应该看看安装脚本。@DenysSéguret补充道