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 +29 -17
- package/package.json +1 -1
- package/src/plugins/rspack.cjs +11 -11
- package/src/plugins/webpack.cjs +1 -1
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
|
-
|
|
107
|
+
### 开发模式
|
|
108
|
+
|
|
109
|
+
1. **资源下载** - 从远程服务器下载 EarthSDK3 所需的静态资源到 `node_modules/earthsdk3-assets/assets/`
|
|
107
110
|
2. **智能缓存** - 使用 MD5 校验,只下载变更的文件
|
|
108
|
-
3.
|
|
109
|
-
4.
|
|
110
|
-
|
|
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
|
-
│ │
|
|
125
|
+
│ │ ├── downloadAssets.js # ESM 版本资源下载核心逻辑
|
|
126
|
+
│ │ ├── downloadAssets.cjs # CommonJS 版本
|
|
127
|
+
│ │ ├── copyAssets.js # ESM 版本文件拷贝工具
|
|
128
|
+
│ │ └── copyAssets.cjs # CommonJS 版本
|
|
120
129
|
│ ├── plugins/
|
|
121
|
-
│ │ ├── vite.js
|
|
122
|
-
│ │ ├── webpack.
|
|
123
|
-
│ │ └── rspack.
|
|
124
|
-
│ ├── index.js
|
|
125
|
-
│
|
|
126
|
-
|
|
127
|
-
├──
|
|
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
|
|
143
|
-
- Vue CLI
|
|
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
package/src/plugins/rspack.cjs
CHANGED
|
@@ -56,7 +56,7 @@ class EarthsdkAssetsRspackPlugin {
|
|
|
56
56
|
tagName: 'script',
|
|
57
57
|
voidTag: false,
|
|
58
58
|
attributes: {
|
|
59
|
-
src: '
|
|
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
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
|
|
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 (
|
|
108
|
-
|
|
108
|
+
if (originalBefore) {
|
|
109
|
+
originalBefore(app, server, compiler);
|
|
109
110
|
}
|
|
110
|
-
return middlewares;
|
|
111
111
|
};
|
|
112
112
|
}
|
|
113
113
|
});
|
package/src/plugins/webpack.cjs
CHANGED