124 lines
3.6 KiB
Plaintext
124 lines
3.6 KiB
Plaintext
'use strict'
|
|
// eslint-disable-next-line no-undef
|
|
const path = require('path')
|
|
// eslint-disable-next-line no-undef
|
|
const defaultSettings = require('./src/settings.js')
|
|
const CopyPlugin = require('copy-webpack-plugin')
|
|
function resolve(dir) {
|
|
// eslint-disable-next-line no-undef
|
|
return path.join(__dirname, dir)
|
|
}
|
|
|
|
const name = defaultSettings.title || 'IRaCIS' // page title
|
|
// eslint-disable-next-line no-undef
|
|
module.exports = {
|
|
publicPath: '/',
|
|
outputDir: 'dist',
|
|
assetsDir: 'static',
|
|
productionSourceMap: false,
|
|
devServer: {
|
|
port: '8080',
|
|
headers: {
|
|
'Cross-Origin-Opener-Policy': 'same-origin',
|
|
'Cross-Origin-Embedder-Policy': 'require-corp'
|
|
},
|
|
// open: true,
|
|
overlay: {
|
|
warnings: false,
|
|
errors: true
|
|
},
|
|
proxy: {
|
|
'/api': {
|
|
// target: 'http://47.90.210.20:8000', //美国服务器
|
|
// target: 'http://123.56.181.144:8001', // 国内生产环境
|
|
// target: 'http://123.56.181.144:8060/api', // 国内测试环境1
|
|
// target: 'http://123.56.181.144:8000/api', // 国内测试环境
|
|
// target: 'http://123.56.94.154:8079', // 国内测试环境2
|
|
target: 'http://123.56.94.154:7000', // 国内测试环境2
|
|
// target: 'http://123.56.181.144:7000',
|
|
changeOrigin: true,
|
|
secure: false,
|
|
pathRewrite: {
|
|
'^/api': ''
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
configureWebpack: {
|
|
name: name,
|
|
output: {
|
|
filename: `static/js/[name].[hash].js`,
|
|
chunkFilename: `static/js/[name].[hash].js`
|
|
},
|
|
plugins: [
|
|
new CopyPlugin([
|
|
{ from: './node_modules/cornerstone-wado-image-loader/dist/cornerstoneWADOImageLoaderWebWorker.min.js', to: 'webWorker.js' },
|
|
{ from: './node_modules/cornerstone-wado-image-loader/dist/cornerstoneWADOImageLoader.min.js', to: 'dicomCodecs.js' },
|
|
{ from: './node_modules/@ffmpeg/core/dist/ffmpeg-core.js', to: 'ffmpeg-core.js' },
|
|
{ from: './node_modules/@ffmpeg/core/dist/ffmpeg-core.wasm', to: 'ffmpeg-core.wasm' },
|
|
{ from: './node_modules/@ffmpeg/core/dist/ffmpeg-core.worker.js', to: 'ffmpeg-core.worker.js' },
|
|
{
|
|
from: path.resolve(__dirname, './static'),
|
|
to: path.resolve(__dirname, './dist/static'),
|
|
ignore: ['.*']
|
|
}
|
|
|
|
])
|
|
// new OfflinePlugin({})
|
|
],
|
|
performance: {
|
|
hints: 'warning',
|
|
// 入口起点的最大体积
|
|
maxEntrypointSize: 5000000000,
|
|
// 生成文件的最大体积
|
|
maxAssetSize: 3000000000,
|
|
// 只给出js的性能提示
|
|
assetFilter: function(assetFileName) {
|
|
return assetFileName.endsWith('.js')
|
|
}
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
'@': resolve('src'),
|
|
'modules': resolve('node_modules'),
|
|
'utils': resolve('src/utils')
|
|
}
|
|
}
|
|
|
|
},
|
|
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/icons'))
|
|
.add(resolve('src/assets/icons'))
|
|
.end()
|
|
config.module
|
|
.rule('icons')
|
|
.test(/\.svg$/)
|
|
.include.add(resolve('src/icons'))
|
|
.add(resolve('src/assets/icons'))
|
|
.end()
|
|
.use('svg-sprite-loader')
|
|
.loader('svg-sprite-loader')
|
|
.options({
|
|
symbolId: 'icon-[name]'
|
|
})
|
|
.end()
|
|
|
|
// set preserveWhitespace
|
|
config.module
|
|
.rule('vue')
|
|
.use('vue-loader')
|
|
.loader('vue-loader')
|
|
.tap(options => {
|
|
options.compilerOptions.preserveWhitespace = true
|
|
return options
|
|
})
|
|
.end()
|
|
}
|
|
}
|