-
Notifications
You must be signed in to change notification settings - Fork 3
/
vue.config.js
executable file
·116 lines (110 loc) · 4.07 KB
/
vue.config.js
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
const path = require('path')
// const fs = require('fs')
// const CompressionWebpackPlugin = require('compression-webpack-plugin')
// const productionGzipExtensions = ['js', 'css']
const BUILD_PAGE = process.env.BUILD_PAGE // 构建页面
let devServer = {
proxy: { // 代理
'/': {
target: 'http://localhost:8080',//设置你调用的接口域名和端口号 别忘了加http
ws: false,
changeOrigin: true,
pathRewrite: {}
}
}
}
let pages = {
EDITOR: {
entry: 'src/pages/editor/main.js', // 入口
template: 'template/editor.html', // 模板
filename: 'index.html' // 输出文件
},
H5: {
entry: 'src/pages/h5/main.js', // 入口
template: 'template/h5.html', // 模板
filename: BUILD_PAGE ? 'index.html' : 'h5.html' // 输出文件
}
}
if (BUILD_PAGE) {
pages = { index: pages[BUILD_PAGE] }
}
module.exports = {
devServer: devServer,
publicPath: process.env.BUILD_PAGE === 'EDITOR' ? '/activity/design/' : '/',
// 输出文件目录
assetsDir: 'static',
// 修改 pages 入口
pages,
// css: {
// loaderOptions: {
// scss: {
// // @/ 是 src/ 的别名
// // data: fs.readFileSync(path.resolve(__dirname, `./src/pages/editor/common/styles/variables.scss`), 'utf-8') // 公共变量文件注入
// prependData: `@import "./src/pages/editor/common/styles/variables.scss"` // 公共变量文件注入
// }
// }
// },
productionSourceMap: process.env.NODE_ENV !== 'production',
configureWebpack: config => {
if (process.env.NODE_ENV === 'production') {
// 生产环境
// config.plugins.push(
// new CompressionWebpackPlugin({
// filename: '[path].gz[query]', // 提示示[email protected]的话asset改为filename
// algorithm: 'gzip',
// beta: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
// threshold: 10240,
// minRatio: 0.8
// })
// );
} else {
// 开发环境
}
},
// 扩展 webpack 配置
chainWebpack: config => {
// @ 默认指向 src 目录,这里要改成 examples
// 另外也可以新增一个 ~ 指向 packages
config.resolve.alias
.set('@', path.resolve('src'))
.set('@editor', path.resolve('src/pages/editor'))
.set('@plugins', path.resolve('plugins'))
config.module
.rule('js')
.use('babel')
.loader('babel-loader')
.tap(options => {
// 修改它的选项...
return options
})
},
pluginOptions: {
'style-resources-loader': {
preProcessor: 'scss',
patterns: [
path.resolve(__dirname, './src/pages/editor/common/styles/variables.scss'),
path.resolve(__dirname, './src/constant/constant.scss')
]
}
},
css: {
loaderOptions: {
postcss: {
plugins: [
require('postcss-plugin-px2rem')({
rootValue: 37.5, //换算基数, 默认100 ,这样的话把根标签的字体规定为1rem为50px,这样就可以从设计稿上量出多少个px直接在代码中写多上px了。
// unitPrecision: 5, //允许REM单位增长到的十进制数字。
//propWhiteList: [], //默认值是一个空数组,这意味着禁用白名单并启用所有属性。
// propBlackList: [], //黑名单
exclude: /(node_module)|(src\/pages\/editor)/, //默认false,可以(reg)利用正则表达式排除某些文件夹的方法,例如/(node_module)\/如果想把前端UI框架内的px也转换成rem,请把此属性设为默认值
// selectorBlackList: [], //要忽略并保留为px的选择器
// ignoreIdentifier: false, //(boolean/string)忽略单个属性的方法,启用ignoreidentifier后,replace将自动设置为true。
// replace: true, // (布尔值)替换包含REM的规则,而不是添加回退。
mediaQuery: false, //(布尔值)允许在媒体查询中转换px。
minPixelValue: 3 //设置要替换的最小像素值(3px会被转rem)。 默认 0
})
]
}
}
}
}