166 lines
4.3 KiB
JavaScript
166 lines
4.3 KiB
JavaScript
|
|
/**
|
|||
|
|
* @Author: Caven
|
|||
|
|
* @Date: 2018-12-15 00:33:19
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
'use strict'
|
|||
|
|
const path = require('path')
|
|||
|
|
|
|||
|
|
const CopyWebpackPlugin = require('copy-webpack-plugin')
|
|||
|
|
const CompressionPlugin = require('compression-webpack-plugin')
|
|||
|
|
const dtSdk = './node_modules/dt-sdk'
|
|||
|
|
|
|||
|
|
let resolve = dir => {
|
|||
|
|
return path.resolve(__dirname, dir)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
module.exports = {
|
|||
|
|
lintOnSave: false,
|
|||
|
|
publicPath: './',
|
|||
|
|
productionSourceMap: false,
|
|||
|
|
configureWebpack: {
|
|||
|
|
module: {
|
|||
|
|
unknownContextCritical: false
|
|||
|
|
},
|
|||
|
|
resolve: {
|
|||
|
|
alias: {
|
|||
|
|
'@': resolve('src'),
|
|||
|
|
'@public': resolve('public')
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
performance: {
|
|||
|
|
hints: false
|
|||
|
|
},
|
|||
|
|
// optimization:{
|
|||
|
|
// runtimeChunk: 'single',
|
|||
|
|
// // 分离 js
|
|||
|
|
// splitChunks: {
|
|||
|
|
// chunks: 'all',
|
|||
|
|
// maxInitialRequests: Infinity,
|
|||
|
|
// minSize: 20000,
|
|||
|
|
// cacheGroups: {
|
|||
|
|
// vendor: {
|
|||
|
|
// test: /[\\/]node_modules[\\/]/,
|
|||
|
|
// name (module) {
|
|||
|
|
// // get the name. E.g. node_modules/packageName/not/this/part.js
|
|||
|
|
// // or node_modules/packageName
|
|||
|
|
// const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1]
|
|||
|
|
// // npm package names are URL-safe, but some servers don't like @ symbols
|
|||
|
|
// return `npm.${packageName.replace('@', '')}`
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// },
|
|||
|
|
plugins: [
|
|||
|
|
// // 压缩成 .gz 文件
|
|||
|
|
new CompressionPlugin({
|
|||
|
|
filename: '[path][base].gz',
|
|||
|
|
algorithm: 'gzip',
|
|||
|
|
test: /\.js$|\.css$|\.html$/,
|
|||
|
|
threshold: 10240,
|
|||
|
|
minRatio: 0.8
|
|||
|
|
})
|
|||
|
|
// 压缩成 .br 文件,如果 zlib 报错无法解决,可以注释这段使用代码,一般本地没问题,需要注意线上服务器会可能发生找不到 zlib 的情况。
|
|||
|
|
// new CompressionPlugin({
|
|||
|
|
// filename: '[path][base].br',
|
|||
|
|
// algorithm: 'brotliCompress',
|
|||
|
|
// test: /\.(js|css|html|svg)$/,
|
|||
|
|
// compressionOptions: {
|
|||
|
|
// params: {
|
|||
|
|
// [zlib.constants.BROTLI_PARAM_QUALITY]: 11
|
|||
|
|
// }
|
|||
|
|
// },
|
|||
|
|
// threshold: 10240,
|
|||
|
|
// minRatio: 0.8
|
|||
|
|
// })
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
chainWebpack: config => {
|
|||
|
|
config.resolve.extensions
|
|||
|
|
.add('.js')
|
|||
|
|
.add('.vue')
|
|||
|
|
.end()
|
|||
|
|
|
|||
|
|
config.module
|
|||
|
|
.rule('images')
|
|||
|
|
.test(/\.(png|jpe?g|gif)(\?.*)?$/)
|
|||
|
|
.use('url-loader')
|
|||
|
|
.loader('url-loader')
|
|||
|
|
.options({
|
|||
|
|
name: 'images/[name].[ext]',
|
|||
|
|
limit: 10000,
|
|||
|
|
esModule: false
|
|||
|
|
})
|
|||
|
|
.end()
|
|||
|
|
|
|||
|
|
config.module
|
|||
|
|
.rule('fonts')
|
|||
|
|
.test(/\.(eot|ttf|woff|woff2)(\?.*)?$/)
|
|||
|
|
.use('url-loader')
|
|||
|
|
.loader('url-loader')
|
|||
|
|
.options({
|
|||
|
|
name: 'fonts/[name].[ext]',
|
|||
|
|
limit: 10000
|
|||
|
|
})
|
|||
|
|
.end()
|
|||
|
|
|
|||
|
|
config.module
|
|||
|
|
.rule('svg')
|
|||
|
|
.exclude.add(resolve('src/assets/svg/icons'))
|
|||
|
|
.end()
|
|||
|
|
|
|||
|
|
config.module
|
|||
|
|
.rule('icons')
|
|||
|
|
.test(/\.svg$/)
|
|||
|
|
.include.add(resolve('src/assets/svg/icons'))
|
|||
|
|
.end()
|
|||
|
|
.use('svg-sprite-loader')
|
|||
|
|
.loader('svg-sprite-loader')
|
|||
|
|
.options({
|
|||
|
|
symbolId: 'icon-[name]'
|
|||
|
|
})
|
|||
|
|
.end()
|
|||
|
|
|
|||
|
|
config.plugin('copy').use(CopyWebpackPlugin, [
|
|||
|
|
[
|
|||
|
|
{
|
|||
|
|
from: path.join(__dirname, 'public'),
|
|||
|
|
to: path.join(__dirname, 'dist'),
|
|||
|
|
ignore: ['index.html']
|
|||
|
|
},
|
|||
|
|
{ from: path.join(dtSdk, 'library/Workers'), to: 'Workers' },
|
|||
|
|
{ from: path.join(dtSdk, 'library/ThirdParty'), to: 'ThirdParty' },
|
|||
|
|
{ from: path.join(dtSdk, 'library/Assets'), to: 'Assets' },
|
|||
|
|
{ from: path.join(dtSdk, 'library/Widgets'), to: 'Widgets' }
|
|||
|
|
]
|
|||
|
|
])
|
|||
|
|
|
|||
|
|
config.plugin('define').tap(args => {
|
|||
|
|
args[0].CESIUM_BASE_URL = JSON.stringify('')
|
|||
|
|
return args
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
devServer: {
|
|||
|
|
open: true
|
|||
|
|
},
|
|||
|
|
css: {
|
|||
|
|
loaderOptions: {
|
|||
|
|
postcss: {
|
|||
|
|
// plugins: [
|
|||
|
|
// require('postcss-pxtorem')({
|
|||
|
|
// rootValue: 192, // 正常适配
|
|||
|
|
// // rootValue: 280, // 3840 * 2160
|
|||
|
|
// propList: ['*'], // 可以从px更改为rem的属性
|
|||
|
|
// selectorBlackList: [
|
|||
|
|
// // 匹配不被转换为rem的选择器
|
|||
|
|
// 'super-cesium-timeline-icon16'
|
|||
|
|
// // 'card-position'
|
|||
|
|
// ]
|
|||
|
|
// })
|
|||
|
|
// ]
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|