pc网页版软测宝
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
keysass_portal/vue.config.js

159 lines
4.3 KiB

const webpack = require('webpack')
const path = require('path')
// const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
const CompressionWebpackPlugin = require('compression-webpack-plugin')
// const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
/**
* 配置参考:
* https://cli.vuejs.org/zh/config/
*/
// const url = 'http://47.94.55.72:9999/';//之前的线上地址
// const url = 'http://test.lovecode.cc:9999/';//线上地址
// const url = 'http://192.168.1.105:9999/';//线下地址
// const url = 'http:// 172.16.36.67:9999/';//线下地址
//
// const port = process.env.port || process.env.npm_config_port || 80 // 端口
const isProduction = process.env.NODE_ENV === 'production'
module.exports = {
// const port = process.env.port || process.env.npm_config_port || 80 // 端口
devServer: {
// https:true,
host: '0.0.0.0',
// port: port,
open: true,
proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
// target: `https://www.keyitest.cn/prod-api`,
//target: `http://192.168.1.105:9999`,//之前
target: process.env.VUE_APP_BASE_TARGET,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''
}
}
},
disableHostCheck: true
// before (app, server) {
// app.get(/.*.(js)$/, (req, res, next) => {
// req.url = req.url + '.gz'
// res.set('Content-Encoding', 'gzip')
// next()
// })
// }
},
configureWebpack: {
resolve: {
alias: {
'@': path.resolve(__dirname, 'src')
}
},
plugins: [
//
new webpack.ProvidePlugin({
'window.Quill': 'quill/dist/quill.js',
Quill: 'quill/dist/quill.js'
}),
// new BundleAnalyzerPlugin()
new CompressionWebpackPlugin({
filename: '[path].gz[query]',
algorithm: 'gzip',
// test: /\.js$|\.html$|\.json$|\.css/,
test: /\.js$|\.json$|\.css/,
threshold: 10240, // 只有大小大于该值的资源会被处理
minRatio: 0.8 // 只有压缩率小于这个值的资源才会被处理
})
]
},
css: {
loaderOptions: {
scss: {
data: `@import "@/style/index.scss";`
}
}
},
lintOnSave: true,
productionSourceMap: false,
chainWebpack: config => {
config.plugin('provide').use(webpack.ProvidePlugin, [
{
$: 'jquery',
jquery: 'jquery',
jQuery: 'jquery',
'window.jQuery': 'jquery'
}
])
// xss攻击
config.module
.rule('vue')
.use('vue-loader')
.loader('vue-loader')
.tap(options => {
options.compilerOptions.directives = {
html(node, directiveMeta) {
;(node.props || (node.props = [])).push({
name: 'innerHTML',
value: `Xss(_s(${directiveMeta.value}))`
})
}
}
return options
})
// config.module
// .rule('images')
// .use('image-webpack-loader')
// .loader('image-webpack-loader')
// .options({
// bypassOnDebug: true
// })
// .end()
config.when(isProduction, config => {
config.plugin('UglifyJsPlugin').use('uglifyjs-webpack-plugin', [
{
uglifyOptions: {
output: {
comments: false // 去掉注释
},
warnings: false,
compress: {
drop_console: true,
drop_debugger: false,
pure_funcs: ['console.log'] //移除console
}
}
}
])
})
}
// baseUrl: "/",//二级目录
// chainWebpack: config => {
// // 忽略的打包文件
// config.externals({
// 'axios': 'axios'
// });
// },
// 配置转发代理
// devServer: {
// disableHostCheck: true,
// proxy: {
// // '/static': {
// // target: url,
// // ws: true,
// // pathRewrite: {
// // '^/Resource': '/Resource'
// // }
// // },
// '/': {
// target: url,
// ws: true,
// pathRewrite: {
// '^/': '/'
// }
// },
// }
// },
}