@dcloudio/uni-cli-shared 3.0.0-5010520260709002 → 3.0.0-5020320260806002

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.
Files changed (56) hide show
  1. package/dist/dom2/vue.d.ts +0 -1
  2. package/dist/dom2/vue.js +1 -14
  3. package/dist/hbx/alias.js +16 -18
  4. package/dist/json/app/pages/definePage.js +3 -1
  5. package/dist/json/mp/index.d.ts +2 -0
  6. package/dist/json/mp/index.js +23 -1
  7. package/dist/json/mp/jsonFile.d.ts +3 -2
  8. package/dist/json/mp/jsonFile.js +83 -13
  9. package/dist/json/mp/pages.d.ts +1 -0
  10. package/dist/json/mp/pages.js +6 -2
  11. package/dist/json/mp/subpackage.d.ts +26 -0
  12. package/dist/json/mp/subpackage.js +236 -0
  13. package/dist/logs/console.js +4 -1
  14. package/dist/messages/en.d.ts +2 -0
  15. package/dist/messages/en.js +2 -0
  16. package/dist/messages/index.d.ts +4 -0
  17. package/dist/messages/zh_CN.d.ts +2 -0
  18. package/dist/messages/zh_CN.js +2 -0
  19. package/dist/mp/usingComponents.d.ts +7 -5
  20. package/dist/mp/usingComponents.js +63 -34
  21. package/dist/resolve.d.ts +1 -0
  22. package/dist/resolve.js +9 -2
  23. package/dist/uts.d.ts +0 -1
  24. package/dist/uts.js +1 -31
  25. package/dist/vite/plugins/cssScoped.js +11 -2
  26. package/dist/vite/plugins/easycom.js +3 -1
  27. package/dist/vite/plugins/inject.js +7 -2
  28. package/dist/vite/plugins/jsonJs.js +41 -3
  29. package/dist/vite/plugins/sfc.js +4 -1
  30. package/dist/vite/plugins/vitejs/plugins/asset.js +14 -1
  31. package/dist/vite/plugins/vitejs/plugins/css.js +35 -1
  32. package/dist/vue/transforms/index.js +1 -1
  33. package/dist/x.d.ts +1 -0
  34. package/dist/x.js +5 -1
  35. package/lib/dom2/app/@vue/compiler-core/dist/compiler-core.cjs.js +11 -9
  36. package/lib/dom2/app/@vue/compiler-core/dist/compiler-core.cjs.prod.js +11 -9
  37. package/lib/dom2/app/@vue/compiler-core/dist/compiler-core.d.ts +13 -1
  38. package/lib/dom2/app/@vue/compiler-core/dist/compiler-core.esm-bundler.js +8 -7
  39. package/lib/dom2/app/@vue/compiler-dom/dist/compiler-dom.cjs.js +1 -1
  40. package/lib/dom2/app/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +1 -1
  41. package/lib/dom2/app/@vue/compiler-dom/dist/compiler-dom.esm-browser.js +8 -7
  42. package/lib/dom2/app/@vue/compiler-dom/dist/compiler-dom.esm-browser.prod.js +5 -5
  43. package/lib/dom2/app/@vue/compiler-dom/dist/compiler-dom.esm-bundler.js +1 -1
  44. package/lib/dom2/app/@vue/compiler-dom/dist/compiler-dom.global.js +8 -7
  45. package/lib/dom2/app/@vue/compiler-dom/dist/compiler-dom.global.prod.js +5 -5
  46. package/lib/dom2/app/@vue/compiler-sfc/dist/compiler-sfc.cjs.js +4772 -1513
  47. package/lib/dom2/app/@vue/compiler-sfc/dist/compiler-sfc.esm-browser.js +3209 -1754
  48. package/lib/dom2/app/@vue/compiler-vapor/dist/compiler-vapor.cjs.js +1471 -395
  49. package/lib/dom2/app/@vue/compiler-vapor/dist/compiler-vapor.d.ts +143 -119
  50. package/lib/dom2/app/@vue/compiler-vapor/dist/compiler-vapor.esm-browser.js +1576 -470
  51. package/lib/dom2/app/@vue/compiler-vapor-dom2/dist/compiler-vapor-dom2.cjs.js +1 -1
  52. package/lib/dom2/app/@vue/shared/dist/shared.cjs.js +77 -2
  53. package/lib/dom2/app/@vue/shared/dist/shared.cjs.prod.js +77 -2
  54. package/lib/dom2/app/@vue/shared/dist/shared.d.ts +89 -2
  55. package/lib/dom2/app/@vue/shared/dist/shared.esm-bundler.js +74 -3
  56. package/package.json +5 -5
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parseIndependentVirtualRoot = exports.parseIndependentMainRoot = exports.formatIndependentVirtualId = exports.hasIndependentRoot = exports.withoutIndependentRoot = exports.withIndependentRoot = exports.parseIndependentRoot = exports.normalizeIndependentRoot = exports.stringifyIndependentRoots = exports.isAppPagesJson = exports.isInIndependentRoot = exports.withIndependentRootIfNeeded = exports.resolveIndependentRoot = exports.getIndependentRootByFilename = exports.getIndependentRoots = exports.getIndependentSubPackages = exports.setIndependentSubPackages = exports.parseIndependentSubPackages = exports.MP_INDEPENDENT_VIRTUAL_ROOT_QUERY = exports.MP_INDEPENDENT_MAIN_PREFIX = exports.MP_INDEPENDENT_ROOT_QUERY = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const utils_1 = require("../../utils");
9
+ exports.MP_INDEPENDENT_ROOT_QUERY = 'uni_mp_independent_root';
10
+ exports.MP_INDEPENDENT_MAIN_PREFIX = '\0uni:mp-independent-main';
11
+ exports.MP_INDEPENDENT_VIRTUAL_ROOT_QUERY = 'root';
12
+ function parseIndependentSubPackages(pagesJson) {
13
+ if (!pagesJson) {
14
+ return [];
15
+ }
16
+ const subPackages = pagesJson.subPackages || pagesJson.subpackages || [];
17
+ if (!Array.isArray(subPackages)) {
18
+ return [];
19
+ }
20
+ return subPackages.reduce((packages, subPackage) => {
21
+ if (!subPackage || subPackage.independent !== true) {
22
+ return packages;
23
+ }
24
+ const root = normalizeSubPackageRoot(subPackage.root);
25
+ const pages = normalizeSubPackagePages(subPackage.pages);
26
+ if (!root || !pages.length) {
27
+ return packages;
28
+ }
29
+ packages.push({
30
+ root,
31
+ pages,
32
+ independent: true,
33
+ });
34
+ return packages;
35
+ }, []);
36
+ }
37
+ exports.parseIndependentSubPackages = parseIndependentSubPackages;
38
+ let independentSubPackages = [];
39
+ let independentRootMatchers = [];
40
+ function setIndependentSubPackages(packages) {
41
+ independentSubPackages = packages.reduce((result, pkg) => {
42
+ const root = normalizeIndependentRoot(pkg.root);
43
+ if (root) {
44
+ result.push({
45
+ ...pkg,
46
+ root,
47
+ });
48
+ }
49
+ return result;
50
+ }, []);
51
+ independentRootMatchers = independentSubPackages
52
+ .map(({ root }) => ({
53
+ root,
54
+ normalizedRoot: root,
55
+ }))
56
+ .sort((a, b) => b.normalizedRoot.length - a.normalizedRoot.length);
57
+ }
58
+ exports.setIndependentSubPackages = setIndependentSubPackages;
59
+ function getIndependentSubPackages() {
60
+ return independentSubPackages;
61
+ }
62
+ exports.getIndependentSubPackages = getIndependentSubPackages;
63
+ function getIndependentRoots() {
64
+ return new Set(independentSubPackages.map(({ root }) => root));
65
+ }
66
+ exports.getIndependentRoots = getIndependentRoots;
67
+ function getIndependentRootByFilename(filename, inputDir) {
68
+ const cleanFilename = splitIdQuery(withoutIndependentRoot(filename)).filename;
69
+ if (!inputDir || !path_1.default.isAbsolute(cleanFilename)) {
70
+ return;
71
+ }
72
+ const relativeFilename = (0, utils_1.normalizePath)(path_1.default.relative(inputDir, cleanFilename));
73
+ const matcher = independentRootMatchers.find(({ normalizedRoot }) => {
74
+ return (relativeFilename === normalizedRoot ||
75
+ relativeFilename.startsWith(`${normalizedRoot}/`));
76
+ });
77
+ return matcher?.root;
78
+ }
79
+ exports.getIndependentRootByFilename = getIndependentRootByFilename;
80
+ function resolveIndependentRoot(id, importer, inputDir, platform) {
81
+ if (!platform?.startsWith('mp-')) {
82
+ return;
83
+ }
84
+ const root = parseIndependentRoot(id) ||
85
+ (importer
86
+ ? parseIndependentRoot(importer) ||
87
+ getIndependentRootByFilename(importer, inputDir)
88
+ : undefined);
89
+ const normalizedRoot = root && normalizeIndependentRoot(root);
90
+ if (normalizedRoot && getIndependentRoots().has(normalizedRoot)) {
91
+ return normalizedRoot;
92
+ }
93
+ }
94
+ exports.resolveIndependentRoot = resolveIndependentRoot;
95
+ function withIndependentRootIfNeeded(id, root, inputDir) {
96
+ if (!root ||
97
+ !inputDir ||
98
+ parseIndependentRoot(id) ||
99
+ isIndependentStyleRequest(id)) {
100
+ return id;
101
+ }
102
+ if (isInIndependentRoot(id, inputDir, root) || isAppPagesJson(id, inputDir)) {
103
+ return withIndependentRoot(id, root);
104
+ }
105
+ return id;
106
+ }
107
+ exports.withIndependentRootIfNeeded = withIndependentRootIfNeeded;
108
+ function isInIndependentRoot(filename, inputDir, root) {
109
+ const cleanFilename = (0, utils_1.normalizePath)(withoutIndependentRoot(filename)).split('?')[0];
110
+ const normalizedInputDir = (0, utils_1.normalizePath)(inputDir);
111
+ const normalizedRoot = normalizeIndependentRoot(root);
112
+ const rootDir = `${normalizedInputDir}/${normalizedRoot}`;
113
+ return cleanFilename === rootDir || cleanFilename.startsWith(`${rootDir}/`);
114
+ }
115
+ exports.isInIndependentRoot = isInIndependentRoot;
116
+ function isAppPagesJson(filename, inputDir) {
117
+ const cleanFilename = (0, utils_1.normalizePath)(withoutIndependentRoot(filename)).split('?')[0];
118
+ const pagesJson = (0, utils_1.normalizePath)(path_1.default.join(inputDir, 'pages.json'));
119
+ // uni-app x 的 UTS resolver 会把 JSON 文件映射为 .json.ts 参与类型编译。
120
+ return cleanFilename === pagesJson || cleanFilename === `${pagesJson}.ts`;
121
+ }
122
+ exports.isAppPagesJson = isAppPagesJson;
123
+ function stringifyIndependentRoots(packages) {
124
+ return packages
125
+ .map(({ root }) => normalizeIndependentRoot(root))
126
+ .filter(Boolean)
127
+ .sort()
128
+ .join('\n');
129
+ }
130
+ exports.stringifyIndependentRoots = stringifyIndependentRoots;
131
+ function normalizeIndependentRoot(root) {
132
+ return (0, utils_1.normalizePath)(root).replace(/^\/+|\/+$/g, '');
133
+ }
134
+ exports.normalizeIndependentRoot = normalizeIndependentRoot;
135
+ function isIndependentStyleRequest(id) {
136
+ const cleanId = withoutIndependentRoot(id);
137
+ // 这里保持独立判断,避免 json/mp 基础能力反向依赖 Vite CSS 插件实现。
138
+ return /\.(?:css|less|sass|scss|styl|stylus|pcss|postcss)(?:$|\?)/.test(cleanId);
139
+ }
140
+ function normalizeSubPackageRoot(root) {
141
+ if (typeof root !== 'string') {
142
+ return '';
143
+ }
144
+ return normalizeIndependentRoot(root.trim());
145
+ }
146
+ function normalizeSubPackagePages(pages) {
147
+ if (!Array.isArray(pages)) {
148
+ return [];
149
+ }
150
+ return pages.reduce((paths, page) => {
151
+ if (typeof page === 'string' && page) {
152
+ paths.push((0, utils_1.normalizePath)(page));
153
+ }
154
+ else if (page && typeof page.path === 'string' && page.path) {
155
+ paths.push((0, utils_1.normalizePath)(page.path));
156
+ }
157
+ return paths;
158
+ }, []);
159
+ }
160
+ function parseIndependentRoot(id) {
161
+ const query = splitIdQuery(id).query;
162
+ if (!query) {
163
+ return;
164
+ }
165
+ for (const item of query.split('&')) {
166
+ const [name, value = ''] = splitQueryItem(item);
167
+ if (name === exports.MP_INDEPENDENT_ROOT_QUERY) {
168
+ return decodeURIComponent(value);
169
+ }
170
+ }
171
+ }
172
+ exports.parseIndependentRoot = parseIndependentRoot;
173
+ function withIndependentRoot(id, root) {
174
+ const cleanId = withoutIndependentRoot(id);
175
+ const { filename, query } = splitIdQuery(cleanId);
176
+ const rootQuery = `${exports.MP_INDEPENDENT_ROOT_QUERY}=${encodeURIComponent(root)}`;
177
+ return `${(0, utils_1.normalizePath)(filename)}?${query ? query + '&' : ''}${rootQuery}`;
178
+ }
179
+ exports.withIndependentRoot = withIndependentRoot;
180
+ function withoutIndependentRoot(id) {
181
+ const { filename, query } = splitIdQuery(id);
182
+ if (!query) {
183
+ return id;
184
+ }
185
+ const nextQuery = query
186
+ .split('&')
187
+ .filter((item) => splitQueryItem(item)[0] !== exports.MP_INDEPENDENT_ROOT_QUERY)
188
+ .join('&');
189
+ return nextQuery ? `${filename}?${nextQuery}` : filename;
190
+ }
191
+ exports.withoutIndependentRoot = withoutIndependentRoot;
192
+ function hasIndependentRoot(id) {
193
+ return parseIndependentRoot(id) !== undefined;
194
+ }
195
+ exports.hasIndependentRoot = hasIndependentRoot;
196
+ function formatIndependentVirtualId(prefix, root) {
197
+ return `${prefix}?${exports.MP_INDEPENDENT_VIRTUAL_ROOT_QUERY}=${encodeURIComponent(root)}`;
198
+ }
199
+ exports.formatIndependentVirtualId = formatIndependentVirtualId;
200
+ function parseIndependentMainRoot(id) {
201
+ return parseIndependentVirtualRoot(id, exports.MP_INDEPENDENT_MAIN_PREFIX);
202
+ }
203
+ exports.parseIndependentMainRoot = parseIndependentMainRoot;
204
+ function parseIndependentVirtualRoot(id, prefix) {
205
+ if (!id.startsWith(`${prefix}?`)) {
206
+ return;
207
+ }
208
+ const { query } = splitIdQuery(id);
209
+ if (!query) {
210
+ return;
211
+ }
212
+ for (const item of query.split('&')) {
213
+ const [name, value = ''] = splitQueryItem(item);
214
+ if (name === exports.MP_INDEPENDENT_VIRTUAL_ROOT_QUERY) {
215
+ return decodeURIComponent(value);
216
+ }
217
+ }
218
+ }
219
+ exports.parseIndependentVirtualRoot = parseIndependentVirtualRoot;
220
+ function splitIdQuery(id) {
221
+ const queryIndex = id.indexOf('?');
222
+ if (queryIndex === -1) {
223
+ return { filename: id, query: '' };
224
+ }
225
+ return {
226
+ filename: id.slice(0, queryIndex),
227
+ query: id.slice(queryIndex + 1),
228
+ };
229
+ }
230
+ function splitQueryItem(item) {
231
+ const equalIndex = item.indexOf('=');
232
+ if (equalIndex === -1) {
233
+ return [item, ''];
234
+ }
235
+ return [item.slice(0, equalIndex), item.slice(equalIndex + 1)];
236
+ }
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.appendConsoleExpr = exports.restoreConsoleExpr = exports.rewriteConsoleExpr = void 0;
7
7
  const magic_string_1 = __importDefault(require("magic-string"));
