| 
                        123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 | 
                        - /*
 -  * @Author: Caven
 -  * @Date: 2020-01-18 18:22:23
 -  * @Last Modified by: Caven
 -  * @Last Modified time: 2020-07-27 10:39:55
 -  */
 - 
 - const path = require('path')
 - const webpack = require('webpack')
 - const MiniCssExtractPlugin = require('mini-css-extract-plugin')
 - const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin')
 - const CopywebpackPlugin = require('copy-webpack-plugin')
 - const JavaScriptObfuscator = require('webpack-obfuscator')
 - 
 - const cesiumBuild = 'node_modules/cesium/Build/Cesium'
 - 
 - let cesiumCopyPlugin = [
 -   new CopywebpackPlugin([
 -     { from: path.join(cesiumBuild, 'Assets'), to: 'resources/Assets' }
 -   ]),
 -   new CopywebpackPlugin([
 -     { from: path.join(cesiumBuild, 'Workers'), to: 'resources/Workers' }
 -   ]),
 -   new CopywebpackPlugin([
 -     { from: path.join(cesiumBuild, 'ThirdParty'), to: 'resources/ThirdParty' }
 -   ])
 - ]
 - 
 - function resolve(dir) {
 -   return path.join(__dirname, '.', dir)
 - }
 - 
 - module.exports = env => {
 -   const IS_PROD = (env && env.production) || false
 -   const publicPath = IS_PROD ? '/' : '/'
 -   let plugins = [
 -     ...cesiumCopyPlugin,
 -     new MiniCssExtractPlugin({
 -       filename: IS_PROD ? '[name].min.css' : '[name].css',
 -       allChunks: true
 -     }),
 -     new webpack.DefinePlugin({
 -       CESIUM_BASE_URL: JSON.stringify('./libs/dc-sdk/resources/')
 -     })
 -   ]
 -   if (IS_PROD) {
 -     plugins.push(new OptimizeCssAssetsPlugin())
 -     plugins.push(new webpack.NoEmitOnErrorsPlugin())
 -     plugins.push(
 -       new JavaScriptObfuscator(
 -         {
 -           rotateStringArray: true
 -         },
 -         ['dc.base.min.js']
 -       )
 -     )
 -   }
 -   return {
 -     entry: {
 -       'dc.base': ['base'],
 -       'dc.core': ['entry', 'theme']
 -     },
 -     devtool: IS_PROD ? false : 'cheap-module-eval-source-map',
 -     output: {
 -       filename: IS_PROD ? '[name].min.js' : '[name].js',
 -       path: path.resolve(__dirname, 'dist'),
 -       publicPath: publicPath,
 -       sourcePrefix: ''
 -     },
 -     amd: {
 -       toUrlUndefined: true
 -     },
 -     node: {
 -       fs: 'empty'
 -     },
 -     module: {
 -       unknownContextCritical: false,
 -       rules: [
 -         {
 -           test: /\.js$/,
 -           exclude: /node_modules/,
 -           loader: 'babel-loader',
 -           options: {
 -             presets: ['@babel/preset-env'],
 -             plugins: ['@babel/transform-runtime'],
 -             compact: false,
 -             ignore: ['checkTree']
 -           }
 -         },
 -         {
 -           test: /\.css$/,
 -           use: [
 -             MiniCssExtractPlugin.loader,
 -             {
 -               loader: 'css-loader'
 -             },
 -             {
 -               loader: 'sass-loader'
 -             }
 -           ]
 -         },
 -         {
 -           test: /\.scss$/,
 -           use: [
 -             MiniCssExtractPlugin.loader,
 -             {
 -               loader: 'css-loader'
 -             },
 -             {
 -               loader: 'sass-loader'
 -             }
 -           ]
 -         },
 -         {
 -           test: /\.(png|jpg|gif|svg|eot|ttf|woff|woff2)$/,
 -           loader: 'url-loader',
 -           options: {
 -             limit: 20000
 -           }
 -         },
 -         {
 -           test: /\.glsl$/,
 -           loader: 'webpack-glsl-loader'
 -         }
 -       ]
 -     },
 -     resolve: {
 -       extensions: ['.js', '.json', '.css'],
 -       alias: {
 -         '@': resolve('src'),
 -         base: './src/base/index.js',
 -         entry: './src/core/index.js',
 -         theme: './src/themes/index.js',
 -         cesium: path.resolve(__dirname, cesiumBuild)
 -       }
 -     },
 -     plugins
 -   }
 - }
 
 
  |