earthsdk3-assets 3.0.26 → 3.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -16,6 +16,7 @@ npm install earthsdk3-assets
16
16
  - 🚀 **支持 Rspack** - 字节跳动出品,Webpack API 兼容
17
17
  - 💾 **增量下载** - 智能缓存,只下载变更资源
18
18
  - 🎯 **零配置** - 开箱即用,自动注入脚本
19
+ - 📁 **不污染项目** - 开发模式不创建物理文件
19
20
 
20
21
  ## 使用方法
21
22
 
@@ -103,11 +104,17 @@ const earthsdkAssets = require('earthsdk3-assets/rspack');
103
104
 
104
105
  ## 工作原理
105
106
 
106
- 1. **资源下载** - 从远程服务器下载 EarthSDK3 所需的静态资源(图片、模型等)
107
+ ### 开发模式
108
+
109
+ 1. **资源下载** - 从远程服务器下载 EarthSDK3 所需的静态资源到 `node_modules/earthsdk3-assets/assets/`
107
110
  2. **智能缓存** - 使用 MD5 校验,只下载变更的文件
108
- 3. **Dev Server** - 开发模式下提供 `/js` 路径的资源服务
109
- 4. **产物拷贝** - 构建时将资源拷贝到 `dist/js` 目录
110
- 5. **HTML 注入** - 自动在 HTML 中注入 `<script src="/js/earthsdk3-assets.js">`
111
+ 3. **虚拟路径服务** - 开发服务器提供 `/js/earthsdk3-assets/*` 路径的资源服务,不创建物理文件
112
+ 4. **HTML 注入** - 自动在 HTML 中注入 `<script src="js/earthsdk3-assets/earthsdk3-assets.js">`
113
+
114
+ ### 生产模式
115
+
116
+ 1. **资源拷贝** - 构建时将资源拷贝到 `dist/js/earthsdk3-assets/` 目录
117
+ 2. **HTML 注入** - 自动在 HTML 中注入脚本引用
111
118
 
112
119
  ## 目录结构
113
120
 
@@ -115,16 +122,19 @@ const earthsdkAssets = require('earthsdk3-assets/rspack');
115
122
  earthsdk3-assets/
116
123
  ├── src/
117
124
  │ ├── core/
118
- │ │ ├── downloadAssets.js # 资源下载核心逻辑
119
- │ │ └── copyAssets.js # 文件拷贝工具
125
+ │ │ ├── downloadAssets.js # ESM 版本资源下载核心逻辑
126
+ │ │ ├── downloadAssets.cjs # CommonJS 版本
127
+ │ │ ├── copyAssets.js # ESM 版本文件拷贝工具
128
+ │ │ └── copyAssets.cjs # CommonJS 版本
120
129
  │ ├── plugins/
121
- │ │ ├── vite.js # Vite 插件
122
- │ │ ├── webpack.js # Webpack 插件
123
- │ │ └── rspack.js # Rspack 插件
124
- │ ├── index.js # ESM 入口(自动检测)
125
- └── index.cjs # CommonJS 入口
126
- ├── assets/ # 下载的静态资源
127
- ├── earthsdk3-assets.js # 资源加载器脚本
130
+ │ │ ├── vite.js # Vite 插件 (ESM)
131
+ │ │ ├── webpack.cjs # Webpack 插件 (CommonJS)
132
+ │ │ └── rspack.cjs # Rspack 插件 (CommonJS)
133
+ │ ├── index.js # ESM 入口(自动检测)
134
+ ├── index.cjs # CommonJS 入口
135
+ │ └── index.d.ts # TypeScript 类型声明
136
+ ├── assets/ # 下载的静态资源
137
+ ├── earthsdk3-assets.js # 资源加载器脚本
128
138
  └── package.json
