earthsdk3-assets 3.0.14 → 3.0.15
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 +146 -16
- package/package.json +37 -5
- package/src/core/copyAssets.js +39 -0
- package/{earthsdk3Assets.js → src/core/downloadAssets.js} +291 -424
- package/src/index.cjs +102 -0
- package/src/index.js +108 -0
- package/src/plugins/rspack.js +130 -0
- package/src/plugins/vite.js +78 -0
- package/src/plugins/webpack.js +124 -0
package/README.md
CHANGED
|
@@ -1,16 +1,146 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
# EarthSDK3 Assets
|
|
2
|
+
|
|
3
|
+
EarthSDK3 资源管理插件,支持自动检测并适配 Vite、Webpack、Rspack 等主流构建工具。
|
|
4
|
+
|
|
5
|
+
## 安装
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install earthsdk3-assets
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 特性
|
|
12
|
+
|
|
13
|
+
- 🔍 **自动检测构建工具** - 根据项目依赖自动选择对应插件
|
|
14
|
+
- ⚡ **支持 Vite** - 原生 ESM,极速开发体验
|
|
15
|
+
- 📦 **支持 Webpack** - 兼容 Webpack 5.x
|
|
16
|
+
- 🚀 **支持 Rspack** - 字节跳动出品,Webpack API 兼容
|
|
17
|
+
- 💾 **增量下载** - 智能缓存,只下载变更资源
|
|
18
|
+
- 🎯 **零配置** - 开箱即用,自动注入脚本
|
|
19
|
+
|
|
20
|
+
## 使用方法
|
|
21
|
+
|
|
22
|
+
### 自动检测(推荐)
|
|
23
|
+
|
|
24
|
+
插件会自动检测你项目使用的构建工具:
|
|
25
|
+
|
|
26
|
+
#### Vite 项目
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
// vite.config.ts
|
|
30
|
+
import earthsdkAssets from 'earthsdk3-assets';
|
|
31
|
+
|
|
32
|
+
export default {
|
|
33
|
+
plugins: [
|
|
34
|
+
earthsdkAssets()
|
|
35
|
+
]
|
|
36
|
+
};
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
#### Webpack 项目
|
|
40
|
+
|
|
41
|
+
```javascript
|
|
42
|
+
// webpack.config.js
|
|
43
|
+
const earthsdkAssets = require('earthsdk3-assets');
|
|
44
|
+
|
|
45
|
+
module.exports = {
|
|
46
|
+
plugins: [
|
|
47
|
+
earthsdkAssets()
|
|
48
|
+
]
|
|
49
|
+
};
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
#### Rspack 项目
|
|
53
|
+
|
|
54
|
+
```javascript
|
|
55
|
+
// rspack.config.js
|
|
56
|
+
const earthsdkAssets = require('earthsdk3-assets');
|
|
57
|
+
|
|
58
|
+
module.exports = {
|
|
59
|
+
plugins: [
|
|
60
|
+
earthsdkAssets()
|
|
61
|
+
]
|
|
62
|
+
};
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 手动指定构建工具
|
|
66
|
+
|
|
67
|
+
如果自动检测失败,可以强制指定:
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
// Vite
|
|
71
|
+
import earthsdkAssets from 'earthsdk3-assets';
|
|
72
|
+
export default {
|
|
73
|
+
plugins: [earthsdkAssets({ forceTool: 'vite' })]
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
// Webpack
|
|
77
|
+
const earthsdkAssets = require('earthsdk3-assets');
|
|
78
|
+
module.exports = {
|
|
79
|
+
plugins: [earthsdkAssets({ forceTool: 'webpack' })]
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
// Rspack
|
|
83
|
+
const earthsdkAssets = require('earthsdk3-assets');
|
|
84
|
+
module.exports = {
|
|
85
|
+
plugins: [earthsdkAssets({ forceTool: 'rspack' })]
|
|
86
|
+
};
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 子路径导入
|
|
90
|
+
|
|
91
|
+
也可以直接导入特定构建工具的插件:
|
|
92
|
+
|
|
93
|
+
```typescript
|
|
94
|
+
// Vite
|
|
95
|
+
import earthsdkAssets from 'earthsdk3-assets/vite';
|
|
96
|
+
|
|
97
|
+
// Webpack
|
|
98
|
+
const earthsdkAssets = require('earthsdk3-assets/webpack');
|
|
99
|
+
|
|
100
|
+
// Rspack
|
|
101
|
+
const earthsdkAssets = require('earthsdk3-assets/rspack');
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## 工作原理
|
|
105
|
+
|
|
106
|
+
1. **资源下载** - 从远程服务器下载 EarthSDK3 所需的静态资源(图片、模型等)
|
|
107
|
+
2. **智能缓存** - 使用 MD5 校验,只下载变更的文件
|
|
108
|
+
3. **Dev Server** - 开发模式下提供 `/js` 路径的资源服务
|
|
109
|
+
4. **产物拷贝** - 构建时将资源拷贝到 `dist/js` 目录
|
|
110
|
+
5. **HTML 注入** - 自动在 HTML 中注入 `<script src="/js/earthsdk3-assets.js">`
|
|
111
|
+
|
|
112
|
+
## 目录结构
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
earthsdk3-assets/
|
|
116
|
+
├── src/
|
|
117
|
+
│ ├── core/
|
|
118
|
+
│ │ ├── downloadAssets.js # 资源下载核心逻辑
|
|
119
|
+
│ │ └── copyAssets.js # 文件拷贝工具
|
|
120
|
+
│ ├── 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 # 资源加载器脚本
|
|
128
|
+
└── package.json
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## 构建工具检测优先级
|
|
132
|
+
|
|
133
|
+
插件按以下顺序检测构建工具:
|
|
134
|
+
|
|
135
|
+
1. **Vite** - 检查 `vite` 依赖或 `vite.config.*` 文件
|
|
136
|
+
2. **Rspack** - 检查 `@rspack/core` 依赖或 `rspack.config.*` 文件
|
|
137
|
+
3. **Webpack** - 检查 `webpack` 依赖或 `webpack.config.*` 文件
|
|
138
|
+
|
|
139
|
+
## 注意事项
|
|
140
|
+
|
|
141
|
+
- Webpack/Rspack 项目需要安装 `html-webpack-plugin` 或 `@rspack/plugin-html` 以支持 HTML 脚本注入
|
|
142
|
+
- 所有构建工具插件均为可选依赖,未使用的构建工具不会引起报错
|
|
143
|
+
|
|
144
|
+
## 许可证
|
|
145
|
+
|
|
146
|
+
ISC
|
package/package.json
CHANGED
|
@@ -1,12 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "earthsdk3-assets",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.15",
|
|
4
4
|
"description": "地球可视化实验室 (EarthSDK&CesiumLab) https://www.bjxbsj.cn",
|
|
5
5
|
"private": false,
|
|
6
|
-
"
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./src/index.js",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./src/index.js",
|
|
11
|
+
"require": "./src/index.cjs"
|
|
12
|
+
},
|
|
13
|
+
"./vite": {
|
|
14
|
+
"import": "./src/plugins/vite.js"
|
|
15
|
+
},
|
|
16
|
+
"./webpack": {
|
|
17
|
+
"require": "./src/plugins/webpack.js"
|
|
18
|
+
},
|
|
19
|
+
"./rspack": {
|
|
20
|
+
"require": "./src/plugins/rspack.js"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
7
23
|
"files": [
|
|
24
|
+
"src/",
|
|
8
25
|
"earthsdk3-assets.js",
|
|
9
|
-
"earthsdk3Assets.js",
|
|
10
26
|
"package.json"
|
|
11
27
|
],
|
|
12
28
|
"scripts": {
|
|
@@ -17,5 +33,21 @@
|
|
|
17
33
|
"author": "suplyang",
|
|
18
34
|
"owner": "北京西部世界科技有限公司",
|
|
19
35
|
"homepage": "www.earthsdk.com",
|
|
20
|
-
"license": "ISC"
|
|
21
|
-
|
|
36
|
+
"license": "ISC",
|
|
37
|
+
"peerDependencies": {
|
|
38
|
+
"vite": ">=4.0.0",
|
|
39
|
+
"webpack": ">=5.0.0",
|
|
40
|
+
"@rspack/core": ">=0.5.0"
|
|
41
|
+
},
|
|
42
|
+
"peerDependenciesMeta": {
|
|
43
|
+
"vite": {
|
|
44
|
+
"optional": true
|
|
45
|
+
},
|
|
46
|
+
"webpack": {
|
|
47
|
+
"optional": true
|
|
48
|
+
},
|
|
49
|
+
"@rspack/core": {
|
|
50
|
+
"optional": true
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
|
|
4
|
+
const IGNORE_FILES = new Set(['.assets-version', '.assets-manifest.json']);
|
|
5
|
+
|
|
6
|
+
export function copyAssetsToDest(assetsDir, rootDir, outDir) {
|
|
7
|
+
const dest = path.join(outDir, 'js');
|
|
8
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
9
|
+
|
|
10
|
+
if (fs.existsSync(assetsDir)) {
|
|
11
|
+
fs.cpSync(assetsDir, path.join(dest, 'assets'), {
|
|
12
|
+
recursive: true,
|
|
13
|
+
filter(src) {
|
|
14
|
+
const baseName = path.basename(src);
|
|
15
|
+
if (IGNORE_FILES.has(baseName)) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
if (baseName.endsWith('.download') || baseName.endsWith('.tmp')) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const sdkSrc = path.join(rootDir, 'earthsdk3-assets.js');
|
|
27
|
+
if (fs.existsSync(sdkSrc)) {
|
|
28
|
+
fs.cpSync(sdkSrc, path.join(dest, 'earthsdk3-assets.js'));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
console.log('[earthsdk-assets] 资源已拷贝到:', dest);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function getAssetsPaths(rootDir) {
|
|
35
|
+
const assetsDir = path.resolve(rootDir, 'assets');
|
|
36
|
+
const cacheFile = path.resolve(assetsDir, '.assets-version');
|
|
37
|
+
const manifestCacheFile = path.resolve(assetsDir, '.assets-manifest.json');
|
|
38
|
+
return { assetsDir, cacheFile, manifestCacheFile };
|
|
39
|
+
}
|