webpack配置问题

vue-cli开发环境以及生产环境配置

开发时候,开发环境接口和正式环境的接口是不一样的,开发环境是请求本地接口,正式环境请求服务器接口。

每次测试和打包的时候,都需要手动配置一下接口配置,切换开发环境接口名称,切来切去甚是麻烦。

苦思许久,找资料,发现webpack可以自动配置开发环境和生产环境的,具体操作如下。

要修改的文件目录结构

--- | config
    --- dev.env.js
    --- index.js
    --- prod.env.js

dev.env.js (开发环境配置)

NODE_ENV: '"development"',
API_URL: '"/api/a/"',  //注:api代表本地代理的名字, a代表通用接口重复(可以不写)名

prod.env.js (生产环境配置)

NODE_ENV: '"development"',
API_URL: '"/a/"',

index.js (基本配置 主要为了配置开发环境代理)

dev: {
    env: require('./dev.env'),
    port: process.env.PORT || 2222,
    autoOpenBrowser: true,
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
    proxyTable: {
        '/api': {
            target: 'http://10.1.1.1:3000', //要代理的本地地址
            changeOrigin: true,
            secure: false,
            pathRewrite: {
            '^/api': '' //代理名字
            }
        }
    },

这时候,就可以在通用js文件定义接口请求, 比如 utils.js

var utils = {
    ...,
    API: process.env.API_URL,  //process.env,代表当前的环境
    ...
}

export default utils

这时候就可以直接在 vue 文件,直接引入 utils.js ,然后发起接口请求,直接调用

axois.get('http://10.1.1.1:3000/api/a/xxx...', ...)

本地开发 npm run dev,实际接口访问的本地代理地址为, http://10.1.1.1:3000/api/a/xxx...

生产环境 npm run build, 实际接口访问地址为, /a/xxx...

针对样式或src引入alias路径配置

在使用 vue-cli 开发项目时候,webpack aliases 配置了一个 "@" 可以指向到 ‘src’目录

比如在<script>import a from '@/vue/a 就可以拿到 /scc/vue/a 的文件

但是在<style> 标签里引入 import b from '@/assets/scss/b 想拿到 /src/assets/scss/b 但是这时候就打印错误了。。。

ERROR in ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./src/App/index.vue
Module not found: Error: Cannot resolve 'file' or 'directory' ./assets/logo.png in /Users/Alex/Work/testing/quick/src/App
@ ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./src/App/index.vue 1:55-83

根据 github的issue html image src require not respecting webpack aliases? 尤大回答的问题,

**vue-html-loader and css-loader translates non-root URLs to relative paths. In order to treat it like a module path, prefix it with ~: **

<img class="logo" src="~assets/logo.png">

所以上面的问题改成 import b from '~@/assets/scss/b 就可以啦

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