美文网首页
vue-cli2分环境本地运行和打包

vue-cli2分环境本地运行和打包

作者: suesoft | 来源:发表于2020-03-18 13:49 被阅读0次

    因为各种原因,开发的项目复用性高,请求连接偏多,总是需要不停的切换请求地址来实现本地与线上的调试及打包,比较麻烦且容易出错,于是对项目的打包运行实行了配置,实现不同环境配置不同打包和运行命令,整理归纳。

    最终实现的配置命令:
    npm run build 线上环境打包
    npm run test 测试环境打包
    npm run dev 测试环境本地运行
    npm run online 线上环境本地运行

    页面相关地址调用:
    const shareURL = process.env.shareURL
    const baseURL = process.env.baseURL
    const BASE_URL = process.env.BASE_URL
    const imgUrl = process.env.imgUrl

    可以根据process.env里不同参数来进行正式环境与测试环境的一些区分,例如:内嵌h5为了方便调试一般测试环境打包需要打开vconsole,但是正式环境打包是需要关掉的,所以可以做相关判断来达到测试环境显示正式环境屏蔽,如下:

    import VConsole from 'vconsole'
    ...
    // 根据需要不同环境显示相关代码
    switch(process.env.NODE_ENV) {
      case 'production':
        // console不打印
        // console.log = function() {}
        ...
        break
      default:
        // 显示vconsole
        new VConsole()
        ...
        break
    
    }
    

    以下为配置相关步骤:

    (一)、分环境打包

    npm run test
    npm run build

    1、安装cross-env
    npm install cross-env --save
    
    2、config目录下新建test.env.js文件,修改prod.env.js、index.js文件

    test.env.js 文件

    module.exports = {
        NODE_ENV: '"test"',
        ENV_CONFIG: '"test"',
        // 测试环境请求地址
        shareURL: '"https://cs.xxxa.com/public/share"', 
        baseURL: '"https://cs.xxxb.com/index.php"',
        BASE_URL: '"https://cs.xxxc.com"',
        imgUrl: '"https://cs.xxxd.com"',
    }
    

    prod.env.js 文件

    'use strict'
    module.exports = {
      NODE_ENV: '"production"',
      ENV_CONFIG: '"prod"',
      // 线上环境请求地址
      shareURL: '"https://on.xxxa.com/public/share"', 
      baseURL: '"https://on.xxxb.com/index.php"',
      BASE_URL: '"https://on.xxxc.com"',
      imgUrl: '"https://on.xxxd.com"',
    }
    

    index.js 文件

    build: {
        prodEnv: require('./prod.env'),
        testEnv: require('./test.env'),
        ...
    }
    
    3、build目录下修改webpack.prod.config.js与build.js

    webpack.prod.config.js

    // const env = require('../config/prod.env')
    const env = config.build[process.env.env_config+'Env']
    

    build.js

    <!--const spinner = ora('building for production...')-->
    const spinner = ora('building for ' + process.env.NODE_ENV + ' of ' + process.env.env_config+ ' mode...' )
    spinner.start()
    
    4、修改package.json
    "scripts": {
        "build": "cross-env NODE_ENV=production env_config=prod node build/build.js",
        "test": "cross-env NODE_ENV=test env_config=test node build/build.js"
      },
    

    (二)、分环境运行

    npm run dev
    npm run online

    1、config目录下新建online.env.js文件,更改dev.env.js、index.js文件

    dev.env.js

    'use strict'
    const merge = require('webpack-merge')
    const testEnv = require('./test.env') // 直接引用测试环境打包链接配置
    
    module.exports = merge(testEnv, {
      NODE_ENV: '"development"',
      ENV_CONFIG: '"dev"'
    })
    

    online.env.js

    'use strict'
    const merge = require('webpack-merge')
    const prodEnv = require('./prod.env') //引用正式环境打包链接配置
    
    module.exports = merge(prodEnv, {
      NODE_ENV: '"online"',
      ENV_CONFIG: '"online"'
    })
    

    index.js

    dev: {
        devEnv: require('./dev.env'),
        onlineEnv: require('./online.env')
        ...
    }
    
    2、build目录下修改webpack.dev.config.js

    webpack.dev.config.js

    let env = config.dev[process.env.ENV_CONFIG + 'Env']
    ...
    new webpack.DefinePlugin({
      // 'process.env': require('../config/dev.env')
      'process.env': env
    })
    
    3、修改package.json
    "scripts": {
        "dev": "cross-env NODE_ENV=development env_config=dev webpack-dev-server --inline --progress --config build/webpack.dev.conf.js --host 0.0.0.0",
        "online": "cross-env NODE_ENV=online env_config=online webpack-dev-server --inline --progress --config build/webpack.dev.conf.js --host 0.0.0.0"
        ...
      },
    

    相关文章

      网友评论

          本文标题:vue-cli2分环境本地运行和打包

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