// 所有配置请参考 https://cli.vuejs.org/zh/config/
module.exports = {
/**
* publicPath
* hash 模式下可使用
* publicPath: process.env.NODE_ENV === 'development' ? '/' : './',
* 部署应用包时的基本 URL。用法和 webpack 本身的 output.publicPath 一致
* 例子:http://localhost:8080/bdsp-page/#/login
*/
publicPath: '/bdsp-page',
// 打包输出后的文件夹
outputDir: 'dist',
// 静态资源存放的目录,相对于 outputDir 指定的文件夹
assetsDir: 'static',
// 指定生成的 index.html 的输出路径 (相对于 outputDir)。也可以是一个绝对路径。
indexPath: './',
/*
// 在 multi-page 模式下构建应用。每个“page”应该有一个对应的 JavaScript 入口文件。
// 其值应该是一个对象,对象的 key 是入口的名字,value 是:
// 1、一个指定了 entry, template, filename, title 和 chunks 的对象 (除了 entry 之外都是可选的);
// 2、或一个指定其 entry 的字符串。
pages: {
bdsp: {
// page 的入口
entry: 'src/bdsp-page/main.js',
// 模板来源
template: 'public/index.html',
// 在 dist/index.html 的输出
filename: 'index.html',
// 当使用 title 选项时,
// template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
title: 'Index Page',
// 在这个页面中包含的块,默认情况下会包含
// 提取出来的通用 chunk 和 vendor chunk。
chunks: ['chunk-vendors', 'chunk-common', 'index']
},
// 当使用只有入口的字符串格式时,
// 模板会被推导为 `public/datax.html`
// 并且如果找不到的话,就回退到 `public/index.html`。
// 输出文件名会被推导为 `datax.html`。
datax: 'src/datax/main.js'
}
*/ /**
* lintOnSave
* 是否在开发环境下通过 eslint-loader 在每次保存时 lint 代码。
* 这个值会在 @vue/cli-plugin-eslint 被安装之后生效
*
* 值: boolean | 'warning' | 'default' | 'error'
* true | 'warning' 会输出 编译警告
* 'default' | 'error' 会输出 编译错误,导致编译失败
*/
lintOnSave: process.env.NODE_ENV === 'development',
// SourceMap 的作用就是能够让浏览器的调试面版将生成后的代码映射到源码文件当中,
// 使开发者可以在源码文件中 debug
productionSourceMap: false, /**
* configureWebpack: Object | Function
* 如果这个值是一个对象,则会通过 webpack-merge 合并到最终的配置中(会合并到webpack配置中)。
* 如果你需要基于环境有条件地配置行为,或者想要直接修改配置,那就换成一个函数
* 该方法的第一个参数会收到已经解析好的配置。
* 在函数内,你可以直接修改配置,或者返回一个将会被合并的对象
* configureWebpack: config => {
* if (process.env.NODE_ENV === 'production') {
* // 为生产环境修改配置...
* } else {
* // 为开发环境修改配置...
* }
* }
*/
configureWebpack: {
// provide the app's title in webpack's name field, so that
// it can be accessed in index.html to inject the correct title.
name: name,
resolve: {
alias: {
     // 设置 @ 的指向
'@': resolve('src'),
'@crud': resolve('src/components/system/Crud')
}
},
// 警告 webpack 的性能提示
performance: {
// hints: 'warning',
// // 入口起点的最大体积 整数类型(以字节为单位)
// maxEntrypointSize: 50000000,
// // 生成文件的最大体积 整数类型(以字节为单位 300k)
// maxAssetSize: 30000000
// // 只给出 js 文件的性能提示
// assetFilter: function(assetFilename) {
// return assetFilename.endsWith('.js')
// }
} },
chainWebpack(config) {
config.plugins.delete('preload') // TODO: need test
config.plugins.delete('prefetch') // TODO: need test // set svg-sprite-loader
config.module
.rule('svg')
.exclude.add(resolve('src/assets/icons'))
.end()
config.module
.rule('icons')
.test(/\.svg$/)
.include.add(resolve('src/assets/icons'))
.end()
.use('svg-sprite-loader')
.loader('svg-sprite-loader')
.options({
symbolId: 'icon-[name]'
})
.end() // set preserveWhitespace
config.module
.rule('vue')
.use('vue-loader')
.loader('vue-loader')
.tap(options => {
options.compilerOptions.preserveWhitespace = true
return options
})
.end() config
// https://webpack.js.org/configuration/devtool/#development
.when(process.env.NODE_ENV === 'development',
config => config.devtool('cheap-source-map')
) config
.when(process.env.NODE_ENV !== 'development',
config => {
config
.plugin('ScriptExtHtmlWebpackPlugin')
.after('html')
.use('script-ext-html-webpack-plugin', [{
// `runtime` must same as runtimeChunk name. default is `runtime`
inline: /runtime\..*\.js$/
}])
.end()
config
.optimization.splitChunks({
chunks: 'all',
cacheGroups: {
libs: {
name: 'chunk-libs',
test: /[\\/]node_modules[\\/]/,
priority: 10,
chunks: 'initial' // only package third parties that are initially dependent
},
elementUI: {
name: 'chunk-elementUI', // split elementUI into a single package
priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
},
commons: {
name: 'chunk-commons',
test: resolve('src/components'), // can customize your rules
minChunks: 3, // minimum common number
priority: 5,
reuseExistingChunk: true
}
}
})
config.optimization.runtimeChunk('single')
}
)
},
/**
* requireModuleExtension, extract, sourceMap, loaderOptions
* css相关配置具体见:https://cli.vuejs.org/zh/config/#css-extract
* css: {
* // 默认情况下,只有 *.module.[ext] 结尾的文件才会被视作 CSS Modules 模块。
* // 详情:https://cli.vuejs.org/zh/guide/css.html#css-modules
* requireModuleExtension: true,
*
* // 向预处理器 Loader 传递选项
* // 更多详情:https://cli.vuejs.org/zh/guide/css.html#%E5%90%91%E9%A2%84%E5%A4%84%E7%90%86%E5%99%A8-loader-%E4%BC%A0%E9%80%92%E9%80%89%E9%A1%B9
* loaderOptions: {
* css: {
* // 这里的选项会传递给 css-loader
* },
* postcss: {
* // 这里的选项会传递给 postcss-loader
* }
* }
* }
*/
/**
* devServer
* 所有 webpack-dev-server 的选项都支持
* 详情:https://webpack.docschina.org/configuration/dev-server/
* 注意:
* 1、有些值像 host、port 和 https 可能会被命令行参数覆写。
* 2、有些值像 publicPath 和 historyApiFallback 不应该被修改,因为它们需要和开发服务器的 publicPath 同步以保障正常的工作。
*/
devServer: {
// 指定监听请求的端口号,自动使用可以设置为 'auto'
port: port,
// 启动完毕后,自动打开在浏览器上
open: false, // overlay: true 当出现编译错误或警告时,在浏览器中显示全屏覆盖。
// 当前配置表示,只显示错误,不显示警告
overlay: {
warnings: false,
errors: true
},
/**
* proxy:请求代理
* 值:
* 1、String
* 例:proxy: 'http://localhost:4000'
* 这会告诉开发服务器将任何未知请求 (没有匹配到静态文件的请求) 代理到 http://localhost:4000
* 2、Object
* 完整的选项可以查阅 https://github.com/chimurai/http-proxy-middleware#proxycontext-config
*/
proxy: {
// 如果检测到以 /api 开头的请求,则会开启代理
'/api': {
// 转换为 真实的 请求地址
target: process.env.VUE_APP_BASE_API,
// 是否跨域:true 是;false 否
changeOrigin: true,
// 将 第一个 /api 改为 api ,可以改任意值
pathRewrite: {
'^/api': 'api'
}
}
/**
* 例: 请求路径为 /api/login,真实地址为 http://localhost:8080/
* 使用代理:
* '/api': {
* target: 'http://localhost:8080/',
* changeOrigin: false,
* pathRewrite: {
* '^/api': ''
* }
* }
* 经过代理以后的请求地址:http://localhost:8080/login
*
* 注意:
* 如果使用了请求拦截器,并设置了统一的请求头,
* 则代理收到的是 拦截过后 的请求路径,即 请求头+请求路径
*/
}
},
transpileDependencies: [
'vue-echarts',
'resize-detector'
]
}

