138 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			4.2 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: {
 | 
						|
      '/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': ''
 | 
						|
        }
 | 
						|
      },
 | 
						|
      '/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()
 | 
						|
  }
 | 
						|
}
 |