vue.config.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. const { defineConfig } = require("@vue/cli-service");
  2. const path = require("path");
  3. const webpack = require("webpack");
  4. const CopyWebpackPlugin = require("copy-webpack-plugin");
  5. const NodePolyfillPlugin = require("node-polyfill-webpack-plugin");
  6. module.exports = defineConfig({
  7. transpileDependencies: true,
  8. publicPath: "/",
  9. assetsDir: "static",
  10. outputDir: "dist",
  11. lintOnSave: false, // 是否开启eslint
  12. productionSourceMap: false, // 生产环境是否生成sourceMap
  13. filenameHashing: true, // 文件名哈希
  14. configureWebpack: (config) => {
  15. if (process.env.VUE_APP_MARS3D_SOURCE === "module") {
  16. const cesiumSourcePath = "node_modules/mars3d-cesium/Build/Cesium/"; // cesium库安装目录
  17. const cesiumRunPath = "./mars3d-cesium/"; // cesium运行时路径
  18. let plugins = [
  19. // 标识cesium资源所在的主目录,cesium内部资源加载、多线程等处理时需要用到
  20. new webpack.DefinePlugin({
  21. CESIUM_BASE_URL: JSON.stringify(path.join(config.output.publicPath, cesiumRunPath)),
  22. }),
  23. // Cesium相关资源目录需要拷贝到系统目录下面(部分CopyWebpackPlugin版本的语法可能没有patterns)
  24. new CopyWebpackPlugin({
  25. patterns: [
  26. { from: path.join(cesiumSourcePath, "Workers"), to: path.join(config.output.path, cesiumRunPath, "Workers") },
  27. { from: path.join(cesiumSourcePath, "Assets"), to: path.join(config.output.path, cesiumRunPath, "Assets") },
  28. { from: path.join(cesiumSourcePath, "ThirdParty"), to: path.join(config.output.path, cesiumRunPath, "ThirdParty") },
  29. { from: path.join(cesiumSourcePath, "Widgets"), to: path.join(config.output.path, cesiumRunPath, "Widgets") },
  30. ],
  31. }),
  32. new NodePolyfillPlugin(),
  33. ];
  34. return {
  35. module: { unknownContextCritical: false }, // 配置加载的模块类型,cesium时必须配置
  36. plugins: plugins,
  37. };
  38. } else {
  39. return {
  40. externals: { "mars3d-cesium": "Cesium" }, //排除使用 mars3d-cesium
  41. };
  42. }
  43. },
  44. devServer: {
  45. client: { overlay: false },
  46. host: "0.0.0.0", // 也可以直接写IP地址这样方便真机测试
  47. port: 3000, // 端口号
  48. open: false, // 配置自动启动浏览器
  49. },
  50. css: {
  51. // 启用 CSS modules
  52. // requireModuleExtension: false,
  53. // 是否使用css分离插件
  54. extract: false,
  55. // 开启 CSS source maps,一般不建议开启
  56. sourceMap: false,
  57. // css预设器配置项
  58. loaderOptions: {
  59. sass: {
  60. additionalData: '@import "mars3d-cesium/Build/Cesium/Widgets/widgets.css"; @import "@/assets/scss/index.scss";',
  61. },
  62. },
  63. },
  64. });