123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- const path = require('path')
- const webpack = require('webpack')
- const createThemeColorReplacerPlugin = require('./config/plugin.config')
- const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin')
- const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
- var baseURL = process.env.VUE_APP_API_CTX_PATH
- //生产环境下打包保留debugger
- //const TerserPlugin = require('terser-webpack-plugin')
- //生产环境下组件获取路径 __file ;
- const VueFilenameInjector = require('@d2-projects/vue-filename-injector')
- function resolve (dir) {
- return path.join(__dirname, dir)
- }
- // webpack build externals
- const prodExternals = {
- // key表示包名(import foo from 'xx' 里的xx)
- // value表示window下的全局变量名(库暴露出来的namespace,可查lib对应的webpack配置里的library字段)
- 'vue': 'Vue',
- 'axios': 'axios',
- 'vue-router': 'VueRouter',
- 'vuex': 'Vuex',
- /*'jpaas-common-lib': 'jpaas-commons',*/
- 'moment': 'moment',
- '@antv/g2': 'G2',
- '@antv/data-set': 'DataSet',
- 'ant-design-vue': 'antd'
- }
- // publicPath: "/jpaas",
- // vue.config.js
- const vueConfig = {
- publicPath: baseURL,
- configureWebpack: {
- externals: prodExternals,
- plugins: [
- // Ignore all locale files of moment.js
- new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
- new webpack.IgnorePlugin(/moment\//),
- new webpack.ProvidePlugin({
- 'window.Quill': 'quill/dist/quill.js',
- 'Quill': 'quill/dist/quill.js'
- })
- // new BundleAnalyzerPlugin()
- ]
- },
- assetsDir: 'static',
- chainWebpack: config => {
- // config.entry('polyfill').add('@babel/polyfill');
- config.resolve.alias.set('@$', resolve('src'))
- .set('@static', resolve('static'))
- .set('@img', resolve('static/img'))
- const svgRule = config.module.rule('svg')
- svgRule.uses.clear()
- svgRule
- .oneOf('inline')
- .resourceQuery(/inline/)
- .use('vue-svg-icon-loader')
- .loader('vue-svg-icon-loader')
- .end()
- .end()
- .oneOf('external')
- .use('file-loader')
- .loader('file-loader')
- .options({
- name: 'assets/[name].[hash:8].[ext]'
- })
- /*config.optimization.minimizer([//生产环境下保留debugger
- new TerserPlugin({
- terserOptions: {
- mangle: true,
- compress: {
- drop_debugger: false
- }
- }
- })
- ]
- )*/
- //公共代码抽离
- // config.optimization.splitChunks({
- // cacheGroups: {
- // // vendor: {
- // // chunks: 'initial',
- // // test: /node_modules/,
- // // name: 'vendor',
- // // minChunks: 1,
- // // maxInitialRequests: 5,
- // // minSize: 5*1024,
- // // priority: 5
- // // },
- // // common: {
- // // chunks: 'initial',
- // // test: /[\\/]src[\\/]js[\\/]/,
- // // name: 'common',
- // // minChunks: 2,
- // // maxInitialRequests: 5,
- // // minSize: 5*1024,
- // // priority: 1
- // // },
- // jpaasCommonLib: {
- // chunks: 'initial',
- // test: /[\\/]node_modules[\\/]jpaas-common-lib[\\/]/,
- // name: 'jpaas-common-lib',
- // maxInitialRequests: 5,
- // priority: 2
- // },
- // jpaasFormComponent: {
- // chunks: 'initial',
- // test: /[\\/]node_modules[\\/]jpaas-form-component[\\/]/,
- // name: 'jpaas-form-component',
- // maxInitialRequests: 5,
- // priority: 3
- // },
- // rxKFormDesign: {
- // chunks: 'initial',
- // test: /[\\/]node_modules[\\/]rx-k-form-design[\\/]/,
- // name: 'rx-k-form-design',
- // maxInitialRequests: 5,
- // priority: 4
- // },
- // // styles: {
- // // name: 'styles',
- // // test: /\.(sa|sc|c)ss$/,
- // // chunks: 'all',
- // // enforce: true
- // // },
- // // runtimeChunk: {
- // // name: 'manifest'
- // // }
- // }
- // })
- VueFilenameInjector(config, {
- propName: '__source' // default
- })
- },
- css: {
- loaderOptions: {
- less: {
- lessOptions: {
- javascriptEnabled: true
- }
- }
- }
- },
- devServer: {
- // development server port 8000
- port: 8003,
- disableHostCheck: true,
- proxy: {
- '/api-knowledge': {
- // target: 'http://10.5.100.64:5208',
- target: 'http://10.5.100.230:9009',//服务器
- // target: 'http://www.hkcqjy.com.cn:8088',
- // target: 'http://192.168.0.185:7206', // 张哲
- // target: 'http://192.168.0.205:7206',//柳哥
- // target: 'http://10.5.0.233:9900',
- // target: 'http://10.5.100.64:9900',
- pathRewrite: { '^/api': '' },
- ws: false,
- changeOrigin: true
- },
- '/api': {
- // target: 'http://localhost:9900',
- // target: 'http://10.5.0.233:9900',
- //target: 'http://10.5.100.64:9900',
- target: 'http://www.hkcqjy.com.cn:8088',
- //target: 'http://10.5.100.230:9009',
- //target: 'http://10.5.100.64:5208',
- //target: 'http://192.168.0.176:7206',//柳哥
- //target: 'http://192.168.0.109:7206',//白哥
- pathRewrite: { '^api': '' },
- ws: false,
- changeOrigin: true
- }
- }
- },
- // disable source map in production
- productionSourceMap: false,
- lintOnSave: undefined,
- // babel-loader no-ignore node_modules/*
- transpileDependencies: []
- }
- // 如果你不想在生产环境开启换肤功能,请打开下面注释
- // if (process.env.VUE_APP_PREVIEW === 'true') {
- // add `ThemeColorReplacer` plugin to webpack plugins
- vueConfig.configureWebpack.plugins.push(createThemeColorReplacerPlugin())
- vueConfig.configureWebpack.plugins.push(new MonacoWebpackPlugin())
- // }
- module.exports = vueConfig
|