You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

127 lines
3.5 KiB
JavaScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* @description: 打包的配置
* @Author: xing.heng
*/
const path = require('path')
const { ProvidePlugin } = require('webpack')
const CompressionPlugin = require('compression-webpack-plugin')
const webpack = require('webpack')
function resolve (dir) {
return path.join(__dirname, dir)
}
module.exports = {
lintOnSave: false,
css: {
extract: true
},
configureWebpack: {
externals: {
vuex: 'vuex',
vue: 'vue',
vueRouter: 'vue-router',
'@antv/g2plot': '@antv/g2plot',
'@jiaminghi/data-view': '@jiaminghi/data-view',
axios: 'axios',
echarts: 'echarts',
'element-ui': 'element-ui',
'insert-css': 'insert-css',
jquery: 'jquery',
lodash: 'lodash',
moment: 'moment',
qs: 'qs',
sortablejs: 'sortablejs',
'tiny-sass-compiler': 'tiny-sass-compiler',
'vue-codemirror': 'vue-codemirror',
'vue-contextmenujs': 'vue-contextmenujs',
'vue-draggable-resizable-gorkys': 'vue-draggable-resizable-gorkys',
'vue-json-editor-fix-cn': 'vue-json-editor-fix-cn',
'vue-json-viewer': 'vue-json-viewer',
'vue-quill-editor': 'vue-quill-editor',
'vue-sketch-ruler': 'vue-sketch-ruler',
vuedraggable: 'vuedraggable',
ztree: 'ztree',
// codemirror 导入但未声明的变量
'codemirror/lib/codemirror.css': 'codemirror',
'codemirror/theme/material-darker.css': 'codemirror',
'codemirror/addon/selection/active-line.js': 'codemirror',
'codemirror/mode/vue/vue.js': 'codemirror'
},
resolve: {
alias: {
'@': resolve('example'),
'data-room-ui': resolve('packages')
},
fallback: {
path: false,
fs: false
}
},
plugins: [
new CompressionPlugin({
test: /\.js$|\.html$|\.css$|\.jpg$|\.jpeg$|\.png/, // 需要压缩的文件类型
threshold: 10240, // 归档需要进行压缩的文件大小最小值10K以上的进行压缩
deleteOriginalAssets: false // 是否删除原文件
}),
new ProvidePlugin({
jQuery: 'jquery',
$: 'jquery',
'window.jQuery': 'jquery'
}),
new webpack.optimize.LimitChunkCountPlugin({
maxChunks: 1
})
]
},
chainWebpack: config => {
// set svg-sprite-loader
config.module
.rule('svg')
.exclude.add(resolve('packages/assets/images/bigScreenIcon/svg'))
.add(resolve('packages/Svgs/svg'))
.add(resolve('packages/assets/images/dataSourceIcon/svg'))
.add(resolve('packages/assets/images/pageIcon/svg'))
.add(resolve('packages/assets/images/alignIcon/svg'))
.end()
config.module
.rule('icons')
.test(/\.svg$/)
.include.add(resolve('packages/assets/images/bigScreenIcon/svg'))
.add(resolve('packages/Svgs/svg'))
.add(resolve('packages/assets/images/dataSourceIcon/svg'))
.add(resolve('packages/assets/images/pageIcon/svg'))
.add(resolve('packages/assets/images/alignIcon/svg'))
.end()
.use('svg-sprite-loader')
.loader('svg-sprite-loader')
.options({
symbolId: 'icon-[name]'
})
.end()
const imagesRule = config.module.rule('images')
imagesRule.uses.clear()
config.module
.rule('images')
.set('parser', {
dataUrlCondition: {
maxSize: 1024 * 1024
}
})
.end()
// 处理font
config.module
.rule('font')
.test(/\.(ttf|woff|woff2)$/)
.set('parser', {
dataUrlCondition: {
maxSize: 1024 * 1024
}
})
.end()
}
}