Newer
Older
ganzhou-mars3d / vue.config.js
const path = require('path')
const webpack = require('webpack')
const CopyWebpackPlugin = require('copy-webpack-plugin')

module.exports = {
  publicPath: './',
  assetsDir: 'static',
  outputDir: 'dist',
  lintOnSave: true, // 是否开启eslint
  productionSourceMap: false, // 不需要生产环境的 source map
  filenameHashing: true, // 文件名哈希
  // 它支持webPack-dev-server的所有选项
  devServer: {
    host: 'localhost', // 也可以直接写IP地址这样方便真机测试
    port: 3001, // 端口号
    open: true // 配置自动启动浏览器
  },
  configureWebpack: (config) => {
    if (process.env.VUE_APP_MARS3D_SOURCE === 'module') {
      const cesiumSourcePath = 'node_modules/mars3d-cesium/Build/Cesium/' // cesium库安装目录
      const cesiumRunPath = './mars3d-cesium/' // cesium运行时路径

      let plugins = [
        // 标识cesium资源所在的主目录,cesium内部资源加载、多线程等处理时需要用到
        new webpack.DefinePlugin({
          CESIUM_BASE_URL: JSON.stringify(path.join(config.output.publicPath, cesiumRunPath))
        }),
        // Cesium相关资源目录需要拷贝到系统目录下面(部分CopyWebpackPlugin版本的语法可能没有patterns)
        new CopyWebpackPlugin({
          patterns: [
            { from: path.join(cesiumSourcePath, 'Workers'), to: path.join(config.output.path, cesiumRunPath, 'Workers') },
            { from: path.join(cesiumSourcePath, 'Assets'), to: path.join(config.output.path, cesiumRunPath, 'Assets') },
            { from: path.join(cesiumSourcePath, 'ThirdParty'), to: path.join(config.output.path, cesiumRunPath, 'ThirdParty') },
            { from: path.join(cesiumSourcePath, 'Widgets'), to: path.join(config.output.path, cesiumRunPath, 'Widgets') }
          ]
        })
      ]
      return {
        module: { unknownContextCritical: false }, // 配置加载的模块类型,cesium时必须配置
        plugins: plugins
      }
    } else {
      return {
        externals: { 'mars3d-cesium': 'Cesium' } //排除使用 mars3d-cesium
      }
    }
  }
}