300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 前端开发中使用build.js完成区分环境的打包配置

前端开发中使用build.js完成区分环境的打包配置

时间:2024-02-03 06:27:22

相关推荐

前端开发中使用build.js完成区分环境的打包配置

一,利用process新建环境变量

对应的代码文件:

.env

# 公共环境配置# VUE_APP_VERSION默认值,都会执行的文件VUE_APP_VERSION = "---"

.env.development

# 开发环境配置ENV = 'development'NODE_ENV = 'development'VUE_APP_VERSION = "---"VUE_APP_baseUrl = 'http://localhost:3000/dcxt/shop/'

.env.testing

# 测试环境配置ENV = 'testing'NODE_ENV = 'testing'VUE_APP_baseUrl = '测试环境的接口地址'

.env.pre

# 预发布环境配置ENV = 'pre'NODE_ENV = 'pre'VUE_APP_baseUrl = '预发布环境的接口地址:5001'

.env.production

# 生产环境配置ENV = 'production'NODE_ENV = 'production'VUE_APP_baseUrl = '生产环境的接口地址'

二,封装axios的时候,需要使用这个base_Url

为了打包运行后看当前页面的访问路径,我在main.js中又写了这句:

console.log("当前请求的基本地址", process.env.VUE_APP_baseUrl);

三,当开发时,npm run serve

这时候,肯定执行的是.env.development,所以控制台打印的是:

到这里过,开发过程中是用不上build.js的,只有需要打包部署的时候才会用得上。

四,创建build.js文件

需要先安装两个npm包:

npm i cross-env

npm i shelljs

然后build.js的具体代码:

const shell = require("shelljs"); //执行打包代码const inquirer = require("inquirer"); //问询者const chalk = require("chalk"); //更改字体颜色const pkg = require("../package.json"); //获取版本信息const fs = require("fs"); //文件操作模块const platform = new Map([["测试demo通用版", "HDD"]]);const env = new Map([["测试环境", "testing"],["准生产环境", "pre"],["生产环境", "production"]]);const build = async () => {const version = pkg.version;const res = await inquirer.prompt([{type: "list",name: "platform",message: "请选择你要部署的版本?",choices: ["测试demo通用版"]},{type: "list",name: "env",message: "请选择你要部署的环境?",choices: ["生产环境", "准生产环境", "测试环境"]}]);//这个转化出来时,键值对的键是platform,值是选择的内容console.log(chalk.green(`您要打包的是 ******* ${res.platform}(${version})【${res.env}】*******`));//二次确认const res2 = await inquirer.prompt([{type: "confirm",name: "secondCheck",message: "确定以上信息无误?",default: true}]);if (!res2.secondCheck) {return;}const envName = env.get(res.env);const platName = platform.get(res.platform);console.log(`cross-env VUE_APP_PlATFORM=${platName} BABEL_ENV=${envName}VUE_APP_VERSION=${version} ./node_modules/.bin/vue-cli-servicebuild --mode=${envName}`);// exec括号内不能换行,不然环境变量会读取不到,在这里又在process中新建了这些变量await shell.exec(`cross-env BABEL_ENV=${envName} VUE_APP_VERSION=${version} VUE_APP_PlATFORM=${platName} ./node_modules/.bin/vue-cli-service build --mode=${envName}`);const projectName = pkg.name;const outerDir = `dist/${projectName}_${platName}_${envName}`;console.log(chalk.green(`编译完成,请发布${outerDir}文件夹!`));};build();

五,对应的vue.oconfig.js中的配置

const pkg = require("./package.json");

publicPath: "", //项目部署的地址(前面是www.服务器.com)拼接这里的地址,也就是说静态资源从这里找outputDir: process.env.NODE_ENV==="production"?`dist/${pkg.name}_${process.env.VUE_APP_PlATFORM}_${process.env.NODE_ENV}`:`dist/${pkg.name}_${process.env.VUE_APP_PlATFORM}`, //build打包之后的文件夹名称assetsDir: "./", //打包之后的静态资源的相对于outputDir的位置

六,在package.json中的配置

"build": "node script/build.js",

这样,一但npm run build,就会执行build.js文件。

从而达到这样的效果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。