• home > webfront > server > koa >

    koa环境变量设置:nodejs设置开发环境与相关系统变量

    Author:zhoulujun Date:

    Node js 中开发和生产可以通过export NODE_ENV=production,但是怎么在成熟项目的系统管理版本与环境变量呢?

    首先我们来看一下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