keyL‘s blog keyL‘s blog
首页
  • 前端文章

    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 小程序笔记
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 友情链接
关于
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
GitHub

key L

前端界的小学生
首页
  • 前端文章

    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 小程序笔记
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 友情链接
关于
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
GitHub
  • JavaScript文章

  • Vue文章

    • Vue项目开发前的一些准备工作
    • Vue CLi3 修改webpack配置
      • 审查项目的 webpack 配置
      • 修改 webpack 配置
      • 参考
    • Vue中的scoped和scoped穿透
    • Vue项目使用mock数据的几种方式
  • 学习笔记

  • 前端
  • Vue文章
lyc
2020-02-22

Vue CLi3 修改webpack配置

# Vue CLi3 修改 webpack 配置

# 审查项目的 webpack 配置

因为 @vue/cli-service 对 webpack 配置进行了抽象,当你想查看 webpack 的配置时可以使用 inspect命令:

vue inspect # 在终端打印 webpack配置信息
1
vue inspect > output.js # 把webpack配置信息生成到output.js文件
1

注意,output.js 文件不是一个有效的 webpack 配置文件,仅用于审查。

# 修改 webpack 配置

以修改路径别名为例:

  1. 项目根目录创建文件 vue.config.js

  2. 参考如下代码修改路径别名:

// vue.config.js
const path = require("path");
const resolve = (dir) => path.resolve(__dirname, dir);

module.exports = {
	chainWebpack: (config) => {
		config.resolve.alias.set("styles", resolve("src/assets/styles"));
	},
};
1
2
3
4
5
6
7
8
9

# 参考

  • 官方文档

  • 官方 vue.config.js 参数说明

  • vue.config.js 设置接口代理示例

  • 配置示例:

const path = require("path");
const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
const ProxyAgent = require("proxy-agent");
const resolve = (dir) => path.resolve(__dirname, dir);
module.exports = {
	outputDir: process.env.outputDir || "dist", // 'dist', 生产环境构建文件的目录
	runtimeCompiler: true,
	assetsDir: "static",
	productionSourceMap: false, // 生产环境的 source map
	parallel: require("os").cpus().length > 1,
	configureWebpack: (config) => {
		// 公共配置
		// cdn引用时配置externals 防止将某些 import 的包(package)打包到 bundle 中,而是在运行时(runtime)再去从外部获取这些扩展依赖
		config.externals = {
			vue: "Vue",
			"vue-router": "VueRouter",
			"element-ui": "ELEMENT",
			vuex: "Vuex",
			axios: "axios",
		};
		config.resolve.alias = Object.assign({}, config.resolve.alias, {
			src: resolve("src/common"),
			common: resolve("src/views/common"),
			static: resolve("static"),
		});
		if (process.env.NODE_ENV === "production") {
			// 为生产环境修改配置...
			config.optimization = {
				minimizer: [
					new UglifyJsPlugin({
						uglifyOptions: {
							compress: {
								drop_console: true, // console
								drop_debugger: false,
								pure_funcs: ["console.log"], // 移除console
							},
						},
					}),
				],
			};
		} else {
			// 为开发环境修改配置...
		}
	},
	css: {
		loaderOptions: {
			css: {
				importLoaders: 1, // @import 引入的文件可被一个loader处理 (2 可被两个loader处理)
			},
		},
	},
	devServer: {
		port: 80,
		disableHostCheck: true, // 可使用本地host配置的域名访问
		proxy: {
			"/api": {
				agent: new ProxyAgent("http://132.128.11.12"),
				target: "http://132.128.11.12",
				ws: false,
				changeOrigin: true,
			},
		},
	},
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
编辑
上次更新: 2020/12/28, 20:12:00
Vue项目开发前的一些准备工作
Vue中的scoped和scoped穿透

← Vue项目开发前的一些准备工作 Vue中的scoped和scoped穿透→

最近更新
01
TypeScript笔记
10-08
02
CSS教程和技巧收藏
08-11
03
Vuex
08-08
更多文章>
Theme by Vdoing | Copyright © 2019-2021 key L | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式