@dcloudio/uni-cli-shared 3.0.0-4010420240430002 → 3.0.0-4020320240708001

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 (50) hide show
  1. package/dist/easycom.js +35 -3
  2. package/dist/fs.js +8 -5
  3. package/dist/hbx/log.js +9 -0
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.js +5 -1
  6. package/dist/json/app/manifest/nvue.d.ts +1 -1
  7. package/dist/json/app/pages/definePage.d.ts +1 -1
  8. package/dist/json/app/pages/definePage.js +3 -3
  9. package/dist/json/app/pages/index.d.ts +1 -1
  10. package/dist/json/app/pages/index.js +2 -2
  11. package/dist/json/manifest.d.ts +1 -0
  12. package/dist/json/manifest.js +13 -2
  13. package/dist/json/pages.js +20 -2
  14. package/dist/json/theme.d.ts +19 -0
  15. package/dist/json/theme.js +240 -2
  16. package/dist/json/uni-x/uniConfig.js +5 -0
  17. package/dist/messages/en.d.ts +1 -0
  18. package/dist/messages/en.js +1 -0
  19. package/dist/messages/index.d.ts +2 -0
  20. package/dist/messages/zh_CN.d.ts +1 -0
  21. package/dist/messages/zh_CN.js +1 -0
  22. package/dist/postcss/plugins/uniapp.js +1 -0
  23. package/dist/preprocess/context.js +10 -2
  24. package/dist/resolve.js +6 -1
  25. package/dist/uni_modules.d.ts +51 -0
  26. package/dist/uni_modules.js +357 -23
  27. package/dist/utils.d.ts +14 -1
  28. package/dist/utils.js +39 -3
  29. package/dist/uts.d.ts +1 -1
  30. package/dist/uts.js +10 -3
  31. package/dist/vite/autoImport.js +16 -2
  32. package/dist/vite/cloud.d.ts +6 -0
  33. package/dist/vite/cloud.js +305 -0
  34. package/dist/vite/index.d.ts +2 -0
  35. package/dist/vite/index.js +4 -1
  36. package/dist/vite/plugins/easycom.js +3 -1
  37. package/dist/vite/plugins/uts/uni_modules.d.ts +3 -2
  38. package/dist/vite/plugins/uts/uni_modules.js +76 -14
  39. package/dist/vite/plugins/vitejs/plugins/asset.d.ts +3 -3
  40. package/dist/vite/plugins/vitejs/plugins/asset.js +11 -9
  41. package/dist/vite/plugins/vitejs/plugins/css.d.ts +6 -1
  42. package/dist/vite/plugins/vitejs/plugins/css.js +27 -25
  43. package/dist/vite/plugins/vitejs/plugins/static.d.ts +2 -0
  44. package/dist/vite/plugins/vitejs/plugins/static.js +40 -0
  45. package/dist/vite/utils/index.js +3 -0
  46. package/dist/vite/utils/plugin.d.ts +5 -2
  47. package/dist/vite/utils/plugin.js +7 -2
  48. package/dist/vite/utils/utils.js +3 -0
  49. package/dist/vue/transforms/transformPageHead.js +7 -3
  50. package/package.json +7 -4
@@ -37,6 +37,7 @@ const shared_1 = require("@vue/shared");
37
37
  const utils_1 = require("../utils");
38
38
  const utils_2 = require("../../../../vite/utils/utils");
39
39
  const utils_3 = require("../../../../utils");
40
+ const static_1 = require("./static");
40
41
  exports.assetUrlRE = /__VITE_ASSET__([a-z\d]{8})__(?:\$_(.*?)__)?/g;
41
42
  const rawRE = /(\?|&)raw(?:&|$)/;
42
43
  const urlRE = /(\?|&)url(?:&|$)/;
@@ -91,11 +92,11 @@ function assetPlugin(config, options) {
91
92
  fs_extra_1.default.outputFileSync(path_1.default.resolve(process.env.UNI_OUTPUT_DIR, emittedFile.fileName), emittedFile.source);
92
93
  },
