@hzab/vite-config 0.0.2-alpha.0 → 0.0.3-alpha.0

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.
@@ -5,6 +5,21 @@ import 'vite-plugin-static-copy';
5
5
  import './hash-deploy.cjs';
6
6
  import './svg-react.cjs';
7
7
 
8
+ /**
9
+ * less 插件注入的 FileManager 实例表面类型。less@4 不自带 TS 类型,按实际使用的最小面声明。
10
+ */
11
+ interface LessFileManagerInstance {
12
+ supports(filename: string): boolean;
13
+ loadFile(filename: string, currentDirectory: string, options: unknown, environment: unknown): unknown;
14
+ }
15
+ /** less.js 传给插件 `install` 的 less 环境实例表面。 */
16
+ interface LessPluginHost {
17
+ FileManager: new (...args: unknown[]) => LessFileManagerInstance;
18
+ }
19
+ /** less.js 插件管理器表面。 */
20
+ interface LessPluginManager {
21
+ addFileManager(manager: LessFileManagerInstance): void;
22
+ }
8
23
  /**
9
24
  * Less 插件:把 webpack 遗留的 `~pkg/...` 导入解析到 node_modules。
10
25
  *
@@ -17,7 +32,7 @@ import './svg-react.cjs';
17
32
  * @public
18
33
  */
19
34
  declare function lessTildeResolutionPlugin(): {
20
- install(less: any, pluginManager: any): void;
35
+ install(less: LessPluginHost, pluginManager: LessPluginManager): void;
21
36
  };
22
37
  /**
23
38
  * 组装 `css.preprocessorOptions.less`:映射 webpack `less-loader` 选项,
@@ -26,7 +41,7 @@ declare function lessTildeResolutionPlugin(): {
26
41
  */
