关于如何做到这一点,我一直在撞墙。我一直在开发vue-cli应用程序,显然,在节点世界中,我们都相信存在一个开发,一个登台和一个生产环境。
我一直在尽力减少尽可能多的体力劳动,所以我不手动保持文件移动,更改配置等。
我总共有5个环境,但是我需要使用该系统清理3个开发环境,而且我实在无能为力,因此我需要一些指导。
- 第一开发环境,localhost:12345-我将变量放置在它关闭身份验证并指定url路径的位置。如果将它称为process.env.NODE_ENV的MyLocal,则可以使用env.mylocal的变量。
- 第二个开发环境,localhost:12345(是相同的)-我在所有身份验证都返回的地方放置了变量,并指定了相同的url路径。如果将它称为process.env.NODE_ENV的DevLocal,那么我可以使用env.devlocal的变量
- 第3个开发环境,dev.example.com / newAppLoc / web-我在所有验证返回的位置放置了变量,并指定了新的url路径。如果这被称为process.env.NODE_ENV的开发,那么我可以使用env.development的变量
第4和第5分别是演出和制作。
如果我可以选择将自己的环境名称创建为3个以上,则可以避免该问题。因为那时我要做的就是指定要使用的环境,然后运行构建脚本。然后在那一点上,我可以发布我的整个仓库,而不必担心要发送哪个env文件,因为它已经在构建中指定了。
但是由于我只能指定3个,因此我需要帮助来解决这个问题。我不得不担心我的文件被发送,担心一个文件的存在会覆盖另一个配置。我还必须担心我的文件是通过回购协议发送的,其他人可以提取这些文件并覆盖其项目设置。在我看来,整个计划似乎太过客气了,我对这种严格和过度思考的混乱感到非常悲观。但是,我很想知道我可以在3种以上的环境中使用哪种工作流。
此外,我无法覆盖“ development”,“ staging”,“ production”的值。有一些检查可以阻止您将值与其他值进行比较。意思是,在您的webpack.config.js或vue.config.js中,如果您的process.env.NODE_ENV是MyLocal,并且您尝试将其与“ MyLocal”进行比较,则它实际上将变为假。
这是我package.json中包含的脚本
"serve": "vue-cli-service serve","serve:mylocal": "vue-cli-service serve --mode MyLocal","build:mylocal": "vue-cli-service build --mode MyLocal","build:devlocal": vue-cli-service build --mode devlocal","build:dev": "vue-cli-service build --mode development","build:prod": "vue-cli-service build",
所以:
const isDevBuild = process.env.NODE_ENV === "MyLocal"; // false if process.env.NODE_ENV = MyLocal
const isDevBuild = process.env.NODE_ENV === "production"; // true if process.env.NODE_ENV = production
我在想:
- MyLocal将与.env.local 相同
- DevLocal将与.env.development.local
- 开发将与.env.development
但是问题是,您如何指定要使用哪个?它们仅基于存在的优先级,因此更难控制。