koa环境变量设置:nodejs设置开发环境与相关系统变量
Author:zhoulujun Date:
首先我们来看一下Node.js 中开发和生产的区别:https://dev.nodejs.cn/learn/nodejs-the-difference-between-development-and-production/
Node.js 假定它始终在开发环境中运行。 你可以通过设置 NODE_ENV=production 环境变量向 Node.js 发送你正在生产环境中运行的信号。
export NODE_ENV=production但最好将它放在你的 shell 配置文件中(例如 Bash shell 的 .bash_profile),否则设置在系统重启时不会保留。
但是在windows,就是在windows cmd 中设置环境变量
set NODE_ENV=production或者右键(此电脑) -> 属性(R) -> 高级系统设置 -> 环境变量(N)...
具体参看:Node环境变量 process.env 的那些事儿 https://segmentfault.com/a/1190000011683741
但是,我们我在本地开发与服务器开发,希望自动管理,省点事情,怎么弄。像 Vercel 和 Netlify(以及其他)这样的现代部署平台,它们提供了一些接口让我们能够添加环境变量。但是还是自动代码层就解决这些问题,岂不是更好。
https://www.npmjs.com/package/cross-env 是个好东西。
当然还有:
https://github.com/motdotla/dotenv
https://github.com/direnv/direnv
cross-env:这是一个Node.js包,用于设置环境变量,使其在Windows,Linux和MacOS上都能正常工作。它的主要目标是跨平台的一致性。例如,Windows和Linux在设置环境变量的语法上有所不同,cross-env可以消除这种差异。
direnv:这是一个扩展你的shell的工具,它可以根据当前目录加载和卸载环境变量。当你进入一个目录时,它会自动加载该目录下的.envrc文件中定义的环境变量,当你离开目录时,这些环境变量会被卸载。这对于需要在不同项目之间切换,且每个项目都有自己的环境变量的情况非常有用。
dotenv:这也是一个Node.js包,用于从.env文件中加载环境变量。这个文件通常不会被提交到版本控制系统,因此可以用来存储敏感信息,如数据库密码或API密钥。dotenv的目标是使这些环境变量在开发环境中易于访问。
总的来说,这三个工具都可以帮助你管理环境变量,但它们的使用场景和目标各有不同。你可以根据你的具体需求选择使用哪一个。
个人更加偏好:https://www.npmjs.com/package/cross-env,小项目只要这个就够了
cross-env使用
{ "scripts": { "build": "cross-env NODE_ENV=production webpack --config build/webpack.config.js" } }
使用.env文件添加变量
如果需要配置的环境变量太多,全部设置在scripts命令中既不美观也不容易维护,此时将环境变量配置在.env文件中,然后使用dotenv插件来加载.env配置文件。
env变量相关,可以参考:https://cli.vuejs.org/zh/guide/mode-and-env.html#模式
cross-env cross-env二者结合起来用就是这种
require('dotenv').config({ path: path.resolve(__dirname, './env/.env.' + process.env.NODE_ENV) })
其是可以:cross-env version=beta customEnv=./.bk.beta.env
具体项目配置如下:
"scripts": { "test": "node ./packages/cli/bin/index.js chart:create test-chart", "dev": "bk-cli-service-webpack dev", "dev:beta": "cross-env version=beta customEnv=./.bk.beta.env bk-cli-service-webpack dev", "dev:sdk": "cross-env version=sdk-preview bk-cli-service-webpack dev", "build": "bk-cli-service-webpack build", "build:analyzer": "cross-env version=analyzer bk-cli-service-webpack build", "lint": "eslint --fix src", "lint:style": "stylelint --fix ./**/*.{scss,css,vue}", "prepare": "husky install" }
参考文章:
Node.js 读取环境变量 https://juejin.cn/post/7136128796054257678
npm常用模块之cross-env使用 https://www.cnblogs.com/jiaoshou/p/12187504.html
转载本站文章《koa环境变量设置:nodejs设置开发环境与相关系统变量》,
请注明出处:https://www.zhoulujun.cn/html/webfront/server/koa/8969.html