27
42
  declare function buildLessOptions(less?: LessOptions): {
28
43
  plugins?: {
29
- install(less: any, pluginManager: any): void;
44
+ install(less: LessPluginHost, pluginManager: LessPluginManager): void;
30
45
  }[] | undefined;
31
46
  javascriptEnabled?: boolean | undefined;
32
47
  modifyVars?: Record<string, unknown> | undefined;
@@ -5,6 +5,21 @@ import 'vite-plugin-static-copy';
5
5
  import './hash-deploy.js';
6
6
  import './svg-react.js';
7
7
 
8
+ /**
9
+ * less 插件注入的 FileManager 实例表面类型。less@4 不自带 TS 类型,按实际使用的最小面声明。
10
+ */
11
+ interface LessFileManagerInstance {
12
+ supports(filename: string): boolean;
13
+ loadFile(filename: string, currentDirectory: string, options: unknown, environment: unknown): unknown;
14
+ }
15
+ /** less.js 传给插件 `install` 的 less 环境实例表面。 */
16
+ interface LessPluginHost {
17
+ FileManager: new (...args: unknown[]) => LessFileManagerInstance;
18
+ }
19
+ /** less.js 插件管理器表面。 */
20
+ interface LessPluginManager {
21
+ addFileManager(manager: LessFileManagerInstance): void;
22
+ }
8
23
  /**
9
24
  * Less 插件:把 webpack 遗留的 `~pkg/...` 导入解析到 node_modules。
10
25
  *
@@ -17,7 +32,7 @@ import './svg-react.js';
17
32
  * @public
18
33
  */
19
34
  declare function lessTildeResolutionPlugin(): {
20
- install(less: any, pluginManager: any): void;
35
+ install(less: LessPluginHost, pluginManager: LessPluginManager): void;
21
36
  };
22
37
  /**
23
38
  * 组装 `css.preprocessorOptions.less`:映射 webpack `less-loader` 选项,
@@ -26,7 +41,7 @@ declare function lessTildeResolutionPlugin(): {
26
41
  */
27
42
  declare function buildLessOptions(less?: LessOptions): {
28
43
  plugins?: {
29
- install(less: any, pluginManager: any): void;
44
+ install(less: LessPluginHost, pluginManager: LessPluginManager): void;
30
45
  }[] | undefined;
31
46
  javascriptEnabled?: boolean | undefined;
32
47
  modifyVars?: Record<string, unknown> | undefined;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/less-tilde.ts"],"names":[],"mappings":";AAaO,SAAS,yBAAA,GAA4B;AAC1C,EAAA,OAAO;AAAA,IACL,OAAA,CAAQ,MAAW,aAAA,EAAoB;AAAA,MACrC,MAAM,gBAAA,SAAyB,IAAA,CAAK,WAAA,CAAY;AAAA,QAC9C,SAAS,QAAA,EAAkB;AACzB,UAAA,OAAO,QAAA,CAAS,WAAW,GAAG,CAAA;AAAA,QAChC;AAAA,QACA,QAAA,CAAS,QAAA,EAAkB,gBAAA,EAA0B,OAAA,EAAc,WAAA,EAAkB;AAEnF,UAAA,OAAO,KAAA,CAAM,SAAS,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA,EAAG,gBAAA,EAAkB,SAAS,WAAW,CAAA;AAAA,QACjF;AAAA;AAEF,MAAA,aAAA,CAAc,cAAA,CAAe,IAAI,gBAAA,EAAkB,CAAA;AAAA,IACrD;AAAA,GACF;AACF;AAOO,SAAS,iBAAiB,IAAA,EAAoB;AACnD,EAAA,MAAM,YAAA,GAAe,MAAM,YAAA,KAAiB,IAAA;AAC5C,EAAA,OAAO;AAAA,IACL,GAAI,MAAM,cAAA,IAAkB,IAAA,GAAO,EAAE,cAAA,EAAgB,IAAA,CAAK,cAAA,EAAe,GAAI,EAAC;AAAA,IAC9E,GAAI,MAAM,UAAA,IAAc,IAAA,GAAO,EAAE,UAAA,EAAY,IAAA,CAAK,UAAA,EAAW,GAAI,EAAC;AAAA,IAClE,GAAI,MAAM,iBAAA,IAAqB,IAAA,GAAO,EAAE,iBAAA,EAAmB,IAAA,CAAK,iBAAA,EAAkB,GAAI,EAAC;AAAA,IACvF,GAAI,eAAe,EAAE,OAAA,EAAS,CAAC,yBAAA,EAA2B,CAAA,EAAE,GAAI;AAAC,GACnE;AACF","file":"less-tilde.js","sourcesContent":["import type { LessOptions } from \"../types.ts\";\r\n\r\n/**\r\n * Less 插件:把 webpack 遗留的 `~pkg/...` 导入解析到 node_modules。\r\n *\r\n * Less 自身不认识 `~`(那是 webpack `less-loader` 的约定:从 node_modules 解析);Vite 的\r\n * Less 预处理器也不处理 `~`,会回退到 Less 默认 FileManager 去查找 `node_modules/~pkg/...` 而失败。\r\n * 本插件注册一个 FileManager:仅当导入以 `~` 开头时拦截,去掉前缀后交给默认 FileManager 解析\r\n * (Vite 恒向 `less.render` 注入 `paths: [\"node_modules\"]`)。\r\n *\r\n * 第三方包(如 formily 系)自带 `@import \"~antd/...\"` 时尤其需要——消费方无法修改 node_modules。\r\n * @public\r\n */\r\nexport function lessTildeResolutionPlugin() {\r\n return {\r\n install(less: any, pluginManager: any) {\r\n class TildeFileManager extends less.FileManager {\r\n supports(filename: string) {\r\n return filename.startsWith(\"~\");\r\n }\r\n loadFile(filename: string, currentDirectory: string, options: any, environment: any) {\r\n // `~pkg/...` → `pkg/...`,让默认 FileManager 从 node_modules 解析\r\n return super.loadFile(filename.slice(1), currentDirectory, options, environment);\r\n }\r\n }\r\n pluginManager.addFileManager(new TildeFileManager());\r\n },\r\n };\r\n}\r\n\r\n/**\r\n * 组装 `css.preprocessorOptions.less`:映射 webpack `less-loader` 选项,\r\n * `less.resolveTilde: true` 时注入 `~` 解析插件(默认关闭)。\r\n * @public\r\n */\r\nexport function buildLessOptions(less?: LessOptions) {\r\n const resolveTilde = less?.resolveTilde === true;\r\n return {\r\n ...(less?.additionalData != null ? { additionalData: less.additionalData } : {}),\r\n ...(less?.modifyVars != null ? { modifyVars: less.modifyVars } : {}),\r\n ...(less?.javascriptEnabled != null ? { javascriptEnabled: less.javascriptEnabled } : {}),\r\n ...(resolveTilde ? { plugins: [lessTildeResolutionPlugin()] } : {}),\r\n };\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../src/plugins/less-tilde.ts"],"names":[],"mappings":";AAoCO,SAAS,yBAAA,GAA4B;AAC1C,EAAA,OAAO;AAAA,IACL,OAAA,CAAQ,MAAsB,aAAA,EAAkC;AAAA,MAC9D,MAAM,gBAAA,SAAyB,IAAA,CAAK,WAAA,CAAY;AAAA,QACrC,SAAS,QAAA,EAAkB;AAClC,UAAA,OAAO,QAAA,CAAS,WAAW,GAAG,CAAA;AAAA,QAChC;AAAA,QACS,QAAA,CACP,QAAA,EACA,gBAAA,EACA,OAAA,EACA,WAAA,EACA;AAEA,UAAA,OAAO,KAAA,CAAM,SAAS,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA,EAAG,gBAAA,EAAkB,SAAS,WAAW,CAAA;AAAA,QACjF;AAAA;AAEF,MAAA,aAAA,CAAc,cAAA,CAAe,IAAI,gBAAA,EAAkB,CAAA;AAAA,IACrD;AAAA,GACF;AACF;AAOO,SAAS,iBAAiB,IAAA,EAAoB;AACnD,EAAA,MAAM,YAAA,GAAe,MAAM,YAAA,KAAiB,IAAA;AAC5C,EAAA,OAAO;AAAA,IACL,GAAI,MAAM,cAAA,IAAkB,IAAA,GAAO,EAAE,cAAA,EAAgB,IAAA,CAAK,cAAA,EAAe,GAAI,EAAC;AAAA,IAC9E,GAAI,MAAM,UAAA,IAAc,IAAA,GAAO,EAAE,UAAA,EAAY,IAAA,CAAK,UAAA,EAAW,GAAI,EAAC;AAAA,IAClE,GAAI,MAAM,iBAAA,IAAqB,IAAA,GAAO,EAAE,iBAAA,EAAmB,IAAA,CAAK,iBAAA,EAAkB,GAAI,EAAC;AAAA,IACvF,GAAI,eAAe,EAAE,OAAA,EAAS,CAAC,yBAAA,EAA2B,CAAA,EAAE,GAAI;AAAC,GACnE;AACF","file":"less-tilde.js","sourcesContent":["import type { LessOptions } from \"../types.ts\";\r\n\r\n/**\r\n * less 插件注入的 FileManager 实例表面类型。less@4 不自带 TS 类型,按实际使用的最小面声明。\r\n */\r\ninterface LessFileManagerInstance {\r\n supports(filename: string): boolean;\r\n loadFile(\r\n filename: string,\r\n currentDirectory: string,\r\n options: unknown,\r\n environment: unknown,\r\n ): unknown;\r\n}\r\n\r\n/** less.js 传给插件 `install` 的 less 环境实例表面。 */\r\ninterface LessPluginHost {\r\n FileManager: new (...args: unknown[]) => LessFileManagerInstance;\r\n}\r\n\r\n/** less.js 插件管理器表面。 */\r\ninterface LessPluginManager {\r\n addFileManager(manager: LessFileManagerInstance): void;\r\n}\r\n\r\n/**\r\n * Less 插件:把 webpack 遗留的 `~pkg/...` 导入解析到 node_modules。\r\n *\r\n * Less 自身不认识 `~`(那是 webpack `less-loader` 的约定:从 node_modules 解析);Vite 的\r\n * Less 预处理器也不处理 `~`,会回退到 Less 默认 FileManager 去查找 `node_modules/~pkg/...` 而失败。\r\n * 本插件注册一个 FileManager:仅当导入以 `~` 开头时拦截,去掉前缀后交给默认 FileManager 解析\r\n * (Vite 恒向 `less.render` 注入 `paths: [\"node_modules\"]`)。\r\n *\r\n * 第三方包(如 formily 系)自带 `@import \"~antd/...\"` 时尤其需要——消费方无法修改 node_modules。\r\n * @public\r\n */\r\nexport function lessTildeResolutionPlugin() {\r\n return {\r\n install(less: LessPluginHost, pluginManager: LessPluginManager) {\r\n class TildeFileManager extends less.FileManager {\r\n override supports(filename: string) {\r\n return filename.startsWith(\"~\");\r\n }\r\n override loadFile(\r\n filename: string,\r\n currentDirectory: string,\r\n options: unknown,\r\n environment: unknown,\r\n ) {\r\n // `~pkg/...` → `pkg/...`,让默认 FileManager 从 node_modules 解析\r\n return super.loadFile(filename.slice(1), currentDirectory, options, environment);\r\n }\r\n }\r\n pluginManager.addFileManager(new TildeFileManager());\r\n },\r\n };\r\n}\r\n\r\n/**\r\n * 组装 `css.preprocessorOptions.less`:映射 webpack `less-loader` 选项,\r\n * `less.resolveTilde: true` 时注入 `~` 解析插件(默认关闭)。\r\n * @public\r\n */\r\nexport function buildLessOptions(less?: LessOptions) {\r\n const resolveTilde = less?.resolveTilde === true;\r\n return {\r\n ...(less?.additionalData != null ? { additionalData: less.additionalData } : {}),\r\n ...(less?.modifyVars != null ? { modifyVars: less.modifyVars } : {}),\r\n ...(less?.javascriptEnabled != null ? { javascriptEnabled: less.javascriptEnabled } : {}),\r\n ...(resolveTilde ? { plugins: [lessTildeResolutionPlugin()] } : {}),\r\n };\r\n}\r\n"]}
