const path = require('path');
const HotHashWebpackPlugin = require('hot-hash-webpack-plugin');
const WebpackBar = require('webpackbar');
const resolve = (dir) => path.join(__dirname, '.', dir);
module.exports = {
productionSourceMap: false,
publicPath: './',
outputDir: 'dist',
assetsDir: 'assets',
devServer: {
port: 9999,
host: '0.0.0.0',
https: false,
open: true
},
chainWebpack: (config) => {
const types = ['vue-modules', 'vue', 'normal-modules', 'normal'];
types.forEach(type => {
let rule = config.module.rule('less').oneOf(type)
rule.use('style-resource')
.loader('style-resources-loader')
.options({
patterns: [path.resolve(__dirname, './lessVariates.less')]
});
});
config.resolve.alias
.set('@', resolve('src'))
.set('api', resolve('src/apis'))
.set('common', resolve('src/common'))
config.module.rule('images').use('url-loader')
.tap(options => ({
name: './assets/images/[name].[ext]',
quality: 85,
limit: 0,
esModule: false,
}));
config.module.rule('svg')
.test(/\.svg$/)
.include.add(resolve('src/svg'))
.end()
.use('svg-sprite-loader')
.loader('svg-sprite-loader');
config.plugin('define').tap(args => [{
...args,
"window.isDefine": JSON.stringify(true)
}]);
// 生產(chǎn)環(huán)境配置
if (process.env.NODE_ENV === 'production') {
config.output.filename('./js/[name].[chunkhash:8].js');
config.output.chunkFilename('./js/[name].[chunkhash:8].js');
config.plugin('extract-css').tap(args => [{
filename: 'css/[name].[contenthash:8].css',
chunkFilename: 'css/[name].[contenthash:8].css'
}]);
config.plugin('hotHash').use(HotHashWebpackPlugin, [{ version : '1.0.0'}]);
config.plugin('webpackBar').use(WebpackBar);
config.optimization.minimize(true)
.minimizer('terser')
.tap(args => {
let { terserOptions } = args[0];
terserOptions.compress.drop_console = true;
terserOptions.compress.drop_debugger = true;
return args
});
config.optimization.splitChunks({
cacheGroups: {
common: {
name: 'common',
chunks: 'all',
minSize: 1,
minChunks: 2,
priority: 1
},
vendor: {
name: 'chunk-libs',
chunks: 'all',
test: /[\\/]node_modules[\\/]/,
priority: 10
}
}
});
}
}
};
VUE-config
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門密强,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茅郎,“玉大人,你說我怎么就攤上這事或渤∠等撸” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵薪鹦,是天一觀的道長(zhǎng)掌敬。 經(jīng)常有香客問我,道長(zhǎng)池磁,這世上最難降的妖魔是什么奔害? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮地熄,結(jié)果婚禮上华临,老公的妹妹穿的比我還像新娘。我一直安慰自己端考,他們只是感情好雅潭,可當(dāng)我...
- 文/花漫 我一把揭開白布揭厚。 她就那樣靜靜地躺著,像睡著了一般扶供。 火紅的嫁衣襯著肌膚如雪筛圆。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼唧垦,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了液样?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬榮一對(duì)情侶失蹤巧还,失蹤者是張志新(化名)和其女友劉穎鞭莽,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體麸祷,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡澎怒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了阶牍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喷面。...
- 正文 年R本政府宣布盒齿,位于F島的核電站,受9級(jí)特大地震影響困食,放射性物質(zhì)發(fā)生泄漏边翁。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一硕盹、第九天 我趴在偏房一處隱蔽的房頂上張望符匾。 院中可真熱鬧,春花似錦瘩例、人聲如沸啊胶。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽创淡。三九已至痴晦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間琳彩,已是汗流浹背誊酌。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像瘟仿,于是被迫代替她去往敵國(guó)和親箱锐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 為了方便自己對(duì)知識(shí)點(diǎn)的鞏固和理解劳较,整理了李永寧大佬 12 篇《Vue源碼解讀》的文末知識(shí)點(diǎn)總結(jié)驹止,在這里可以一覽天下...
- 本文源碼版本 Vue3.2.11臊恋,Vue2 響應(yīng)式源碼剖析點(diǎn)這里 深入淺出 Vue2 響應(yīng)式原理源碼剖析[http...
- 原文首地址 掘金[https://juejin.cn/post/6965837907181436936] 三連哦 ...
- 寫在前面 什么是流鶯書簽 “流鶯”是我非常喜歡的一個(gè)詞,本指四處飛翔鳴唱的鶯鳥墓捻,就像我本身也是一個(gè)很隨性的人抖仅。“流...
- 1.安裝 2.在main.js中引入echarts 3.在template模板中準(zhǔn)備一個(gè)容器 4.使用echart...