8
8
  const utils_1 = require("../utils");
9
+ const x_1 = require("../x");
9
10
  function rewriteConsoleExpr(method, id, filename, code, sourceMap = false) {
10
11
  filename = (0, utils_1.normalizePath)(filename);
11
12
  const re = /(console\.(log|info|debug|warn|error))\s*\(([^)]+)\)/g;
@@ -19,7 +20,9 @@ function rewriteConsoleExpr(method, id, filename, code, sourceMap = false) {
19
20
  if (s.hasChanged()) {
20
21
  return {
21
22
  code: s.toString(),
22
- map: sourceMap ? s.generateMap({ hires: true }) : { mappings: '' },
23
+ map: sourceMap
24
+ ? s.generateMap({ hires: (0, x_1.shouldUseHighResolutionSourceMap)() })
25
+ : { mappings: '' },
23
26
  };
24
27
  }
25
28
  return { code, map: null };
@@ -4,6 +4,7 @@ declare const _default: {
4
4
  readonly 'view.render.compiler.target.bytecode': "bytecode";
5
5
  readonly 'view.render.compiler.target.nativecode': "nativecode";
6
6
  readonly 'style.isolation.version': "Style isolation version: {version}";
7
+ readonly 'style.isolation.version.upgrade': "Style isolation version: {version}. Upgrading to 2.0 is recommended.";
7
8
  readonly compiling: "Compiling...";
8
9
  readonly 'dev.performance': "Please note that in running mode, due to log output, sourcemap, and uncompressed source code, the performance and package size are not as good as release mode.";
9
10
  readonly 'dev.performance.nvue': "Especially the sourcemap of app-nvue has a greater impact";
@@ -15,6 +16,7 @@ declare const _default: {
15
16
  readonly 'dev.watching.end.pages': "DONE Build complete. PAGES:{pages}";
16
17
  readonly 'dev.watching.end.files': "DONE Build complete. FILES:{files}";
17
18
  readonly 'dev.watching.restart.vapor': "DONE Restart required. Switching vapor mode requires restarting to take effect.";
19
+ readonly 'dev.watching.restart.independentSubPackages': "DONE Restart required. Changing independent subpackage roots requires restarting to take effect.";
18
20
  readonly 'dev.watching.vapor.render.target': "vapor-render-target in manifest.json was changed to {manifestTarget}, but the running console is still {runtimeTarget}.";
19
21
  readonly 'build.failed': "DONE Build failed.";
20
22
  readonly 'compiler.build.failed': "Build failed with errors.";
@@ -6,6 +6,7 @@ exports.default = {
6
6
  'view.render.compiler.target.bytecode': 'bytecode',
7
7
  'view.render.compiler.target.nativecode': 'nativecode',
8
8
  'style.isolation.version': 'Style isolation version: {version}',
9
+ 'style.isolation.version.upgrade': 'Style isolation version: {version}. Upgrading to 2.0 is recommended.',
9
10
  compiling: 'Compiling...',
10
11
  'dev.performance': 'Please note that in running mode, due to log output, sourcemap, and uncompressed source code, the performance and package size are not as good as release mode.',
11
12
  'dev.performance.nvue': 'Especially the sourcemap of app-nvue has a greater impact',
@@ -17,6 +18,7 @@ exports.default = {
17
18
  'dev.watching.end.pages': 'DONE Build complete. PAGES:{pages}',
18
19
  'dev.watching.end.files': 'DONE Build complete. FILES:{files}',
19
20
  'dev.watching.restart.vapor': 'DONE Restart required. Switching vapor mode requires restarting to take effect.',
21
+ 'dev.watching.restart.independentSubPackages': 'DONE Restart required. Changing independent subpackage roots requires restarting to take effect.',
20
22
  'dev.watching.vapor.render.target': 'vapor-render-target in manifest.json was changed to {manifestTarget}, but the running console is still {runtimeTarget}.',
21
23
  'build.failed': 'DONE Build failed.',
22
24
  'compiler.build.failed': 'Build failed with errors.',
@@ -4,6 +4,7 @@ export declare const M: {
4
4
  readonly 'view.render.compiler.target.bytecode': "字节码";
5
5
  readonly 'view.render.compiler.target.nativecode': "机器码";
6
6
  readonly 'style.isolation.version': "当前样式隔离策略:{version}。详见:https://doc.dcloud.net.cn/uni-app-x/css/common/style-isolation.html";
7
+ readonly 'style.isolation.version.upgrade': "当前样式隔离策略:{version}。推荐升级为 2.0。详见:https://doc.dcloud.net.cn/uni-app-x/css/common/style-isolation.html";
7
8
  readonly compiling: "正在编译中...";
8
9
  readonly 'dev.performance': "请注意运行模式下,因日志输出、sourcemap 以及未压缩源码等原因,性能和包体积,均不及发行模式。";
9
10
  readonly 'dev.performance.nvue': "尤其是 app-nvue 的 sourcemap 影响较大";
@@ -15,6 +16,7 @@ export declare const M: {
15
16
  readonly 'dev.watching.end.pages': "DONE Build complete. PAGES:{pages}";
16
17
  readonly 'dev.watching.end.files': "DONE Build complete. FILES:{files}";
17
18
  readonly 'dev.watching.restart.vapor': "DONE Restart required. 切换蒸汽模式需要重新运行才能生效。";
19
+ readonly 'dev.watching.restart.independentSubPackages': "DONE Restart required. 独立分包 root 列表变化需要重新运行才能生效。";
18
20
  readonly 'dev.watching.vapor.render.target': "manifest.json 中更改了视图层编译目标为{manifestTarget},但注意运行控制台还是{runtimeTarget}。";
19
21
  readonly 'build.failed': "DONE Build failed.";
20
22
  readonly 'compiler.build.failed': "编译失败";
@@ -62,6 +64,7 @@ export declare const M: {
62
64
  readonly 'view.render.compiler.target.bytecode': "bytecode";
63
65
  readonly 'view.render.compiler.target.nativecode': "nativecode";
64
66
  readonly 'style.isolation.version': "Style isolation version: {version}";
67
+ readonly 'style.isolation.version.upgrade': "Style isolation version: {version}. Upgrading to 2.0 is recommended.";
65
68
  readonly compiling: "Compiling...";
66
69
  readonly 'dev.performance': "Please note that in running mode, due to log output, sourcemap, and uncompressed source code, the performance and package size are not as good as release mode.";
67
70
  readonly 'dev.performance.nvue': "Especially the sourcemap of app-nvue has a greater impact";
@@ -73,6 +76,7 @@ export declare const M: {
73
76
  readonly 'dev.watching.end.pages': "DONE Build complete. PAGES:{pages}";
74
77
  readonly 'dev.watching.end.files': "DONE Build complete. FILES:{files}";
75
78
  readonly 'dev.watching.restart.vapor': "DONE Restart required. Switching vapor mode requires restarting to take effect.";
79
+ readonly 'dev.watching.restart.independentSubPackages': "DONE Restart required. Changing independent subpackage roots requires restarting to take effect.";
76
80
  readonly 'dev.watching.vapor.render.target': "vapor-render-target in manifest.json was changed to {manifestTarget}, but the running console is still {runtimeTarget}.";
77
81
  readonly 'build.failed': "DONE Build failed.";
78
82
  readonly 'compiler.build.failed': "Build failed with errors.";
@@ -4,6 +4,7 @@ declare const _default: {
4
4
  readonly 'view.render.compiler.target.bytecode': "字节码";
5
5
  readonly 'view.render.compiler.target.nativecode': "机器码";
6
6
  readonly 'style.isolation.version': "当前样式隔离策略:{version}。详见:https://doc.dcloud.net.cn/uni-app-x/css/common/style-isolation.html";
7
+ readonly 'style.isolation.version.upgrade': "当前样式隔离策略:{version}。推荐升级为 2.0。详见:https://doc.dcloud.net.cn/uni-app-x/css/common/style-isolation.html";
7
8
  readonly compiling: "正在编译中...";
8
9
  readonly 'dev.performance': "请注意运行模式下,因日志输出、sourcemap 以及未压缩源码等原因,性能和包体积,均不及发行模式。";
9
10
  readonly 'dev.performance.nvue': "尤其是 app-nvue 的 sourcemap 影响较大";
@@ -15,6 +16,7 @@ declare const _default: {
15
16
  readonly 'dev.watching.end.pages': "DONE Build complete. PAGES:{pages}";
16
17
  readonly 'dev.watching.end.files': "DONE Build complete. FILES:{files}";
17
18
  readonly 'dev.watching.restart.vapor': "DONE Restart required. 切换蒸汽模式需要重新运行才能生效。";
19
+ readonly 'dev.watching.restart.independentSubPackages': "DONE Restart required. 独立分包 root 列表变化需要重新运行才能生效。";
18
20
  readonly 'dev.watching.vapor.render.target': "manifest.json 中更改了视图层编译目标为{manifestTarget},但注意运行控制台还是{runtimeTarget}。";
19
21
  readonly 'build.failed': "DONE Build failed.";
20
22
  readonly 'compiler.build.failed': "编译失败";
@@ -6,6 +6,7 @@ exports.default = {
6
6
  'view.render.compiler.target.bytecode': '字节码',
7
7
  'view.render.compiler.target.nativecode': '机器码',
8
8
  'style.isolation.version': '当前样式隔离策略:{version}。详见:https://doc.dcloud.net.cn/uni-app-x/css/common/style-isolation.html',
9
+ 'style.isolation.version.upgrade': '当前样式隔离策略:{version}。推荐升级为 2.0。详见:https://doc.dcloud.net.cn/uni-app-x/css/common/style-isolation.html',
9
10
  compiling: '正在编译中...',
10
11
  'dev.performance': '请注意运行模式下,因日志输出、sourcemap 以及未压缩源码等原因,性能和包体积,均不及发行模式。',
11
12
  'dev.performance.nvue': '尤其是 app-nvue 的 sourcemap 影响较大',
@@ -17,6 +18,7 @@ exports.default = {
17
18
  'dev.watching.end.pages': 'DONE Build complete. PAGES:{pages}',
18
19
  'dev.watching.end.files': 'DONE Build complete. FILES:{files}',
19
20
  'dev.watching.restart.vapor': 'DONE Restart required. 切换蒸汽模式需要重新运行才能生效。',
21
+ 'dev.watching.restart.independentSubPackages': 'DONE Restart required. 独立分包 root 列表变化需要重新运行才能生效。',
20
22
  'dev.watching.vapor.render.target': 'manifest.json 中更改了视图层编译目标为{manifestTarget},但注意运行控制台还是{runtimeTarget}。',
21
23
  'build.failed': 'DONE Build failed.',
22
24
  'compiler.build.failed': '编译失败',
@@ -10,17 +10,18 @@ interface MainDescriptor {
10
10
  script: string;
11
11
  template: string;
12
12
  }
13
- export declare function parseMainDescriptor(filename: string, ast: Program, resolve: ParseDescriptor['resolve']): Promise<MainDescriptor>;
14
- export declare function updateMiniProgramComponentsByScriptFilename(scriptFilename: string, inputDir: string, normalizeComponentName: (name: string) => string): void;
15
- export declare function updateMiniProgramComponentsByTemplateFilename(templateFilename: string, inputDir: string, normalizeComponentName: (name: string) => string): void;
16
- export declare function updateMiniProgramGlobalComponents(filename: string, ast: Program, { inputDir, resolve, normalizeComponentName, }: {
13
+ export declare function parseMainDescriptor(filename: string, ast: Program, resolve: ParseDescriptor['resolve'], root?: string): Promise<MainDescriptor>;
14
+ export declare function updateMiniProgramComponentsByScriptFilename(scriptFilename: string, inputDir: string, normalizeComponentName: (name: string) => string, root?: string): void;
15
+ export declare function updateMiniProgramComponentsByTemplateFilename(templateFilename: string, inputDir: string, normalizeComponentName: (name: string) => string, root?: string): void;
16
+ export declare function updateMiniProgramGlobalComponents(filename: string, ast: Program, { inputDir, resolve, normalizeComponentName, root, }: {
17
17
  inputDir: string;
18
18
  resolve: ParseDescriptor['resolve'];
19
19
  normalizeComponentName: (name: string) => string;
20
+ root?: string;
20
21
  }): Promise<{
21
22
  imports: ImportDeclaration[];
22
23
  }>;
23
- export declare function updateMiniProgramComponentsByMainFilename(mainFilename: string, inputDir: string, normalizeComponentName: (name: string) => string): void;
24
+ export declare function updateMiniProgramComponentsByMainFilename(mainFilename: string, inputDir: string, normalizeComponentName: (name: string) => string, root?: string): void;
24
25
  export interface TemplateDescriptor {
25
26
  bindingComponents: BindingComponents;
26
27
  imports: ImportDeclaration[];
@@ -37,6 +38,7 @@ export declare function parseTemplateDescriptor(filename: string, ast: Program,
37
38
  interface ParseDescriptor {
38
39
  resolve: PluginContext['resolve'];
39
40
  isExternal: boolean;
41
+ root?: string;
40
42
  }
41
43
  export interface ScriptDescriptor extends TemplateDescriptor {
42
44
  setupBindingComponents: BindingComponents;
@@ -14,9 +14,12 @@ const constants_1 = require("../constants");
14
14
  const utils_1 = require("../utils");
15
15
  const utils_2 = require("../vite/utils");
16
16
  const jsonFile_1 = require("../json/mp/jsonFile");
17
+ const subpackage_1 = require("../json/mp/subpackage");
17
18
  const mainDescriptors = new Map();
18
19
  const scriptDescriptors = new Map();
19
20
  const templateDescriptors = new Map();
21
+ const scriptDescriptorMainMap = new Map();
22
+ const templateDescriptorMainMap = new Map();
20
23
  // 存储全局组件名到完整源文件路径的映射
21
24
  const globalComponentSourceMap = new Map();
22
25
  function getGlobalComponentSource(componentName) {
@@ -36,60 +39,83 @@ function findImportScriptSource(ast) {
36
39
  return importDeclaration.source.value;
37
40
  }
38
41
  }
39
- async function resolveSource(filename, source, resolve) {
42
+ async function resolveSource(filename, source, resolve, root) {
40
43
  if (!source) {
41
44
  return;
42
45
  }
43
- const resolveId = await resolve(source, filename);
46
+ const resolveId = await resolve(source, root ? (0, subpackage_1.withIndependentRoot)(filename, root) : filename);
44
47
  if (resolveId) {
45
48
  return resolveId.id;
46
49
  }
47
50
  }
48
- async function parseMainDescriptor(filename, ast, resolve) {
49
- const script = await resolveSource(filename, findImportScriptSource(ast), resolve);
50
- const template = await resolveSource(filename, findImportTemplateSource(ast), resolve);
51
- const imports = await parseVueComponentImports(filename, ast.body.filter((node) => (0, types_1.isImportDeclaration)(node)), resolve);
51
+ async function parseMainDescriptor(filename, ast, resolve, root) {
52
+ const script = await resolveSource(filename, findImportScriptSource(ast), resolve, root);
53
+ const template = await resolveSource(filename, findImportTemplateSource(ast), resolve, root);
54
+ const imports = await parseVueComponentImports(root ? (0, subpackage_1.withIndependentRoot)(filename, root) : filename, ast.body.filter((node) => (0, types_1.isImportDeclaration)(node)), resolve);
52
55
  if (!script) {
53
56
  // inline script
54
- await parseScriptDescriptor(filename, ast, { resolve, isExternal: false });
57
+ await parseScriptDescriptor(filename, ast, {
58
+ resolve,
59
+ isExternal: false,
60
+ root,
61
+ });
55
62
  }
56
63
  if (!template) {
57
64
  // inline template
58
- await parseTemplateDescriptor(filename, ast, { resolve, isExternal: false });
65
+ await parseTemplateDescriptor(filename, ast, {
66
+ resolve,
67
+ isExternal: false,
68
+ root,
69
+ });
59
70
  }
60
71
  const descriptor = {
61
72
  imports,
62
- script: script ? (0, utils_2.parseVueRequest)(script).filename : filename,
63
- template: template ? (0, utils_2.parseVueRequest)(template).filename : filename,
73
+ script: script
74
+ ? createDescriptorKey((0, utils_2.parseVueRequest)(script).filename, (0, subpackage_1.parseIndependentRoot)(script) || root)
75
+ : createDescriptorKey(filename, root),
76
+ template: template
77
+ ? createDescriptorKey((0, utils_2.parseVueRequest)(template).filename, (0, subpackage_1.parseIndependentRoot)(template) || root)
78
+ : createDescriptorKey(filename, root),
64
79
  };
65
- mainDescriptors.set(filename, descriptor);
80
+ const mainDescriptorKey = createDescriptorKey(filename, root);
81
+ updateMainDescriptorIndex(mainDescriptorKey, descriptor);
66
82
  return descriptor;
67
83
  }
68
84
  exports.parseMainDescriptor = parseMainDescriptor;
69
- function updateMiniProgramComponentsByScriptFilename(scriptFilename, inputDir, normalizeComponentName) {
70
- const mainFilename = findMainFilenameByScriptFilename(scriptFilename);
85
+ function updateMainDescriptorIndex(mainDescriptorKey, descriptor) {
86
+ const oldDescriptor = mainDescriptors.get(mainDescriptorKey);
87
+ if (oldDescriptor && oldDescriptor.script !== descriptor.script) {
88
+ scriptDescriptorMainMap.delete(oldDescriptor.script);
89
+ }
90
+ if (oldDescriptor && oldDescriptor.template !== descriptor.template) {
91
+ templateDescriptorMainMap.delete(oldDescriptor.template);
92
+ }
93
+ mainDescriptors.set(mainDescriptorKey, descriptor);
94
+ scriptDescriptorMainMap.set(descriptor.script, mainDescriptorKey);
95
+ templateDescriptorMainMap.set(descriptor.template, mainDescriptorKey);
96
+ }
97
+ function updateMiniProgramComponentsByScriptFilename(scriptFilename, inputDir, normalizeComponentName, root) {
98
+ const mainFilename = findMainFilenameByScriptFilename(createDescriptorKey(scriptFilename, root));
71
99
  if (mainFilename) {
72
- updateMiniProgramComponentsByMainFilename(mainFilename, inputDir, normalizeComponentName);
100
+ updateMiniProgramComponentsByMainFilename(mainFilename, inputDir, normalizeComponentName, root);
73
101
  }
74
102
  }
75
103
  exports.updateMiniProgramComponentsByScriptFilename = updateMiniProgramComponentsByScriptFilename;
76
- function updateMiniProgramComponentsByTemplateFilename(templateFilename, inputDir, normalizeComponentName) {
77
- const mainFilename = findMainFilenameByTemplateFilename(templateFilename);
104
+ function updateMiniProgramComponentsByTemplateFilename(templateFilename, inputDir, normalizeComponentName, root) {
105
+ const mainFilename = findMainFilenameByTemplateFilename(createDescriptorKey(templateFilename, root));
78
106
  if (mainFilename) {
79
- updateMiniProgramComponentsByMainFilename(mainFilename, inputDir, normalizeComponentName);
107
+ updateMiniProgramComponentsByMainFilename(mainFilename, inputDir, normalizeComponentName, root);
80
108
  }
81
109
  }
82
110
  exports.updateMiniProgramComponentsByTemplateFilename = updateMiniProgramComponentsByTemplateFilename;
83
111
  function findMainFilenameByScriptFilename(scriptFilename) {
84
- const keys = [...mainDescriptors.keys()];
85
- return keys.find((key) => mainDescriptors.get(key).script === scriptFilename);
112
+ return scriptDescriptorMainMap.get(scriptFilename);
86
113
  }
87
114
  function findMainFilenameByTemplateFilename(templateFilename) {
88
- const keys = [...mainDescriptors.keys()];
89
- return keys.find((key) => mainDescriptors.get(key).template === templateFilename);
115
+ return templateDescriptorMainMap.get(templateFilename);
90
116
  }
91
- async function updateMiniProgramGlobalComponents(filename, ast, { inputDir, resolve, normalizeComponentName, }) {
92
- const { bindingComponents, imports } = await parseGlobalDescriptor(filename, ast, resolve);
117
+ async function updateMiniProgramGlobalComponents(filename, ast, { inputDir, resolve, normalizeComponentName, root, }) {
118
+ const { bindingComponents, imports } = await parseGlobalDescriptor(filename, ast, resolve, root);
93
119
  // 存储全局组件名到完整源文件路径的映射
94
120
  imports.forEach(({ source: { value }, specifiers: [specifier] }) => {
95
121
  const { name } = specifier.local;
@@ -97,7 +123,7 @@ async function updateMiniProgramGlobalComponents(filename, ast, { inputDir, reso
97
123
  return;
98
124
  }
99
125
  if (!globalComponentSourceMap.has(bindingComponents[name].tag)) {
100
- globalComponentSourceMap.set(bindingComponents[name].tag, value);
126
+ globalComponentSourceMap.set(bindingComponents[name].tag, (0, subpackage_1.withoutIndependentRoot)(value));
101
127
  }
102
128
  });
103
129
  (0, jsonFile_1.addMiniProgramUsingComponents)('app', createUsingComponents(bindingComponents, imports, inputDir, normalizeComponentName));
@@ -115,13 +141,13 @@ function createUsingComponents(bindingComponents, imports, inputDir, normalizeCo
115
141
  }
116
142
  const componentName = normalizeComponentName((0, shared_1.hyphenate)(bindingComponents[name].tag));
117
143
  if (!usingComponents[componentName]) {
118
- usingComponents[componentName] = (0, uni_shared_1.addLeadingSlash)((0, utils_1.removeExt)((0, utils_1.normalizeMiniProgramFilename)(value, inputDir)));
144
+ usingComponents[componentName] = (0, uni_shared_1.addLeadingSlash)((0, utils_1.removeExt)((0, utils_1.normalizeMiniProgramFilename)((0, subpackage_1.withoutIndependentRoot)(value), inputDir)));
119
145
  }
120
146
  });
121
147
  return usingComponents;
122
148
  }
123
- function updateMiniProgramComponentsByMainFilename(mainFilename, inputDir, normalizeComponentName) {
124
- const mainDescriptor = mainDescriptors.get(mainFilename);
149
+ function updateMiniProgramComponentsByMainFilename(mainFilename, inputDir, normalizeComponentName, root) {
150
+ const mainDescriptor = mainDescriptors.get(createDescriptorKey(mainFilename, root));
125
151
  if (!mainDescriptor) {
126
152
  return;
127
153
  }
@@ -138,7 +164,7 @@ function updateMiniProgramComponentsByMainFilename(mainFilename, inputDir, norma
138
164
  ...scriptDescriptor.setupBindingComponents,
139
165
  }, scriptDescriptor.bindingComponents);
140
166
  const imports = parseImports(mainDescriptor.imports, scriptDescriptor.imports, templateDescriptor.imports);
141
- (0, jsonFile_1.addMiniProgramUsingComponents)((0, utils_1.removeExt)((0, utils_1.normalizeMiniProgramFilename)(mainFilename, inputDir)), createUsingComponents(bindingComponents, imports, inputDir, normalizeComponentName));
167
+ (0, jsonFile_1.addMiniProgramUsingComponents)((0, utils_1.removeExt)((0, utils_1.normalizeMiniProgramFilename)((0, subpackage_1.withoutIndependentRoot)(mainFilename), inputDir)), createUsingComponents(bindingComponents, imports, inputDir, normalizeComponentName));
142
168
  }
143
169
  exports.updateMiniProgramComponentsByMainFilename = updateMiniProgramComponentsByMainFilename;
144
170
  function findBindingComponent(tag, bindingComponents) {
@@ -189,19 +215,19 @@ function parseImports(mainImports, scriptImports, templateImports) {
189
215
  async function parseTemplateDescriptor(filename, ast, options) {
190
216
  // 外置时查找所有 vue component import
191
217
  const imports = options.isExternal
192
- ? await parseVueComponentImports(filename, ast.body.filter((node) => (0, types_1.isImportDeclaration)(node)), options.resolve)
218
+ ? await parseVueComponentImports(options.root ? (0, subpackage_1.withIndependentRoot)(filename, options.root) : filename, ast.body.filter((node) => (0, types_1.isImportDeclaration)(node)), options.resolve)
193
219
  : [];
194
220
  const descriptor = {
195
221
  bindingComponents: findBindingComponents(ast.body),
196
222
  imports,
197
223
  };
198
- templateDescriptors.set(filename, descriptor);
224
+ templateDescriptors.set(createDescriptorKey(filename, options.root), descriptor);
199
225
  return descriptor;
200
226
  }
201
227
  exports.parseTemplateDescriptor = parseTemplateDescriptor;
202
- async function parseGlobalDescriptor(filename, ast, resolve) {
228
+ async function parseGlobalDescriptor(filename, ast, resolve, root) {
203
229
  // 外置时查找所有 vue component import
204
- const imports = (await parseVueComponentImports(filename, ast.body.filter((node) => (0, types_1.isImportDeclaration)(node)), resolve)).filter((item) => !(0, utils_1.isAppVue)((0, utils_2.cleanUrl)(item.source.value)));
230
+ const imports = (await parseVueComponentImports(root ? (0, subpackage_1.withIndependentRoot)(filename, root) : filename, ast.body.filter((node) => (0, types_1.isImportDeclaration)(node)), resolve)).filter((item) => !(0, utils_1.isAppVue)((0, utils_2.cleanUrl)(item.source.value)));
205
231
  return {
206
232
  bindingComponents: parseGlobalComponents(ast),
207
233
  imports,
@@ -218,14 +244,14 @@ async function parseGlobalDescriptor(filename, ast, resolve) {
218
244
  async function parseScriptDescriptor(filename, ast, options) {
219
245
  // 外置时查找所有 vue component import
220
246
  const imports = options.isExternal
221
- ? await parseVueComponentImports(filename, ast.body.filter((node) => (0, types_1.isImportDeclaration)(node)), options.resolve)
247
+ ? await parseVueComponentImports(options.root ? (0, subpackage_1.withIndependentRoot)(filename, options.root) : filename, ast.body.filter((node) => (0, types_1.isImportDeclaration)(node)), options.resolve)
222
248
  : [];
223
249
  const descriptor = {
224
250
  bindingComponents: parseComponents(ast),
225
251
  setupBindingComponents: findBindingComponents(ast.body),
226
252
  imports,
227
253
  };
228
- scriptDescriptors.set(filename, descriptor);
254
+ scriptDescriptors.set(createDescriptorKey(filename, options.root), descriptor);
229
255
  return descriptor;
230
256
  }
231
257
  exports.parseScriptDescriptor = parseScriptDescriptor;
@@ -395,6 +421,9 @@ async function parseVueComponentImports(importer, imports, resolve) {
395
421
  }
396
422
  return vueComponentImports;
397
423
  }
424
+ function createDescriptorKey(filename, root) {
425
+ return root ? (0, subpackage_1.withIndependentRoot)(filename, root) : filename;
426
+ }
398
427
  /**
399
428
  * static import => dynamic import
400
429
  * @param code
package/dist/resolve.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export declare function requireResolve(filename: string, basedir: string): string;
2
+ export declare function resolveMainUtsName(): string;
2
3
  export declare function relativeFile(from: string, to: string): string;
3
4
  export declare const resolveMainPathOnce: (inputDir: string) => string;
4
5
  export declare function getBuiltInPaths(): string[];
package/dist/resolve.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.resolveComponentsLibDirs = exports.resolveComponentsLibPath = exports.resolveVueI18nRuntime = exports.resolveBuiltIn = exports.getBuiltInPaths = exports.resolveMainPathOnce = exports.relativeFile = exports.requireResolve = void 0;
6
+ exports.resolveComponentsLibDirs = exports.resolveComponentsLibPath = exports.resolveVueI18nRuntime = exports.resolveBuiltIn = exports.getBuiltInPaths = exports.resolveMainPathOnce = exports.relativeFile = exports.resolveMainUtsName = exports.requireResolve = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const debug_1 = __importDefault(require("debug"));
@@ -24,6 +24,13 @@ function resolveWithSymlinks(id, basedir) {
24
24
  preserveSymlinks: true,
25
25
  });
26
26
  }
27
+ function resolveMainUtsName() {
28
+ if (process.env.UNI_COMPILE_TARGET === 'ext-api') {
29
+ return process.env.UNI_COMPILE_EXT_API_UVUE_ENTRY || 'main.uts';
30
+ }
31
+ return 'main.uts';
32
+ }
33
+ exports.resolveMainUtsName = resolveMainUtsName;
27
34
  function relativeFile(from, to) {
28
35
  const relativePath = (0, utils_1.normalizePath)(path_1.default.relative(path_1.default.dirname(from), to));
29
36
  return relativePath.startsWith('.') ? relativePath : './' + relativePath;
@@ -31,7 +38,7 @@ function relativeFile(from, to) {
31
38
  exports.relativeFile = relativeFile;
32
39
  exports.resolveMainPathOnce = (0, uni_shared_1.once)((inputDir) => {
33
40
  if (process.env.UNI_APP_X === 'true') {
34
- const mainUTSPath = path_1.default.resolve(inputDir, 'main.uts');
41
+ const mainUTSPath = path_1.default.resolve(inputDir, resolveMainUtsName());
35
42
  if (fs_1.default.existsSync(mainUTSPath)) {
36
43
  return (0, utils_1.normalizePath)(mainUTSPath);
37
44
  }
package/dist/uts.d.ts CHANGED
@@ -11,7 +11,6 @@ import type { EasycomMatcher } from './easycom';
11
11
  */
12
12
  export declare function resolveUTSAppModule(platform: typeof process.env.UNI_UTS_PLATFORM, id: string, importer: string, includeUTSSDK?: boolean): string | undefined;
13
13
  export declare function resolveUTSModule(id: string, importer: string, includeUTSSDK?: boolean): string | undefined;
14
- export declare function hasUTSModulePlatformFile(pluginDir: string, platform: typeof process.env.UNI_UTS_PLATFORM): boolean;
15
14
  export declare function resolveUTSCompiler(throwError?: boolean): typeof UTSCompiler;
16
15
  export declare function resolveUTSCompilerVersion(): string;
17
16
  interface UTSComponentMeta {