美文网首页
vuecli通过命令行配置打包参数

vuecli通过命令行配置打包参数

作者: leo_zhu | 来源:发表于2019-05-13 11:07 被阅读0次

    一,命令

    npm run build -环境 -域名 -打包文件夹 -平台

    npm run serve -prod -http://xx.com -dist -0

    npm run build -prod -http://xx.com -dist -0

    二,参数说明:

    1,环境,测试 uat 跟 正式 prod,必填:如果不指定需要填写 0

    2,域名,需要打包或者运行的命令,必填:如果不指定需要填写 0 默认取config配置域名

    3,打包文件夹,必填:如果不指定需要填写 0 默认是dist

    4,平台,可选,需要打包打包的平台,一套代码不输给不同用户,涉及到的logo,favicon.ico不一致,需要做专门配置

    参数可自行定义,

    三,原理

    通过获取命令行参数,将命令行参数解析成对应字段内容,通过webpack传入到页面,供网络请求等使用。

    四,代码说明

    在项目根目录新建config 文件夹

    添加environment.js跟index.js文件

    environment.js 文件内容 -- 解析命令行参数

    const configArgv = JSON.parse(process.env.npm_config_argv);

    const original = configArgv.original.slice(1);

    const stage = original[1] ? original[1].replace(/-/g, "") : "uat";

    const requestHttp = original[2] ? original[2].replace(/-/g, "") : "0";

    const distName = original[3] ? original[3].replace(/-/g, "") : "0";

    const platform = original[4] ? original[4].replace(/-/g, "") : "0";

    module.exports = {

        stage,

        requestHttp,

        platform,

        distName

    };

    index.js 文件内容 -- 配置各环境默认域名

    const config = {

        uat: { // 测试环境网络请求地址

            "0": "http://xx.com"

        },

        prod: { // 正式环境网络请求地址

            "0": "http://xx.com"

        }

    }

    module.exports = {

        config

    };

    vue.config.js配置

    const environment = require("./config/environment"); // 引入获取命令行参数js

    const baseconfig = require("./config").config;

    if (environment.requestHttp == '0') {

        environment.requestHttp = process.env.NODE_ENV === 'production' ? baseconfig.prod[environment.platform] : baseconfig.uat[environment.platform];

    }

    module.exports = {

        ...

         chainWebpack: config => {

                config.plugin("define").tap(args => {        // 讲参数传入项目中,可在main.js或者项目中的config  通过process.env 获取

                    args[0]["process.env"].STAGE = JSON.stringify(environment.stage);

                    args[0]["process.env"].URL = JSON.stringify(environment.requestHttp)

                    args[0]["process.env"].PLATFORM = JSON.stringify(environment.platform);

                    return args;

                });

                ...

         } ,

        devServer: {

            ...

            proxy: environment.requestHttp || null, // 配置代理

            ...

          },

        ...

    }

    五,使用

    在main.js或者配置域名的地方使用,

    console.log(process.env);

    相关文章

      网友评论

          本文标题:vuecli通过命令行配置打包参数

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