@@ -30,7 +30,7 @@ const jsxInJsPlugin = {
30
30
  sourceType: "module",
31
31
  jsxRuntime: "automatic",
32
32
  jsxImportSource: "react",
33
- } as any);
33
+ } as Parameters<typeof transformWithOxc>[2] & { lang: "jsx" });
34
34
  } catch {
35
35
  return; // 转换失败交回后续管线(可能是已无 JSX 的正常 .js)
36
36
  }
package/docs/api.md CHANGED
@@ -291,7 +291,7 @@ export default defineConfig(({ command, mode }) =>
291
291
  | `entry` | 库入口,相对 `rootDir`。默认 `"src/index.ts"` |
292
292
  | `name` | UMD / IIFE 全局名。`formats` 含 `umd` 或 `iife` 的 build 必填 |
293
293
  | `outDir` | 产物目录。默认 `"lib"` |
294
- | `fileName` | 产物文件名。未传时:单一 format 为 `index.js`;多 format 时 ESM 为 `index.js`,其余 `index.<format>.js` |
294
+ | `fileName` | 产物文件名。未传时:单一 format 为 `index.js`;多 format 时 ESM 为 `index.js`,**cjs 为 `index.cjs`**(宿主为 `"type":"module"` 时 `.js` 会被当 ESM,必须用 `.cjs` 后缀),其余 `index.<format>.js` |
295
295
  | `cssFileName` | CSS 产物名(不含扩展名)。默认 `"index"` |
296
296
  | `formats` | 默认 `["umd"]`(对齐 webpack `libraryTarget: "umd"`) |
297
297
  | `externals` | 仅 build 生效。未传:`react` / `react-dom`(含子路径如 `react/jsx-runtime`);`false` 不外置;数组**整表替换**(追加请展开 `DEFAULT_LIBRARY_EXTERNALS`) |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hzab/vite-config",
3
- "version": "0.0.2-alpha.0",
3
+ "version": "0.0.3-alpha.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -49,7 +49,13 @@ function resolveLibraryFileName(
49
49
  if (formats.length === 1) {
50
50
  return () => "index.js";
51
51
  }
52
- return (format) => (format === "es" ? "index.js" : `index.${format}.js`);
52
+ // cjs 产物用 `.cjs` 后缀:宿主包若声明 `"type": "module"`,`.js` 会被当作 ESM 解析,
53
+ // 而 cjs 产物内容是 CommonJS(module.exports),require() 会因 ESM 误判而失败。
54
+ return (format) => {
55
+ if (format === "es") return "index.js";
56
+ if (format === "cjs") return "index.cjs";
57
+ return `index.${format}.js`;
58
+ };
53
59
  }
