转自:https://www.yuque.com/dukang-hfttn/mo27v1/flcggg
const path = require('path')
const resolve = dir => path.join(__dirname, dir)
console.log('=======开始编译=======')
// 在发送请求之前重写路径
// '/api': {
// target: 'http://api.xxxxx.com',
// ws: true,
// changOrigin: true,
// pathRewrite: {
// '^/api': ''
// }
// }
module.exports = {
// 基本路径
baseUrl: process.env.NODE_ENV === 'production' ? '/production-sub-path/' : '/',
// 它支持webPack-dev-server的所有选项
devServer: {
open: true, // 自动打开浏览器
host: 'vue.xxxxx.com', // 配置启动域名或IP
port: 80, // 端口号
https: false, // 是否开启HTTPS
hotOnly: false,
// 设置代理
proxy: {
'/api': {
target: 'http://api.xxxxx.com',
ws: true,
changOrigin: true
}
},
before: app => {}
},
// 构建输出目录
outputDir: 'dist',
// 静态资源目录 (js, css, img, fonts)
assetsDir: 'assets',
// 是否开启eslint保存检测,有效值:ture | false | 'error'
lintOnSave: true,
// 运行时版本是否需要编译
runtimeCompiler: true,
// 默认babel-loader忽略mode_modules,这里可增加例外的依赖包名
transpileDependencies: [],
/**
* 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
* 打包之后发现map文件过大,项目文件体积很大,设置为false就可以不输出map文件
* map文件的作用在于:项目打包后,代码都是经过压缩加密的,如果运行时报错,输出的错误信息无法准确得知是哪里的代码报错。
* 有了map就可以像未加密的代码一样,准确的输出是哪一行哪一列有错。
* */
productionSourceMap: true,
// webpack配置,值位对象时会合并配置,为方法时会改写配置
configureWebpack: config => {},
/**
* webpack链接API,用于生成和修改webapck配置
* 配置路径别名
* @Author 杜康
* @DateTime 2018-09-20T15:28:18+0800
* @copyright Copyright©杜康
* @version [version]
* @param {[type]} config [description]
* @return {[type]} [description]
*/
chainWebpack: config => {
config.resolve.alias
.set('@', resolve('src'))
.set('assets', resolve('src/assets'))
.set('router', resolve('src/router'))
.set('store', resolve('src/store'))
.set('components', resolve('src/components'))
.set('views', resolve('src/views'))
.set('utils', resolve('src/utils'))
.set('api', resolve('src/api'))
.set('styles', resolve('src/styles'))
.set('menus', resolve('src/menus'))
},
// 配置高于chainWebpack中关于css loader的配置
css: {
/**
* 是否开启支持‘foo.module.css’样式
* 建议关闭,开启后会报ElementUI组件找不到的问题
* @type {Boolean}
*/
modules: false,
/**
* 是否使用css分离插件
* ExtractTextPlugin,采用独立样式文件载入,
* 不采用<style>方式内联至html文件中
* @type {Boolean}
*/
extract: true,
// 是否在构建样式地图,false将提高构建速度
sourceMap: false,
// css预设器配置项
loaderOptions: {
css: {
localIdentName: '[name]',
camelCase: 'only'
},
stylus: {}
}
},
// 构建时开启多进程处理babel编译
parallel: require('os').cpus().length > 1,
// 第三方插件配置
pluginOptions: {},
// 单页插件相关配置 https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa
pwa: {}
}