129
139
  ```
130
140
 
@@ -139,10 +149,12 @@ earthsdk3-assets/
139
149
 
140
150
  ## 注意事项
141
151
 
142
- - Webpack/Rspack 项目需要安装 `html-webpack-plugin` 或 `@rspack/plugin-html` 以支持 HTML 脚本注入
143
- - Vue CLI 项目内置 `html-webpack-plugin`,无需额外安装
144
- - 所有构建工具插件均为可选依赖,未使用的构建工具不会引起报错
152
+ - **Webpack/Rspack 项目**需要安装 `html-webpack-plugin` 或 `@rspack/plugin-html` 以支持 HTML 脚本注入
153
+ - **Vue CLI 项目**内置 `html-webpack-plugin`,无需额外安装
154
+ - **所有构建工具插件均为可选依赖**,未使用的构建工具不会引起报错
155
+ - **开发模式**下资源通过虚拟路径访问,不创建物理文件到项目目录
156
+ - **生产模式**下资源会拷贝到构建输出目录
145
157
 
146
158
  ## 许可证
147
159
 
148
- ISC
160
+ ISC
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "earthsdk3-assets",
3
- "version": "3.0.26",
3
+ "version": "3.0.27",
4
4
  "description": "地球可视化实验室 (EarthSDK&CesiumLab) https://www.bjxbsj.cn",
5
5
  "private": false,
6
6
  "type": "module",
@@ -56,7 +56,7 @@ class EarthsdkAssetsRspackPlugin {
56
56
  tagName: 'script',
57
57
  voidTag: false,
58
58
  attributes: {
59
- src: '/js/earthsdk3-assets/earthsdk3-assets.js'
59
+ src: 'js/earthsdk3-assets/earthsdk3-assets.js'
60
60
  },
61
61
  meta: { plugin: 'earthsdk-assets' }
62
62
  });
@@ -75,13 +75,14 @@ class EarthsdkAssetsRspackPlugin {
75
75
  compiler.hooks.afterEnvironment.tap('EarthsdkAssetsRspackPlugin', () => {
76
76
  const devServer = compiler.options.devServer;
77
77
  if (devServer) {
78
- const originalSetup = devServer.setupMiddlewares;
79
- devServer.setupMiddlewares = (middlewares, devServer) => {
80
- devServer.app.use('/js/earthsdk3-assets', (req, res, next) => {
81
- const urlPath = decodeURIComponent(req.url);
82
- const filePath = urlPath === '/'
83
- ? path.join(ROOT_DIR, 'earthsdk3-assets.js')
84
- : path.join(ROOT_DIR, urlPath.slice(1));
78
+ const originalBefore = devServer.before;
79
+
80
+ devServer.before = (app, server, compiler) => {
81
+ app.use('/js/earthsdk3-assets', (req, res, next) => {
82
+ const urlPath = decodeURIComponent(req.originalUrl);
83
+ const relativePath = urlPath.replace('/js/earthsdk3-assets', '');
84
+ const fileName = relativePath === '/' || relativePath === '' ? 'earthsdk3-assets.js' : relativePath.slice(1);
85
+ const filePath = path.join(ROOT_DIR, fileName);
85
86
 
86
87
  if (!fs.existsSync(filePath)) {
87
88
  return next();
@@ -104,10 +105,9 @@ class EarthsdkAssetsRspackPlugin {
104
105
  fs.createReadStream(filePath).pipe(res);
105
106
  });
106
107
 
107
- if (originalSetup) {
108
- return originalSetup(middlewares, devServer);
108
+ if (originalBefore) {
109
+ originalBefore(app, server, compiler);
109
110
  }
110
- return middlewares;
111
111
  };
112
112
  }
113
113
  });
@@ -46,7 +46,7 @@ class EarthsdkAssetsWebpackPlugin {
46
46
  tagName: 'script',
47
47
  voidTag: false,
48
48
  attributes: {
49
- src: '/js/earthsdk3-assets/earthsdk3-assets.js'
49
+ src: 'js/earthsdk3-assets/earthsdk3-assets.js'
50
50
  },
51
51
  meta: { plugin: 'earthsdk-assets' }
52
52
  });