vue.config.js --- vue-cli 4.0配置的更多相关文章

  1. 【vue-cli 3.0】 vue.config.js配置 - 路径别名

    如何配置vue-cli 3中vue.config.js的路径别名? 前段时间更新电脑重装了一下vue-cli,发现了vue-cli已经更新到3.0版.用来搭建项目后发现简化了很多,而且配置文件现在可以 ...

  2. vue.config.js报错cannot set property "preserveWhitespace" of undefined

    vue.config.js报错cannot set property "preserveWhitespace" of undefined 最近在项目中配置webpack,由于vue ...

  3. webpack.config.js和vue.config.js的区别

    webpack.config.js是webpack的配置文件,所有使用webpack作为打包工具的项目都可以使用,vue的项目可以使用,react的项目也可以使用. vue.config.js是vue ...

  4. vue3.0 vue.config.js 配置实战

    今天讲述一下vue-config.js配置,我们前面搭建好脚手架会发现,这个对比2.x版本少了很多东西,没有build的配置,也没有webpack的配置,那么问题来了,我们如何去开发我们的项目呢,比如 ...

  5. vue cli 中关于vue.config.js中chainWebpack的配置

    Vue CLI  的官方文档上写:调整webpack配置最简单的方式就是在vue.config.js中的configureWebpack选项提供一个对象. Vue CLI 内部的 webpack 配置 ...

  6. vue.config.js常用配置

    使用vue-cli3.0搭建项目比之前更简洁,没有了build和config文件夹. vue-cli3的一些服务配置都迁移到CLI Service里面了,对于一些基础配置和一些扩展配置需要在根目录新建 ...

  7. vue-cli3的vue.config.js文件配置,生成dist文件

    //vue.config.jsonconst path = require('path'); // const vConsolePlugin = require('vconsole-webpack-p ...

  8. vue.config.js配置前端代理

    // vue.config.js 配置说明 //官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions // 这 ...

  9. Vue-Cli 3.0 + vue.config.js

    虽然一直没有亲手搭建过vue项目,但是2.0的时候就开始自学(但并没有实践项目).然后公司最近有个人用3.0做了个项目,公司让我参与进去,我就顺便学习了一把3.0.(美滋滋) 因为电脑的环境还是之前自 ...

  10. vue cli3.3 以上版本配置vue.config.js

    // vue.config.js 配置说明//官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions// 这里只 ...