93
94
  }
94
- : this);
95
+ : this, false, (0, static_1.getIsStaticFile)());
95
96
  if (options?.isAndroidX) {
96
97
  this.emitFile({
97
98
  type: 'asset',
98
- fileName: (0, utils_3.normalizeNodeModules)(path_1.default.relative(process.env.UNI_INPUT_DIR, id) + '.uts'),
99
+ fileName: (0, utils_3.normalizeEmitAssetFileName)((0, utils_3.normalizeNodeModules)(path_1.default.relative(process.env.UNI_INPUT_DIR, id))),
99
100
  source: `export default ${JSON.stringify(parseAssets(config, url))}`,
100
101
  });
101
102
  }
@@ -176,8 +177,8 @@ function checkPublicFile(url, { publicDir }) {
176
177
  }
177
178
  }
178
179
  exports.checkPublicFile = checkPublicFile;
179
- function fileToUrl(id, config, ctx, canInline = false) {
180
- return fileToBuiltUrl(id, config, ctx, false, canInline);
180
+ function fileToUrl(id, config, ctx, canInline = false, isStaticFile) {
181
+ return fileToBuiltUrl(id, config, ctx, false, canInline, isStaticFile);
181
182
  }
182
183
  exports.fileToUrl = fileToUrl;
183
184
  function getAssetFilename(hash, config) {
@@ -261,7 +262,7 @@ function sanitizeFileName(name) {
261
262
  * Register an asset to be emitted as part of the bundle (if necessary)
262
263
  * and returns the resolved public URL
263
264
  */
264
- function fileToBuiltUrl(id, config, pluginContext, skipPublicCheck = false, canInline = false) {
265
+ function fileToBuiltUrl(id, config, pluginContext, skipPublicCheck = false, canInline = false, isStaticFile) {
265
266
  if (!skipPublicCheck && checkPublicFile(id, config)) {
266
267
  return config.base + id.slice(1);
267
268
  }
@@ -294,14 +295,15 @@ function fileToBuiltUrl(id, config, pluginContext, skipPublicCheck = false, canI
294
295
  assetFileNames = output[0].assetFileNames ?? assetFileNames;
295
296
  }
296
297
  const inputDir = (0, utils_1.normalizePath)(process.env.UNI_INPUT_DIR);
297
- let fileName = file.startsWith(inputDir) && file.includes('/static/')
298
+ const isStatic = isStaticFile(file);
299
+ let fileName = file.startsWith(inputDir) && isStatic
298
300
  ? // 需要处理 HBuilderX 项目中的 node_modules 目录
299
301
  (0, utils_3.normalizeNodeModules)(path_1.default.posix.relative(inputDir, file))
300
302
  : assetFileNamesToFileName(assetFileNames, file, contentHash, content);
301
303
  if (!map.has(contentHash)) {
302
304
  map.set(contentHash, fileName);
303
305
  }
304
- if (!fileName.includes('/static/')) {
306
+ if (!isStatic) {
305
307
  const emittedSet = emittedHashMap.get(config);
306
308
  if (!emittedSet.has(contentHash)) {
307
309
  pluginContext.emitFile({
@@ -322,7 +324,7 @@ function getAssetHash(content) {
322
324
  return (0, crypto_1.createHash)('sha256').update(content).digest('hex').slice(0, 8);
323
325
  }
324
326
  exports.getAssetHash = getAssetHash;
325
- function urlToBuiltUrl(url, importer, config, pluginContext) {
327
+ function urlToBuiltUrl(url, importer, config, pluginContext, isStaticFile) {
326
328
  if (checkPublicFile(url, config)) {
327
329
  return config.base + url.slice(1);
328
330
  }
@@ -331,6 +333,6 @@ function urlToBuiltUrl(url, importer, config, pluginContext) {
331
333
  : path_1.default.join(path_1.default.dirname(importer), url);
332
334
  return fileToBuiltUrl(file, config, pluginContext,
333
335
  // skip public check since we just did it above
334
- true);
336
+ true, false, isStaticFile);
335
337
  }
336
338
  exports.urlToBuiltUrl = urlToBuiltUrl;
@@ -1,7 +1,9 @@
1
1
  import type { SFCDescriptor } from '@vue/compiler-sfc';
2
2
  import type { ExistingRawSourceMap, RollupError } from 'rollup';
3
+ import type * as PostCSS from 'postcss';
3
4
  import type { Plugin } from '../plugin';
4
5
  import type { ResolvedConfig } from '../config';
6
+ import type { ResolveFn } from '../';
5
7
  import * as Postcss from 'postcss';
6
8
  export interface CSSOptions {
7
9
  /**
@@ -34,18 +36,21 @@ export declare const isDirectCSSRequest: (request: string) => boolean;
34
36
  export declare function cssPlugin(config: ResolvedConfig, options?: {
35
37
  isAndroidX: boolean;
36
38
  getDescriptor?(filename: string): SFCDescriptor | undefined;
39
+ createUrlReplacer?: (resolve: ResolveFn) => CssUrlReplacer;
37
40
  }): Plugin;
38
41
  /**
39
42
  * Plugin applied after user plugins
40
43
  */
41
- export declare function cssPostPlugin(config: ResolvedConfig, { platform, isJsCode, chunkCssFilename, chunkCssCode, includeComponentCss, }: {
44
+ export declare function cssPostPlugin(config: ResolvedConfig, { platform, isJsCode, preserveModules, chunkCssFilename, chunkCssCode, includeComponentCss, }: {
42
45
  platform: UniApp.PLATFORM;
43
46
  isJsCode?: boolean;
47
+ preserveModules?: boolean;
44
48
  chunkCssFilename: (id: string) => string | void;
45
49
  chunkCssCode: (filename: string, cssCode: string) => Promise<string> | string;
46
50
  includeComponentCss?: boolean;
47
51
  }): Plugin;
48
52
  export declare function formatPostcssSourceMap(rawMap: ExistingRawSourceMap, file: string): ExistingRawSourceMap;
53
+ export type CssUrlReplacer = (url: string, importer?: string, source?: PostCSS.Source) => string | Promise<string>;
49
54
  export declare const cssUrlRE: RegExp;
50
55
  export declare const cssDataUriRE: RegExp;
51
56
  export declare const importCssRE: RegExp;
@@ -47,6 +47,7 @@ const utils_2 = require("../../../utils/utils");
47
47
  const compiler_core_1 = require("@vue/compiler-core");
48
48
  const utils_3 = require("../../../../utils");
49
49
  const utils_4 = require("../../../utils");
50
+ const static_1 = require("./static");
50
51
  const cssLangs = `\\.(css|less|sass|scss|styl|stylus|pcss|postcss)($|\\?)`;
51
52
  exports.cssLangRE = new RegExp(cssLangs);
52
53
  const cssModuleRE = new RegExp(`\\.module${cssLangs}`);
@@ -121,29 +122,30 @@ function cssPlugin(config, options = { isAndroidX: false }) {
121
122
  if (!exports.cssLangRE.test(id) || exports.commonjsProxyRE.test(id)) {
122
123
  return;
123
124
  }
124
- const urlReplacer = async (url, importer, source) => {
125
- if (url.startsWith('/') && !url.startsWith('//')) {
126
- // /static/logo.png => @/static/logo.png
127
- url = '@' + url;
128
- }
129
- const resolved = await wrapResolve(resolveUrl, source?.input.css || raw, source, options.getDescriptor)(url, importer);
130
- if (resolved) {
131
- return (0, asset_1.fileToUrl)(resolved, config, options?.isAndroidX
132
- ? {
133
- emitFile(emittedFile) {
134
- const fileName = path_1.default.resolve(process.env.UNI_OUTPUT_DIR, emittedFile.fileName);
135
- // 忽略static(可能有只读文件,写入覆盖只读会报错权限)
136
- if ((0, utils_1.normalizePath)(fileName).includes('/static/')) {
137
- return;
138
- }
139
- // 直接写入目标目录
140
- fs_extra_1.default.outputFileSync(fileName, emittedFile.source);
141
- },
142
- }
143
- : this, true);
144
- }
145
- return url;
146
- };
125
+ const urlReplacer = (options.createUrlReplacer && options.createUrlReplacer(resolveUrl)) ||
126
+ (async (url, importer, source) => {
127
+ if (url.startsWith('/') && !url.startsWith('//')) {
128
+ // /static/logo.png => @/static/logo.png
129
+ url = '@' + url;
130
+ }
131
+ const resolved = await wrapResolve(resolveUrl, source?.input.css || raw, source, options.getDescriptor)(url, importer);
132
+ if (resolved) {
133
+ return (0, asset_1.fileToUrl)(resolved, config, options?.isAndroidX
134
+ ? {
135
+ emitFile(emittedFile) {
136
+ const fileName = path_1.default.resolve(process.env.UNI_OUTPUT_DIR, emittedFile.fileName);
137
+ // 忽略static(可能有只读文件,写入覆盖只读会报错权限)
138
+ if ((0, static_1.getIsStaticFile)()((0, utils_1.normalizePath)(emittedFile.fileName))) {
139
+ return;
140
+ }
141
+ // 直接写入目标目录
142
+ fs_extra_1.default.outputFileSync(fileName, emittedFile.source);
143
+ },
144
+ }
145
+ : this, true, (0, static_1.getIsStaticFile)());
146
+ }
147
+ return url;
148
+ });
147
149
  const { code: css, modules, deps, } = await compileCSS(id, raw, config, urlReplacer, atImportResolvers, server);
148
150
  if (modules) {
149
151
  moduleCache.set(id, modules);
@@ -199,7 +201,7 @@ function findCssModuleIds(moduleId, includeComponentCss = true, cssModuleIds, se
199
201
  /**
200
202
  * Plugin applied after user plugins
201
203
  */
202
- function cssPostPlugin(config, { platform, isJsCode, chunkCssFilename, chunkCssCode, includeComponentCss, }) {
204
+ function cssPostPlugin(config, { platform, isJsCode, preserveModules, chunkCssFilename, chunkCssCode, includeComponentCss, }) {
203
205
  // styles initialization in buildStart causes a styling loss in watch
204
206
  const styles = new Map();
205
207
  let cssChunks;
@@ -251,7 +253,7 @@ function cssPostPlugin(config, { platform, isJsCode, chunkCssFilename, chunkCssC
251
253
  },
252
254
  async generateBundle() {
253
255
  // app 平台页面并未 chunk,所以 renderChunk 并不会处理页面的 css,需要这里再补充查找
254
- if (platform === 'app') {
256
+ if (platform === 'app' || preserveModules) {
255
257
  const moduleIds = Array.from(this.getModuleIds());
256
258
  moduleIds.forEach((id) => {
257
259
  const filename = chunkCssFilename(id);
@@ -0,0 +1,2 @@
1
+ export declare function createIsStaticFile(): (relativeFile: string) => boolean;
2
+ export declare function getIsStaticFile(): (file: string) => boolean;
@@ -0,0 +1,40 @@
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.getIsStaticFile = exports.createIsStaticFile = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const utils_1 = require("../utils");
10
+ const json_1 = require("../../../../json/json");
11
+ const uniModulesStaticRe = /^uni_modules\/[^/]+\/static\//;
12
+ function createIsStaticFile() {
13
+ let subPackageStatics = [];
14
+ const pagesFilename = path_1.default.join(process.env.UNI_INPUT_DIR, 'pages.json');
15
+ if (fs_1.default.existsSync(pagesFilename)) {
16
+ const pagesJson = (0, json_1.parseJson)(fs_1.default.readFileSync(pagesFilename, 'utf8'), true);
17
+ subPackageStatics = (pagesJson.subPackages || pagesJson.subpackages || [])
18
+ .filter((subPackage) => subPackage.root)
19
+ .map((subPackage) => {
20
+ return (0, utils_1.normalizePath)(path_1.default.join(subPackage.root, 'static')) + '/';
21
+ });
22
+ }
23
+ return function isStaticFile(relativeFile) {
24
+ if (path_1.default.isAbsolute(relativeFile)) {
25
+ relativeFile = (0, utils_1.normalizePath)(path_1.default.relative(process.env.UNI_INPUT_DIR, relativeFile));
26
+ }
27
+ return (relativeFile.startsWith('static/') ||
28
+ uniModulesStaticRe.test(relativeFile) ||
29
+ subPackageStatics.some((s) => relativeFile.startsWith(s)));
30
+ };
31
+ }
32
+ exports.createIsStaticFile = createIsStaticFile;
33
+ let isStaticFile;
34
+ function getIsStaticFile() {
35
+ if (!isStaticFile) {
36
+ isStaticFile = createIsStaticFile();
37
+ }
38
+ return isStaticFile;
39
+ }
40
+ exports.getIsStaticFile = getIsStaticFile;
@@ -22,6 +22,9 @@ __exportStar(require("./utils"), exports);
22
22
  // 内置组件css列表,h5平台需要合并进去首页css中
23
23
  exports.buildInCssSet = new Set();
24
24
  function isCombineBuiltInCss(config) {
25
+ if (process.env.UNI_COMPILE_TARGET === 'uni_modules') {
26
+ return false;
27
+ }
25
28
  return config.command === 'build' && config.build.cssCodeSplit;
26
29
  }
27
30
  exports.isCombineBuiltInCss = isCombineBuiltInCss;
@@ -1,4 +1,5 @@
1
- import type { Plugin, ResolvedConfig } from 'vite';
1
+ import type { Plugin, ResolveFn, ResolvedConfig } from 'vite';
2
+ import { type CssUrlReplacer } from '../plugins/vitejs/plugins/css';
2
3
  export type CreateUniViteFilterPlugin = (opts: UniViteFilterPluginOptions) => Plugin;
3
4
  export interface UniViteFilterPluginOptions {
4
5
  resolvedConfig: ResolvedConfig;
@@ -7,7 +8,9 @@ export interface UniViteFilterPluginOptions {
7
8
  export declare function injectAssetPlugin(config: ResolvedConfig, options?: {
8
9
  isAndroidX: boolean;
9
10
  }): void;
10
- export declare function injectCssPlugin(config: ResolvedConfig): void;
11
+ export declare function injectCssPlugin(config: ResolvedConfig, options?: {
12
+ createUrlReplacer?: (resolve: ResolveFn) => CssUrlReplacer;
13
+ }): void;
11
14
  export declare function injectCssPostPlugin(config: ResolvedConfig, newCssPostPlugin: Plugin): void;
12
15
  export declare function replacePlugins(plugins: Plugin[], config: ResolvedConfig): void;
13
16
  export declare function removePlugins(plugins: string | string[], config: ResolvedConfig): void;
@@ -8,8 +8,13 @@ function injectAssetPlugin(config, options) {
8
8
  replacePlugins([(0, asset_1.assetPlugin)(config, options)], config);
9
9
  }
10
10
  exports.injectAssetPlugin = injectAssetPlugin;
11
- function injectCssPlugin(config) {
12
- replacePlugins([(0, css_1.cssPlugin)(config)], config);
11
+ function injectCssPlugin(config, options) {
12
+ replacePlugins([
13
+ (0, css_1.cssPlugin)(config, {
14
+ isAndroidX: false,
15
+ ...options,
16
+ }),
17
+ ], config);
13
18
  }
14
19
  exports.injectCssPlugin = injectCssPlugin;
15
20
  function injectCssPostPlugin(config, newCssPostPlugin) {
@@ -5,6 +5,9 @@ const shared_1 = require("@vue/shared");
5
5
  const code_frame_1 = require("@babel/code-frame");
6
6
  const utils_1 = require("../plugins/vitejs/utils");
7
7
  function withSourcemap(config) {
8
+ if (process.env.UNI_COMPILE_TARGET === 'uni_modules') {
9
+ return false;
10
+ }
8
11
  if (config.command === 'serve') {
9
12
  return true;
10
13
  }
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.transformPageHead = void 0;
4
+ const compiler_core_1 = require("@vue/compiler-core");
4
5
  const utils_1 = require("../../utils");
5
6
  const transformPageHead = (node, context) => {
6
7
  // 发现是page-meta下的head,直接remove该节点
7
- (0, utils_1.checkElementNodeTag)(node, 'head') &&
8
- (0, utils_1.checkElementNodeTag)(context.parent, 'page-meta') &&
9
- context.removeNode(node);
8
+ if ((0, utils_1.checkElementNodeTag)(node, 'head') &&
9
+ (0, utils_1.checkElementNodeTag)(context.parent, 'page-meta')) {
10
+ ;
11
+ node.tag = 'page-meta-head';
12
+ node.tagType = compiler_core_1.ElementTypes.COMPONENT;
13
+ }
10
14
  };
11
15
  exports.transformPageHead = transformPageHead;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dcloudio/uni-cli-shared",
3
- "version": "3.0.0-4010420240430002",
3
+ "version": "3.0.0-4020320240708001",
4
4
  "description": "@dcloudio/uni-cli-shared",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -26,8 +26,8 @@
26
26
  "@babel/core": "^7.23.3",
27
27
  "@babel/parser": "^7.23.9",
28
28
  "@babel/types": "^7.20.7",
29
- "@dcloudio/uni-i18n": "3.0.0-4010420240430002",
30
- "@dcloudio/uni-shared": "3.0.0-4010420240430002",
29
+ "@dcloudio/uni-i18n": "3.0.0-4020320240708001",
30
+ "@dcloudio/uni-shared": "3.0.0-4020320240708001",
31
31
  "@intlify/core-base": "9.1.9",
32
32
  "@intlify/shared": "9.1.9",
33
33
  "@intlify/vue-devtools": "9.1.9",
@@ -38,6 +38,7 @@
38
38
  "@vue/compiler-ssr": "3.4.21",
39
39
  "@vue/server-renderer": "3.4.21",
40
40
  "@vue/shared": "3.4.21",
41
+ "adm-zip": "^0.5.12",
41
42
  "autoprefixer": "^10.4.19",
42
43
  "base64url": "^3.0.1",
43
44
  "chokidar": "^3.5.3",
@@ -49,6 +50,7 @@
49
50
  "fast-glob": "^3.2.11",
50
51
  "fs-extra": "^10.0.0",
51
52
  "hash-sum": "^2.0.0",
53
+ "isbinaryfile": "^5.0.2",
52
54
  "jsonc-parser": "^3.2.0",
53
55
  "lines-and-columns": "^2.0.4",
54
56
  "magic-string": "^0.30.7",
@@ -69,7 +71,8 @@
69
71
  },
70
72
  "gitHead": "33e807d66e1fe47e2ee08ad9c59247e37b8884da",
71
73
  "devDependencies": {
72
- "@dcloudio/uni-uts-v1": "3.0.0-4010420240430002",
74
+ "@dcloudio/uni-uts-v1": "3.0.0-4020320240708001",
75
+ "@types/adm-zip": "^0.5.5",
73
76
  "@types/babel__code-frame": "^7.0.6",
74
77
  "@types/babel__core": "^7.1.19",
75
78
  "@types/debug": "^4.1.7",