54
60
 
55
61
  function resolveLibraryGlobals(
@@ -1,5 +1,28 @@
1
1
  import type { LessOptions } from "../types.ts";
2
2
 
3
+ /**
4
+ * less 插件注入的 FileManager 实例表面类型。less@4 不自带 TS 类型,按实际使用的最小面声明。
5
+ */
6
+ interface LessFileManagerInstance {
7
+ supports(filename: string): boolean;
8
+ loadFile(
9
+ filename: string,
10
+ currentDirectory: string,
11
+ options: unknown,
12
+ environment: unknown,
13
+ ): unknown;
14
+ }
15
+
16
+ /** less.js 传给插件 `install` 的 less 环境实例表面。 */
17
+ interface LessPluginHost {
18
+ FileManager: new (...args: unknown[]) => LessFileManagerInstance;
19
+ }
20
+
21
+ /** less.js 插件管理器表面。 */
22
+ interface LessPluginManager {
23
+ addFileManager(manager: LessFileManagerInstance): void;
24
+ }
25
+
3
26
  /**
4
27
  * Less 插件:把 webpack 遗留的 `~pkg/...` 导入解析到 node_modules。
5
28
  *
@@ -13,12 +36,17 @@ import type { LessOptions } from "../types.ts";
13
36
  */
14
37
  export function lessTildeResolutionPlugin() {
15
38
  return {
16
- install(less: any, pluginManager: any) {
39
+ install(less: LessPluginHost, pluginManager: LessPluginManager) {
17
40
  class TildeFileManager extends less.FileManager {
18
- supports(filename: string) {
41
+ override supports(filename: string) {
19
42
  return filename.startsWith("~");
20
43
  }
21
- loadFile(filename: string, currentDirectory: string, options: any, environment: any) {
44
+ override loadFile(
45
+ filename: string,
46
+ currentDirectory: string,
47
+ options: unknown,
48
+ environment: unknown,
49
+ ) {
22
50
  // `~pkg/...` → `pkg/...`,让默认 FileManager 从 node_modules 解析
23
51
  return super.loadFile(filename.slice(1), currentDirectory, options, environment);
24
52
  }