随机推荐

  1. [阿里云]Datahub测试使用记录

    由于需要测试阿里云Datahub功能,因此测了一下Datahub的一些功能 DATAHUB: 简介: 阿里云的流式数据(streaming)处理平台 对流式数据的发布(publish)订阅(subsc ...

  2. forEach(遍历) VS map(映射) VS reduce(聚合)---学习笔记

  3. antDesign 【NG-ZORRO、Angular】日期选择框时间段nz-range-picker设置默认选择日期及限制日期可选范围

    下面的代码包含 1.只可以选择今天以后 2.只可以选择今天开始一周内 3.只能选择今天之前的 import { Component } from '@angular/core'; import dif ...

  4. css之transform属性的使用

    1.定义:Transform属性应用于元素的2D或3D转换.这个属性允许你将元素旋转,缩放,移动,倾斜等. 2.常用的属性值: (1)translate(移动):   这个属性值里面含有三个参数,依次 ...

  5. java入门与进阶 P-2.7+P-3.1

    判断语句常见错误 忘了大括号 永远在if和else后面加上大括号,即使当时后面只有一条语句 if后面的分号 错误使用== 和= if只要求()里面的值是零或者非零 = 是赋值 == 是判断是否相同 代 ...

  6. 时间日期相关总结-System类的常用方法

    时间日期相关总结 Date类 A.构造方法 Date();根据当前系统时间创建日期对象 Date(long time);根据传入的毫秒值时间创建日期对象 B.成员方法 long getTime(); ...

  7. sync/atomic 原子操作使用与解析

    目录 前言 1. 引入 2. sync.atomic 原子操作 2.1 什么是原子操作 2.2 各种 API 的作用 2.2.1 Store 操作 2.2.2 Load 操作 2.2.3 Add 操作 ...

  8. 完整工作流整合方案,自定义配置,Java+Vue+Activiti@附配套文档

    前言 activiti工作流引擎项目,企业erp.oa.hr.crm等企事业办公系统轻松落地,一套完整并且实际运用在多套项目中的案例,满足日常业务流程审批需求. 一.项目形式 springboot+v ...

  9. (Crack)SQL转Linq工具的使用——Linqer

    官方下载网站:http://www.sqltolinq.com/ 这是干什么用的         就是Sql语句转Linq  给不熟悉的小白用 再用Linq 转 Lambda      (用到Linq ...

  10. NodeJS 实战系列:DevOps 尚未解决的问题

    本文将通过展示 NodeJS 应用里环境变量的提取过程,来一窥 DevOps 技术是如何应用在现在云平台上的运维工作中的.同时我也想让大家在这里看到 DevOps 的另外一面,即它并非全能,从本地开发 ...