美文网首页vueWEB前端开发技术杂谈
NodeJs/Vue项目中对process.env的使用

NodeJs/Vue项目中对process.env的使用

作者: imxiaochao | 来源:发表于2018-09-26 09:56 被阅读0次

    NODE_ENV获取环境变量

    let env = app.get('env')
    let env = process.env.NODE_ENV
    //默认 NODE_ENV 为环境变量名称
    //可自行在 process.env 对象下定义需要使用的变量,在项目中可以根据
    //不同的 env 值设置 defaultUrl 或者其他值
    

    在webpack 打包的项目/Node JS项目中,可以安装 cross-env(跨Win/Linux平台设置 process.env值) 插件,在 package.json 文件中
    设置不同的运行脚本,比如:

    script:{
        "start": "node build/dev-server.js",
        "buildStag": "cross-env cross-env NODE_ENV=stag  node build/dev-server.js",
        "buildProd": "cross-env cross-env NODE_ENV=production  node build/dev-server.js",
    }
    //根据上述脚本即可设置不同的 NODE_ENV 值,在文件中设置值或者加载不同的设置文件,以上配置在NODE项目中可正常运行
    

    Vue项目中使用

    在使用Vue Cli构建的项目中,
    需要将process.env 设置其他变量名进行使用,如:BUILD_ENV
    在 package.json 的 script 字段中作如下配置:

      "scripts": {
        "start": "cross-env BUILD_ENV=dev node build/dev-server.js",
        "dev": "cross-env BUILD_ENV=dev  node build/dev-server.js",
        "build": "cross-env BUILD_ENV=dev node build/build.js",
        "buildDev": "cross-env BUILD_ENV=dev  node build/build.js",
        "buildStag": "cross-env BUILD_ENV=stag  node build/build.js",
        "buildProd": "cross-env BUILD_ENV=prod  node build/build.js",
        "unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run",
        "e2e": "node test/e2e/runner.js",
        "test": "npm run unit && npm run e2e",
        "lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs"
      },
    

    由于搭配webpack重新设置了 process.env 的值,需要在
    webpack.dev.conf.js 及 webpack.prod.conf.js 文件中:

    webpack.dev.conf.js
    new webpack.DefinePlugin({
        'process.env': config.dev.env,
        'process.env.BUILD_ENV': JSON.stringify(process.env.BUILD_ENV)//增加此行
    })
    
    webpack.prod.conf.js
    new webpack.DefinePlugin({
        'process.env': env,
        'process.env.BUILD_ENV': JSON.stringify(process.env.BUILD_ENV)
    })
    

    即在该插件设置并暴露出 process.env 对象后,再增加
    process.env.BUILD_ENV 字段并进行赋值

    此时,可在前端JS文件中通过 process.env.BUILD_ENV 获得 package.json中的script获得对应值,进行其他操作,比如,引入不同环境的配置文件,如:
    在config文件夹中增加 buildConfig 文件夹,其中新建以下3个文件:
    dev.config.js stag.config.js prod.config.js,
    在每个文件中采用module.exports的方式导出变量,如:

    module.exports = {
        BASE_URL: 'https://dev-api.greigreat.com',
        BASE_STATIC_URL:'https://static1.greigreat.com/'
    }
    

    在其他文件中使用

    //引入环境配置文件
    //process.env.BUILD_ENV 为 webpack中的DefinePlugin暴露出的环境变量
    const buildConfig = require('./buildConfig/' + process.env.BUILD_ENV + '.config')
    export default {
        baseUrl: buildConfig.BASE_URL,
        baseStaticUrl: buildConfig.BASE_STATIC_URL
    }
    

    则可以以对象的形式获取 buildConfig并使用

    相关文章

      网友评论

        本文标题:NodeJs/Vue项目中对process.env的使用

        本文链接:https://www.haomeiwen.com/subject/vduloftx.html