vue20项目集成Cesium

51次阅读

共计 3391 个字符,预计需要花费 9 分钟才能阅读完成。

安装 cesium

在已有项目中执行,

npm i cesium

修改配置

build/webpack.base.conf.js

1、定义 Cesium 源码路径
const cesiumSource = ‘../node_modules/cesium/Source’

'use strict'
const path = require('path')
const utils = require('./utils')
const config = require('../config')
const vueLoaderConfig = require('./vue-loader.conf')
//--cesium-- 配置
const cesiumSource = '../node_modules/cesium/Source';  

2、在 output 里加入 sourcePrefix: ‘ ‘ 让 webpack 正确处理多行字符串
3、配置 amd 参数
4、module 中在 rules 后添加 unknownContextCritical: false,

module.exports = {context: path.resolve(__dirname, '../'),
    entry: {app: ["babel-polyfill", './src/main.js']
    },
    output: {
        path: config.build.assetsRoot,
        filename: '[name].js',
        publicPath: process.env.NODE_ENV === 'production' ?
            config.build.assetsPublicPath : config.dev.assetsPublicPath,
        //--cesium-- 配置 ------------------------------------
        sourcePrefix: ' '
    },
    //--cesium-- 配置 ----------------------------------------
    amd:{toUrlUndefined: true},
    resolve: {extensions: ['.js', '.vue', '.json'],
        alias: {
            'vue$': 'vue/dist/vue.esm.js',
            '@': resolve('src'),
            //--cesium-- 配置
            'cesium': path.resolve(__dirname, cesiumSource)
        }
    },
    module: {
        rules: [...],
        //--cesium-- 配置 -------------------------------------
        //unknownContextRegExp: /^.\/.*$/
        unknownContextCritical: false,
    }
}

build/webpack.dev.conf.js

1、定义 Cesium 源码路径和 Cesium Workers 路径

const cesiumSource = 'node_modules/cesium/Source'
const cesiumWorkers = '../Build/Cesium/Workers' 

(注意这里的 node_modules 与 webpack.base.conf.js 的不同,前面没有../)
2、定义 CESIUM_BASE_URL 变量
3、在 plugins 中加入下面插件, 拷贝静态资源

plugins: [
    new webpack.DefinePlugin({'process.env': require('../config/dev.env'),
      //--cesium-- 配置 -------------------------------------------
      'CESIUM_BASE_URL': JSON.stringify('') 
    }),
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
    new webpack.NoEmitOnErrorsPlugin(),
    // https://github.com/ampedandwired/html-webpack-plugin
    new HtmlWebpackPlugin({
      filename: 'index.html',
      template: 'index.html',
      inject: true
    }),
    //--cesium-- 配置 ---------------------------------------------
    new CopyWebpackPlugin([{ from: path.join(cesiumSource, cesiumWorkers), to: 'Workers' } ]),     //flag
    new CopyWebpackPlugin([{ from: path.join(cesiumSource, 'Assets'), to: 'Assets' } ]),
    new CopyWebpackPlugin([{ from: path.join(cesiumSource, 'Widgets'), to: 'Widgets' } ]),
    new CopyWebpackPlugin([{ from: path.join(cesiumSource, 'ThirdParty/Workers'), to: 'ThirdParty/Workers' } ]),
    new CopyWebpackPlugin([{ from: 'ThirdParty', to: 'ThirdParty'} ]),

    // copy custom static assets
    new CopyWebpackPlugin([
      {from: path.resolve(__dirname, '../static'),
        to: config.dev.assetsSubDirectory,
        ignore: ['.*']
      }
    ])
  ]

build/webpack.prod.conf.js

1、定义

  const cesiumSource = 'node_modules/cesium/Source';
  const cesiumWorkers = '../Build/Cesium/Workers';

2、定义 ’CESIUM_BASE_URL’ 变量
3、在 plugins 中加入下面插件, 拷贝静态资源

plugins: [
    // http://vuejs.github.io/vue-loader/en/workflow/production.html
    new webpack.DefinePlugin({
      'process.env': env,
      //--cesium-- 配置 --------------------------------------
      'CESIUM_BASE_URL': JSON.stringify('static')
    }),
    ...
    new HtmlWebpackPlugin({...},
    //--cesium-- 配置 --------------------------------------
    new CopyWebpackPlugin([{ from: path.join(cesiumSource, cesiumWorkers), to: 'static/Workers' } ]),//flag
    new CopyWebpackPlugin([{ from: path.join(cesiumSource, 'Assets'), to: 'static/Assets' } ]),
    new CopyWebpackPlugin([{ from: path.join(cesiumSource, 'Widgets'), to: 'static/Widgets' } ]),
    new CopyWebpackPlugin([{ from: path.join(cesiumSource, 'ThirdParty/Workers'), to: 'ThirdParty/Workers' } ]),
    new CopyWebpackPlugin([{ from: 'ThirdParty', to: 'ThirdParty'} ]),
    ...

ThirdParty

在项目根目录新建文件夹 ThirdParty,放入 draco_decoder.wasm 文件,在加载 gltf 模型文件需要用到

正文完
 0