Merge remote-tracking branch 'origin/dev-nx' into dev-nx
This commit is contained in:
commit
b70753ec60
|
|
@ -21,7 +21,7 @@ var proxyUrl = (module.exports = {
|
||||||
// target: 'http://112.29.103.165:21626',//重庆
|
// target: 'http://112.29.103.165:21626',//重庆
|
||||||
// target: 'http://192.168.0.14:21624',//测试
|
// target: 'http://192.168.0.14:21624',//测试
|
||||||
// target: 'http://112.29.103.165:21624/', //宁夏
|
// target: 'http://112.29.103.165:21624/', //宁夏
|
||||||
target: 'http://192.168.2.136:28080',
|
target: 'http://192.168.2.127:28080',
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
// secure: true, //如果是https接口,需要配置这个参数
|
// secure: true, //如果是https接口,需要配置这个参数
|
||||||
pathRewrite: {
|
pathRewrite: {
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,18 @@ export default {
|
||||||
resize: true,
|
resize: true,
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
watch: {
|
||||||
|
$route: {
|
||||||
|
handler(newValue) {
|
||||||
|
console.log(newValue, '路由监听--')
|
||||||
|
if (newValue.query.token) {
|
||||||
|
localStorage.setItem('token', newValue.query.token)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="less">
|
<style lang="less">
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
* axios全局配置
|
* axios全局配置
|
||||||
*/
|
*/
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
|
import { Message } from 'element-ui'
|
||||||
axios.defaults.timeout = 30000
|
axios.defaults.timeout = 30000
|
||||||
|
|
||||||
// 默认配置
|
// 默认配置
|
||||||
|
|
@ -29,6 +30,9 @@ axios.interceptors.response.use(
|
||||||
(response) => {
|
(response) => {
|
||||||
if (response.data) {
|
if (response.data) {
|
||||||
if (response.data.code === 401) {
|
if (response.data.code === 401) {
|
||||||
|
Message({ message: '当前登录状态已过期,请重新登录', type: 'error' })
|
||||||
|
localStorage.clear()
|
||||||
|
location.href = '/bigScrap/login/index'
|
||||||
} else if (response.data.code === 200) {
|
} else if (response.data.code === 200) {
|
||||||
return Promise.resolve(response.data)
|
return Promise.resolve(response.data)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -685,12 +685,12 @@ export default {
|
||||||
this.mapEcharts.on('click', function (params) {
|
this.mapEcharts.on('click', function (params) {
|
||||||
if (params.data && params.data.a > 0) {
|
if (params.data && params.data.a > 0) {
|
||||||
_this.$router.push({
|
_this.$router.push({
|
||||||
path: '/home-new',
|
path: '/bigScrap/home-new',
|
||||||
query: { province: params.data.name, location: params.data.value },
|
query: { province: params.data.name, location: params.data.value },
|
||||||
})
|
})
|
||||||
} else if (params.region.count > 0) {
|
} else if (params.region.count > 0) {
|
||||||
_this.$router.push({
|
_this.$router.push({
|
||||||
path: '/home-new',
|
path: '/bigScrap/home-new',
|
||||||
query: { province: params.name, location: params.region.value },
|
query: { province: params.name, location: params.region.value },
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -12,12 +12,12 @@ const Layout = () => import('@/views/layout')
|
||||||
const Home = () => import('@/views/Home/index')
|
const Home = () => import('@/views/Home/index')
|
||||||
const Login = () => import('@/views/new-login/index.vue')
|
const Login = () => import('@/views/new-login/index.vue')
|
||||||
const routes = [
|
const routes = [
|
||||||
|
// {
|
||||||
|
// path: '*',
|
||||||
|
// redirect: '/home-old',
|
||||||
|
// },
|
||||||
{
|
{
|
||||||
path: '*',
|
path: '/bigScrap/login/index',
|
||||||
redirect: '/home-old',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: '/login/index',
|
|
||||||
component: Login,
|
component: Login,
|
||||||
name: 'Login',
|
name: 'Login',
|
||||||
meta: {
|
meta: {
|
||||||
|
|
@ -26,12 +26,12 @@ const routes = [
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/home-new',
|
path: '/bigScrap/home-new',
|
||||||
name: 'home-new',
|
name: 'home-new',
|
||||||
component: () => import('@/views/newHome/index.vue'),
|
component: () => import('@/views/newHome/index.vue'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/home-old',
|
path: '/bigScrap/home-old',
|
||||||
name: 'home-old',
|
name: 'home-old',
|
||||||
component: () => import('@/views/oldHome/index.vue'),
|
component: () => import('@/views/oldHome/index.vue'),
|
||||||
},
|
},
|
||||||
|
|
@ -83,7 +83,7 @@ const routes = [
|
||||||
const router = new Router({
|
const router = new Router({
|
||||||
mode: 'history',
|
mode: 'history',
|
||||||
routes,
|
routes,
|
||||||
base: '/bigScrap',
|
// base: '/bigScrap',
|
||||||
})
|
})
|
||||||
|
|
||||||
router.beforeEach(async (to, from, next) => {
|
router.beforeEach(async (to, from, next) => {
|
||||||
|
|
|
||||||
|
|
@ -208,7 +208,7 @@ export default {
|
||||||
loginCodeApi(params).then((res) => {
|
loginCodeApi(params).then((res) => {
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
localStorage.setItem('token', res.data.access_token)
|
localStorage.setItem('token', res.data.access_token)
|
||||||
this.$router.push('./Home/index')
|
this.$router.push('/bigScrap/home-old')
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(res.msg)
|
this.$message.error(res.msg)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,9 +26,9 @@ export default {
|
||||||
methods: {
|
methods: {
|
||||||
openNewWindow() {
|
openNewWindow() {
|
||||||
window.open(
|
window.open(
|
||||||
`${
|
`${this.jumpUrl}/bigScrap/home-old?token=${localStorage.getItem(
|
||||||
this.jumpUrl
|
'token',
|
||||||
}/bigScrap/index01.html?token=${localStorage.getItem('token')}`,
|
)}`,
|
||||||
'_blank',
|
'_blank',
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<div :class="className" :style="{height:height,width:width}" />
|
<div :class="className" :style="{ height: height, width: width }" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
@ -8,72 +8,78 @@ require('echarts/theme/macarons') // echarts theme
|
||||||
import resize from './mixins/resize'
|
import resize from './mixins/resize'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
mixins: [resize],
|
mixins: [resize],
|
||||||
props: {
|
props: {
|
||||||
className: {
|
className: {
|
||||||
type: String,
|
type: String,
|
||||||
default: 'chart'
|
default: 'chart',
|
||||||
|
},
|
||||||
|
width: {
|
||||||
|
type: String,
|
||||||
|
default: '100%',
|
||||||
|
},
|
||||||
|
height: {
|
||||||
|
type: String,
|
||||||
|
default: '300px',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
width: {
|
data() {
|
||||||
type: String,
|
return {
|
||||||
default: '100%'
|
chart: null,
|
||||||
|
}
|
||||||
},
|
},
|
||||||
height: {
|
mounted() {
|
||||||
type: String,
|
this.$nextTick(() => {
|
||||||
default: '300px'
|
this.initChart()
|
||||||
}
|
})
|
||||||
},
|
},
|
||||||
data() {
|
beforeDestroy() {
|
||||||
return {
|
if (!this.chart) {
|
||||||
chart: null
|
return
|
||||||
}
|
}
|
||||||
},
|
this.chart.dispose()
|
||||||
mounted() {
|
this.chart = null
|
||||||
this.$nextTick(() => {
|
},
|
||||||
this.initChart()
|
methods: {
|
||||||
})
|
initChart() {
|
||||||
},
|
this.chart = echarts.init(this.$el, 'macarons')
|
||||||
beforeDestroy() {
|
|
||||||
if (!this.chart) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
this.chart.dispose()
|
|
||||||
this.chart = null
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
initChart() {
|
|
||||||
this.chart = echarts.init(this.$el, 'macarons')
|
|
||||||
|
|
||||||
this.chart.setOption({
|
this.chart.setOption({
|
||||||
tooltip: {
|
tooltip: {
|
||||||
trigger: 'item',
|
trigger: 'item',
|
||||||
formatter: '{a} <br/>{b} : {c} ({d}%)'
|
formatter: '{a} <br/>{b} : {c} ({d}%)',
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
left: 'center',
|
||||||
|
bottom: '10',
|
||||||
|
data: [
|
||||||
|
'Industries',
|
||||||
|
'Technology',
|
||||||
|
'Forex',
|
||||||
|
'Gold',
|
||||||
|
'Forecasts',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: 'WEEKLY WRITE ARTICLES',
|
||||||
|
type: 'pie',
|
||||||
|
roseType: 'radius',
|
||||||
|
radius: [15, 95],
|
||||||
|
center: ['50%', '38%'],
|
||||||
|
data: [
|
||||||
|
{ value: 320, name: 'Industries' },
|
||||||
|
{ value: 240, name: 'Technology' },
|
||||||
|
{ value: 149, name: 'Forex' },
|
||||||
|
{ value: 100, name: 'Gold' },
|
||||||
|
{ value: 59, name: 'Forecasts' },
|
||||||
|
],
|
||||||
|
animationEasing: 'cubicInOut',
|
||||||
|
animationDuration: 2600,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
})
|
||||||
},
|
},
|
||||||
legend: {
|
},
|
||||||
left: 'center',
|
|
||||||
bottom: '10',
|
|
||||||
data: ['Industries', 'Technology', 'Forex', 'Gold', 'Forecasts']
|
|
||||||
},
|
|
||||||
series: [
|
|
||||||
{
|
|
||||||
name: 'WEEKLY WRITE ARTICLES',
|
|
||||||
type: 'pie',
|
|
||||||
roseType: 'radius',
|
|
||||||
radius: [15, 95],
|
|
||||||
center: ['50%', '38%'],
|
|
||||||
data: [
|
|
||||||
{ value: 320, name: 'Industries' },
|
|
||||||
{ value: 240, name: 'Technology' },
|
|
||||||
{ value: 149, name: 'Forex' },
|
|
||||||
{ value: 100, name: 'Gold' },
|
|
||||||
{ value: 59, name: 'Forecasts' }
|
|
||||||
],
|
|
||||||
animationEasing: 'cubicInOut',
|
|
||||||
animationDuration: 2600
|
|
||||||
}
|
|
||||||
]
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
const path = require('path')
|
const path = require('path')
|
||||||
|
|
||||||
function resolve(dir) {
|
function resolve(dir) {
|
||||||
return path.join(__dirname, dir)
|
return path.join(__dirname, dir)
|
||||||
}
|
}
|
||||||
|
|
||||||
const CompressionPlugin = require('compression-webpack-plugin')
|
const CompressionPlugin = require('compression-webpack-plugin')
|
||||||
|
|
@ -16,143 +16,143 @@ const port = process.env.port || process.env.npm_config_port || 80 // 端口
|
||||||
// 这里只列一部分,具体配置参考文档
|
// 这里只列一部分,具体配置参考文档
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
// 部署生产环境和开发环境下的URL。
|
// 部署生产环境和开发环境下的URL。
|
||||||
// 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上
|
// 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上
|
||||||
// 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
|
// 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
|
||||||
publicPath: process.env.NODE_ENV === 'production' ? '/' : '/', ///gl/
|
publicPath: process.env.NODE_ENV === 'production' ? '/' : '/', ///gl/
|
||||||
// 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist)
|
// 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist)
|
||||||
outputDir: 'dist',
|
outputDir: 'dist',
|
||||||
// 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)
|
// 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)
|
||||||
assetsDir: 'static',
|
assetsDir: 'static',
|
||||||
// 是否开启eslint保存检测,有效值:ture | false | 'error'
|
// 是否开启eslint保存检测,有效值:ture | false | 'error'
|
||||||
lintOnSave: process.env.NODE_ENV === 'development',
|
lintOnSave: process.env.NODE_ENV === 'development',
|
||||||
// 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
|
// 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
|
||||||
productionSourceMap: false,
|
productionSourceMap: false,
|
||||||
// webpack-dev-server 相关配置
|
// webpack-dev-server 相关配置
|
||||||
devServer: {
|
devServer: {
|
||||||
host: '0.0.0.0',
|
host: '0.0.0.0',
|
||||||
port: port,
|
port: port,
|
||||||
open: true,
|
open: true,
|
||||||
proxy: {
|
proxy: {
|
||||||
// detail: https://cli.vuejs.org/config/#devserver-proxy
|
// detail: https://cli.vuejs.org/config/#devserver-proxy
|
||||||
[process.env.VUE_APP_BASE_API]: {
|
[process.env.VUE_APP_BASE_API]: {
|
||||||
// target: `http://112.29.103.165:21626`, //线上环境-重庆
|
// target: `http://112.29.103.165:21626`, //线上环境-重庆
|
||||||
// target: `http://112.29.103.165:21624`,//线上环境-宁夏 打包前放开数据大屏的路由
|
// target: `http://112.29.103.165:21624`,//线上环境-宁夏 打包前放开数据大屏的路由
|
||||||
// target: `http://192.168.0.14:21624`, //测试环境
|
// target: `http://192.168.0.14:21624`, //测试环境
|
||||||
// target: `http://1.12.248.179:23028`,//线上环境-南网
|
// target: `http://1.12.248.179:23028`,//线上环境-南网
|
||||||
// target: `https://test-cc.zhgkxt.com`,//线上环境-南网
|
// target: `https://test-cc.zhgkxt.com`,//线上环境-南网
|
||||||
// target: `https://z.csgmall.com.cn`,
|
// target: `https://z.csgmall.com.cn`,
|
||||||
|
|
||||||
target: `http://192.168.2.152:28080`, //超
|
target: `http://192.168.2.127:28080`, //超
|
||||||
// target: `http://10.40.92.81:28080`, //韩/
|
// target: `http://10.40.92.81:28080`, //韩/
|
||||||
// target: `http://192.168.2.82:28080`,//旭/
|
// target: `http://192.168.2.82:28080`,//旭/
|
||||||
// target: `http://192.168.2.248:28080`, //帅
|
// target: `http://192.168.2.248:28080`, //帅
|
||||||
// target: `http://192.168.2.218:28080`, //福
|
// target: `http://192.168.2.218:28080`, //福
|
||||||
// target: `http://192.168.2.118:28080`, //王
|
// target: `http://192.168.2.118:28080`, //王
|
||||||
|
|
||||||
//******** 注意事项 ********* */
|
//******** 注意事项 ********* */
|
||||||
//1.全局替换qrUrl二维码扫码提供的网址-发布服务器的地址target;
|
//1.全局替换qrUrl二维码扫码提供的网址-发布服务器的地址target;
|
||||||
//更改 utils/globalUrl.js 内qrUrl地址
|
//更改 utils/globalUrl.js 内qrUrl地址
|
||||||
//2.打开view文件夹根目录dashboard.vue 更换大屏项目发布的跳转地址;
|
//2.打开view文件夹根目录dashboard.vue 更换大屏项目发布的跳转地址;
|
||||||
//3.只有南网项目产线gl发布打包时候需要注意:
|
//3.只有南网项目产线gl发布打包时候需要注意:
|
||||||
// 将 publicPath:'static' 改为 '/gl/',还有env.development和env.production中的VUE_APP_BASE_API改为'/gl/dev-api';
|
// 将 publicPath:'static' 改为 '/gl/',还有env.development和env.production中的VUE_APP_BASE_API改为'/gl/dev-api';
|
||||||
// router/indx.js文件中的base放开
|
// router/indx.js文件中的base放开
|
||||||
// 登录跳转地址从/login换成/gl/login 3处;
|
// 登录跳转地址从/login换成/gl/login 3处;
|
||||||
//4. 重庆环境的时候 领料管理线上菜单与宁夏不同需要根据环境在线上菜单管理中修改组件路径
|
//4. 重庆环境的时候 领料管理线上菜单与宁夏不同需要根据环境在线上菜单管理中修改组件路径
|
||||||
//******** 注意事项 ********* */
|
//******** 注意事项 ********* */
|
||||||
|
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
pathRewrite: {
|
pathRewrite: {
|
||||||
['^' + process.env.VUE_APP_BASE_API]: '',
|
['^' + process.env.VUE_APP_BASE_API]: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
disableHostCheck: true,
|
||||||
},
|
},
|
||||||
disableHostCheck: true,
|
css: {
|
||||||
},
|
loaderOptions: {
|
||||||
css: {
|
sass: {
|
||||||
loaderOptions: {
|
sassOptions: { outputStyle: 'expanded' },
|
||||||
sass: {
|
},
|
||||||
sassOptions: { outputStyle: 'expanded' },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
configureWebpack: {
|
|
||||||
name: name,
|
|
||||||
resolve: {
|
|
||||||
alias: {
|
|
||||||
'@': resolve('src'),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
plugins: [
|
|
||||||
// http://doc.ruoyi.vip/ruoyi-vue/other/faq.html#使用gzip解压缩静态文件
|
|
||||||
new CompressionPlugin({
|
|
||||||
cache: false, // 不启用文件缓存
|
|
||||||
test: /\.(js|css|html)?$/i, // 压缩文件格式
|
|
||||||
filename: '[path].gz[query]', // 压缩后的文件名
|
|
||||||
algorithm: 'gzip', // 使用gzip压缩
|
|
||||||
minRatio: 0.8, // 压缩率小于1才会压缩
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
},
|
|
||||||
chainWebpack(config) {
|
|
||||||
config.plugins.delete('preload') // TODO: need test
|
|
||||||
config.plugins.delete('prefetch') // TODO: need test
|
|
||||||
|
|
||||||
// set svg-sprite-loader
|
|
||||||
config.module.rule('svg').exclude.add(resolve('src/assets/icons')).end()
|
|
||||||
config.module
|
|
||||||
.rule('icons')
|
|
||||||
.test(/\.svg$/)
|
|
||||||
.include.add(resolve('src/assets/icons'))
|
|
||||||
.end()
|
|
||||||
.use('svg-sprite-loader')
|
|
||||||
.loader('svg-sprite-loader')
|
|
||||||
.options({
|
|
||||||
symbolId: 'icon-[name]',
|
|
||||||
})
|
|
||||||
.end()
|
|
||||||
|
|
||||||
config.when(process.env.NODE_ENV !== 'development', config => {
|
|
||||||
config
|
|
||||||
.plugin('ScriptExtHtmlWebpackPlugin')
|
|
||||||
.after('html')
|
|
||||||
.use('script-ext-html-webpack-plugin', [
|
|
||||||
{
|
|
||||||
// `runtime` must same as runtimeChunk name. default is `runtime`
|
|
||||||
inline: /runtime\..*\.js$/,
|
|
||||||
},
|
|
||||||
])
|
|
||||||
.end()
|
|
||||||
|
|
||||||
config.optimization.splitChunks({
|
|
||||||
chunks: 'all',
|
|
||||||
cacheGroups: {
|
|
||||||
libs: {
|
|
||||||
name: 'chunk-libs',
|
|
||||||
test: /[\\/]node_modules[\\/]/,
|
|
||||||
priority: 10,
|
|
||||||
chunks: 'initial', // only package third parties that are initially dependent
|
|
||||||
},
|
|
||||||
elementUI: {
|
|
||||||
name: 'chunk-elementUI', // split elementUI into a single package
|
|
||||||
test: /[\\/]node_modules[\\/]_?element-ui(.*)/, // in order to adapt to cnpm
|
|
||||||
priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
|
|
||||||
},
|
|
||||||
commons: {
|
|
||||||
name: 'chunk-commons',
|
|
||||||
test: resolve('src/components'), // can customize your rules
|
|
||||||
minChunks: 3, // minimum common number
|
|
||||||
priority: 5,
|
|
||||||
reuseExistingChunk: true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
})
|
},
|
||||||
|
configureWebpack: {
|
||||||
|
name: name,
|
||||||
|
resolve: {
|
||||||
|
alias: {
|
||||||
|
'@': resolve('src'),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
// http://doc.ruoyi.vip/ruoyi-vue/other/faq.html#使用gzip解压缩静态文件
|
||||||
|
new CompressionPlugin({
|
||||||
|
cache: false, // 不启用文件缓存
|
||||||
|
test: /\.(js|css|html)?$/i, // 压缩文件格式
|
||||||
|
filename: '[path].gz[query]', // 压缩后的文件名
|
||||||
|
algorithm: 'gzip', // 使用gzip压缩
|
||||||
|
minRatio: 0.8, // 压缩率小于1才会压缩
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
chainWebpack(config) {
|
||||||
|
config.plugins.delete('preload') // TODO: need test
|
||||||
|
config.plugins.delete('prefetch') // TODO: need test
|
||||||
|
|
||||||
config.optimization.runtimeChunk('single'),
|
// set svg-sprite-loader
|
||||||
{
|
config.module.rule('svg').exclude.add(resolve('src/assets/icons')).end()
|
||||||
from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件
|
config.module
|
||||||
to: './', //到根目录下
|
.rule('icons')
|
||||||
}
|
.test(/\.svg$/)
|
||||||
})
|
.include.add(resolve('src/assets/icons'))
|
||||||
},
|
.end()
|
||||||
|
.use('svg-sprite-loader')
|
||||||
|
.loader('svg-sprite-loader')
|
||||||
|
.options({
|
||||||
|
symbolId: 'icon-[name]',
|
||||||
|
})
|
||||||
|
.end()
|
||||||
|
|
||||||
|
config.when(process.env.NODE_ENV !== 'development', (config) => {
|
||||||
|
config
|
||||||
|
.plugin('ScriptExtHtmlWebpackPlugin')
|
||||||
|
.after('html')
|
||||||
|
.use('script-ext-html-webpack-plugin', [
|
||||||
|
{
|
||||||
|
// `runtime` must same as runtimeChunk name. default is `runtime`
|
||||||
|
inline: /runtime\..*\.js$/,
|
||||||
|
},
|
||||||
|
])
|
||||||
|
.end()
|
||||||
|
|
||||||
|
config.optimization.splitChunks({
|
||||||
|
chunks: 'all',
|
||||||
|
cacheGroups: {
|
||||||
|
libs: {
|
||||||
|
name: 'chunk-libs',
|
||||||
|
test: /[\\/]node_modules[\\/]/,
|
||||||
|
priority: 10,
|
||||||
|
chunks: 'initial', // only package third parties that are initially dependent
|
||||||
|
},
|
||||||
|
elementUI: {
|
||||||
|
name: 'chunk-elementUI', // split elementUI into a single package
|
||||||
|
test: /[\\/]node_modules[\\/]_?element-ui(.*)/, // in order to adapt to cnpm
|
||||||
|
priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
|
||||||
|
},
|
||||||
|
commons: {
|
||||||
|
name: 'chunk-commons',
|
||||||
|
test: resolve('src/components'), // can customize your rules
|
||||||
|
minChunks: 3, // minimum common number
|
||||||
|
priority: 5,
|
||||||
|
reuseExistingChunk: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
config.optimization.runtimeChunk('single'),
|
||||||
|
{
|
||||||
|
from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件
|
||||||
|
to: './', //到根目录下
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue