190 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			190 lines
		
	
	
		
			6.8 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')
 | ||
| const WebpackAliyunOss = require('webpack-aliyun-oss')
 | ||
| const moment = require('moment')
 | ||
| var distDate = moment(new Date()).format('YYYY-MM-DD')
 | ||
| console.log(distDate)
 | ||
| function resolve(dir) {
 | ||
|   // eslint-disable-next-line no-undef
 | ||
|   return path.join(__dirname, dir)
 | ||
| }
 | ||
| 
 | ||
| const name = defaultSettings.title || 'IRCIS' // page title
 | ||
| 
 | ||
| // eslint-disable-next-line no-undef
 | ||
| module.exports = {
 | ||
|   publicPath: process.env.NODE_ENV === 'development' ? process.env.VUE_APP_BASE_PATH : `${process.env.VUE_FILE_PATH}${process.env.VUE_APP_OSS_PATH}${distDate}/`,
 | ||
|   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: {
 | ||
|       '/UploadHub': {
 | ||
|         // 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': ''
 | ||
|         }
 | ||
|       },
 | ||
|       '/IRaCISData': {
 | ||
|         target: 'http://123.56.94.154:8060/', // 国内测试环境2
 | ||
|         // target: 'http://123.56.181.144:7000',
 | ||
|         changeOrigin: true,
 | ||
|         pathRewrite: {
 | ||
|         }
 | ||
|       },
 | ||
|       '/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: ['.*']
 | ||
|         }
 | ||
|       ]),
 | ||
|       process.env.NODE_ENV === 'development' ? function() {} :
 | ||
|       new WebpackAliyunOss({
 | ||
|         from: ['./dist/**'],
 | ||
|         dist: process.env.VUE_APP_OSS_PATH + distDate,
 | ||
|         region: process.env.OSS_REGION,
 | ||
|         accessKeyId: process.env.OSS_ACCESS_KEY_ID,
 | ||
|         accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
 | ||
|         bucket: process.env.OSS_BUCKET,
 | ||
|         overwrite: true,
 | ||
|         setOssPath: filePath => {
 | ||
|           let index = filePath.lastIndexOf("dist");
 | ||
|           let Path = filePath.substring(index + 4, filePath.length);
 | ||
|           return Path.replace(/\\/g, "/");
 | ||
|         },
 | ||
|         setHeaders: filePath => {
 | ||
|           return {
 | ||
|             "Cache-Control": "max-age=31536000"
 | ||
|           };
 | ||
|         }
 | ||
|       })
 | ||
|       // 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.optimization.splitChunks({
 | ||
|     //   chunks: "initial",          //async异步代码分割 initial同步代码分割 all同步异步分割都开启
 | ||
|     //   minSize: 30000,         //字节 引入的文件大于30kb才进行分割
 | ||
|     //   //maxSize: 50000,         //50kb,尝试将大于50kb的文件拆分成n个50kb的文件
 | ||
|     //   minChunks: 1,           //模块至少使用次数
 | ||
|     //   maxAsyncRequests: 5,    //同时加载的模块数量最多是5个,只分割出同时引入的前5个文件
 | ||
|     //   maxInitialRequests: 3,  //首页加载的时候引入的文件最多3个
 | ||
|     //   automaticNameDelimiter: '~', //缓存组和生成文件名称之间的连接符
 | ||
|     //   name: true,                  //缓存组里面的filename生效,覆盖默认命名
 | ||
|     //   cacheGroups: { //缓存组,将所有加载模块放在缓存里面一起分割打包
 | ||
|     //     vendors: {  //自定义打包模块
 | ||
|     //       test: /[\\/]node_modules[\\/]/,
 | ||
|     //       priority: -10, //优先级,先打包到哪个组里面,值越大,优先级越高
 | ||
|     //       filename: 'vendors.js',
 | ||
|     //     },
 | ||
|     //     default: { //默认打包模块
 | ||
|     //       priority: -20,
 | ||
|     //       reuseExistingChunk: true, //模块嵌套引入时,判断是否复用已经被打包的模块
 | ||
|     //       filename: 'common.js'
 | ||
|     //     }
 | ||
|     //   }
 | ||
|     // })
 | ||
|     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()
 | ||
|   }
 | ||
| }
 |