详解vue.js根据不同环境(正式、测试)打包到不同目录

要根据不同环境(正式、测试)打包到不同目录,我们可以使用webpack进行配置。

首先,在项目根目录下创建一个config文件夹,里面创建三个文件:dev.env.jsprod.env.jsindex.js

dev.env.js文件内容如下:

module.exports = {
    NODE_ENV: '"development"',
    API_HOST: '"http://localhost:8080"' //定义测试环境的API地址
}

prod.env.js文件内容如下:

module.exports = {
  NODE_ENV: '"production"',
  API_HOST: '"http://www.example.com"' //定义正式环境的API地址
}

index.js文件内容如下:

let env = process.env.NODE_ENV === 'production' ? require('./prod.env') : require('./dev.env')
module.exports = Object.assign({
    API_HOST: env.API_HOST, //通过引入不同环境的env文件,获取API地址
}, env)

接着,在webpack.prod.conf.js中引用我们刚刚创建的index.js文件:

const webpack = require('webpack')
const env = require('../config/index')

module.exports = {
    //...
    //根据环境的不同配置不同的打包目录
    output: {
        path: env.NODE_ENV === 'production' ? config.build.assetsRoot : config.dev.assetsRoot,
        filename: '[name].js',
        publicPath: env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath
    },
    plugins: [
        new webpack.DefinePlugin({
            'process.env': env
        }),
        //...
    ]
    //...
}

最后,在代码中使用process.env.API_HOST获取API地址即可,并且打包时使用npm run devnpm run build指定环境。比如,我们可以在package.json文件中添加以下配置:

"scripts": {
    "dev": "cross-env NODE_ENV=development webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
    "build:test": "cross-env NODE_ENV=development webpack --progress --hide-modules --config build/webpack.prod.conf.js",
    "build": "cross-env NODE_ENV=production webpack --progress --hide-modules --config build/webpack.prod.conf.js",
    //...
 }

这样,当我们执行npm run build:test时,代码将会按照测试环境的配置打包到指定目录中;当执行npm run build时,则会按照正式环境的配置打包到相应目录中。

示例:
例如,在代码中需要获取API地址,我们可以这样写:

const API_HOST = process.env.API_HOST

可以在不同环境中输出不同的结果:

在测试环境中,API_HOST的值是http://localhost:8080
在正式环境中,API_HOST的值是http://www.example.com

这样就能在不同环境中正确获取API地址,实现不同环境的打包了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解vue.js根据不同环境(正式、测试)打包到不同目录 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置

    为nuxt项目写一个面包屑cli工具是一个比较有用的开发工具,它可以自动帮助开发者根据路由配置文件自动生成对应的页面及面包屑配置文件,并且可以简化开发的流程。下面是这个工具的实现过程: 步骤一:创建nuxt插件 我们可以通过在nuxt.config.js中配置plugins选项来创建一个nuxt插件: // nuxt.config.js plugins: […

    Vue 2023年5月28日
    00
  • vue中 数字相加为字串转化为数值的例子

    在 Vue 中,有时候我们需要将一个字符串类型的数字转换为数字类型,这时候我们可以使用 + 运算符,将字符串类型的数字转换为数字类型。下面是一个将字符串类型的数字相加运算后,将结果转换为数字类型的例子: <template> <div> <input type="text" v-model="num…

    Vue 2023年5月27日
    00
  • vue+element-ui+axios多文件上传的实现并显示整体进度

    下面我会详细讲解“vue+element-ui+axios多文件上传的实现并显示整体进度”的完整攻略,具体分为以下几个步骤: 第一步:安装所需依赖 在使用这种方式进行文件上传时,我们需要用到vue、element-ui和axios这几个主要的依赖。因此,首先需要在项目中安装它们: npm install vue element-ui axios –save…

    Vue 2023年5月28日
    00
  • vue.js中created方法作用

    Vue.js 中的 created() 方法是 Vue 实例生命周期钩子函数之一,用于在 Vue 实例创建并构建完毕后被触发执行。接下来,我将详细介绍 created() 方法的作用和用法。 created() 方法的作用 在 Vue.js 应用中使用 created() 方法通常有以下一些作用: 初始化一些数据,包括组件中的变量,是最常用的 created…

    Vue 2023年5月27日
    00
  • Vue项目中使用jsonp抓取跨域数据的方法

    使用jsonp抓取跨域数据是前端开发中常用的一种方法,而在Vue项目中使用jsonp抓取跨域数据则需要注意一些细节。下面是Vue项目中使用jsonp抓取跨域数据的完整攻略: 1.概述 前端的同学们都知道,由于浏览器的同源策略限制,导致 Ajax 请求不能跨域。而 JSONP 是一种跨域请求的解决方案,可以通过 script 标签来实现跨域请求。Vue.js …

    Vue 2023年5月28日
    00
  • Vue3的7种种组件通信详情

    下面将详细讲解Vue3的7种组件通信方式的完整攻略。 1. 父子组件通信 父子组件通信是指从父组件向子组件传递数据或者事件。在Vue3中我们可以使用props属性向子组件传递变量,或使用$emit方法接收子组件的事件通知。 以下是一个简单的示例: <!– 父组件 –> <template> <div> <!– …

    Vue 2023年5月28日
    00
  • Vue导入excel文件的两种方式(form表单和el-upload)

    如果要在Vue中实现导入Excel文件的功能,通常有两种方式:通过form表单提交和使用el-upload组件。下面对这两种方式进行详细介绍。 使用form表单提交 使用form表单提交的方式相对简单,需要在页面中添加一个input元素,并且指定type为“file”。在用户进行选择文件上传操作时,会触发input元素的change事件回调函数,然后在回调函…

    Vue 2023年5月28日
    00
  • Vue 组件组织结构及组件注册详情

    Vue 组件是 Vue.js 中非常重要的一部分,它能够帮助我们将一个大型的项目模块化分解,使得代码更易于维护和扩展。本篇攻略将详细讲解Vue 组件的组织结构和组件注册的方法,希望能够帮助你更好地理解 Vue 组件。 组件组织结构 Vue 组件的组织结构一般如下图所示: ├── App.vue ├── types.d.ts ├── components │ …

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部