123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- /*
- * @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()
- }
- }
|