@gct-paas/build 0.1.14 → 0.1.16

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/CHANGELOG.md CHANGED
@@ -7,6 +7,18 @@
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.1.16] - 2026-05-28
11
+
12
+ ### Changed
13
+
14
+ - vite 编译 injectImportMapPlugin 插件支持禁用配置
15
+
16
+ ## [0.1.15] - 2026-05-13
17
+
18
+ ### Added
19
+
20
+ - 新增 vite 插件,底包编译时注入 banner 显示包名称和版本号
21
+
10
22
  ## [0.1.14] - 2026-05-13
11
23
 
12
24
  ### Added
@@ -69,9 +69,16 @@ Object.defineProperty(exports, "defineWebPluginViteConfig", {
69
69
  return _vitePluginConfig.defineWebPluginViteConfig;
70
70
  }
71
71
  });
72
+ Object.defineProperty(exports, "injectPkgBannerPlugin", {
73
+ enumerable: true,
74
+ get: function () {
75
+ return _injectPkgBannerPlugin.injectPkgBannerPlugin;
76
+ }
77
+ });
72
78
  var _viteBaseConfig = require("./vite-config/vite-base-config.cjs");
73
79
  var _viteConfig = require("./vite-config/vite-config.cjs");
74
80
  var _viteDevConfig = require("./vite-config/vite-dev-config.cjs");
75
81
  var _vitePkgDevConfig = require("./vite-config/vite-pkg-dev-config.cjs");
76
82
  var _vitePluginConfig = require("./vite-config/vite-plugin-config.cjs");
77
- var _viteProjectConfig = require("./vite-config/vite-project-config.cjs");
83
+ var _viteProjectConfig = require("./vite-config/vite-project-config.cjs");
84
+ var _injectPkgBannerPlugin = require("./vite-plugins/inject-pkg-banner-plugin.cjs");
@@ -4,3 +4,4 @@ export { defineDevViteConfig } from './vite-config/vite-dev-config';
4
4
  export { definePkgDevViteConfig } from './vite-config/vite-pkg-dev-config';
5
5
  export { definePluginViteConfig, defineDesignPluginViteConfig, defineMobilePluginViteConfig, definePadPluginViteConfig, defineWebPluginViteConfig, } from './vite-config/vite-plugin-config';
6
6
  export { defineProjectViteConfig } from './vite-config/vite-project-config';
7
+ export { injectPkgBannerPlugin } from './vite-plugins/inject-pkg-banner-plugin';
@@ -9,6 +9,7 @@ var _vite = require("vite");
9
9
  var _path = _interopRequireDefault(require("path"));
10
10
  var _vite2 = _interopRequireDefault(require("unocss/vite"));
11
11
  var _viteBaseConfig = require("./vite-base-config.cjs");
12
+ var _injectPkgBannerPlugin = require("../vite-plugins/inject-pkg-banner-plugin.cjs");
12
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
14
  function defineViteConfig(opts = {}) {
14
15
  const cwd = process.cwd();
@@ -37,7 +38,7 @@ function defineViteConfig(opts = {}) {
37
38
  fileName: "[name].[format].min"
38
39
  }
39
40
  },
40
- plugins: [(0, _vite2.default)({
41
+ plugins: [(0, _injectPkgBannerPlugin.injectPkgBannerPlugin)(), (0, _vite2.default)({
41
42
  hmrTopLevelAwait: false
42
43
  })]
43
44
  })), opts);
@@ -11,6 +11,9 @@ var _util = require("../../util/index.cjs");
11
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
12
  const DEV_IMPORT_MAP_PREFIX = ["/plugin-design/@id/", "/plugin-render-mobile/@id/", "/plugin-render-pad/@id/", "/plugin-render-web/@id/"];
13
13
  function injectImportMapPlugin(options = {}) {
14
+ if (options.disabled === true) {
15
+ return void 0;
16
+ }
14
17
  const {
15
18
  repoUrl = "https://git.gct-china.com/paas/frontend/gct-paas-cdn.git",
16
19
  filePath = "extras/import-map.json",
@@ -7,21 +7,27 @@ import type { Plugin } from 'vite';
7
7
  */
8
8
  export interface InjectImportMapPluginOptions {
9
9
  /**
10
- * 仓库地址,默认为 https://git.gct-china.com/paas/frontend/gct-paas-cdn.git
10
+ * 是否禁用注入 import-map 配置的插件,默认为 false,即启用注入 import-map 配置的插件,设置为 true 则禁用注入 import-map 配置的插件
11
11
  *
12
12
  * @type {boolean}
13
13
  */
14
+ disabled?: boolean;
15
+ /**
16
+ * 仓库地址,默认为 https://git.gct-china.com/paas/frontend/gct-paas-cdn.git
17
+ *
18
+ * @type {string}
19
+ */
14
20
  repoUrl?: string;
15
21
  /**
16
22
  * 需要读取的文件路径,默认为 extras/import-map.json
17
23
  *
18
- * @type {boolean}
24
+ * @type {string}
19
25
  */
20
26
  filePath?: string;
21
27
  /**
22
28
  * 指定分支,若未指定则自动获取当前主工程对应的分支
23
29
  *
24
- * @type {boolean}
30
+ * @type {string}
25
31
  */
26
32
  branch?: string;
27
33
  /**
@@ -34,4 +40,4 @@ export interface InjectImportMapPluginOptions {
34
40
  /**
35
41
  * 编译时读取并注入 import-map 配置的插件
36
42
  */
37
- export declare function injectImportMapPlugin(options?: InjectImportMapPluginOptions): Plugin;
43
+ export declare function injectImportMapPlugin(options?: InjectImportMapPluginOptions): Plugin | undefined;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.injectPkgBannerPlugin = injectPkgBannerPlugin;
7
+ var _nodeFs = _interopRequireDefault(require("node:fs"));
8
+ var _nodePath = _interopRequireDefault(require("node:path"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ function injectPkgBannerPlugin() {
11
+ let banner = "";
12
+ return {
13
+ name: "gct-vite-plugin:inject-pkg-banner",
14
+ apply: "build",
15
+ buildStart() {
16
+ const cwd = process.cwd();
17
+ const pkgPath = _nodePath.default.resolve(cwd, "package.json");
18
+ try {
19
+ const pkg = JSON.parse(_nodeFs.default.readFileSync(pkgPath, "utf-8"));
20
+ const name = pkg.name ?? "";
21
+ const version = pkg.version ?? "";
22
+ if (name || version) {
23
+ banner = `/*! ${name} v${version} */`;
24
+ }
25
+ } catch {
26
+ this.warn("injectPkgBannerPlugin: \u65E0\u6CD5\u8BFB\u53D6 package.json\uFF0C\u8DF3\u8FC7 banner \u6CE8\u5165");
27
+ }
28
+ },
29
+ renderChunk(code) {
30
+ if (!banner) return null;
31
+ return {
32
+ code: `${banner}
33
+ ${code}`,
34
+ map: null
35
+ };
36
+ }
37
+ };
38
+ }
@@ -0,0 +1,10 @@
1
+ import type { Plugin } from 'vite';
2
+ /**
3
+ * 在构建产物的每个 chunk 顶部注入当前包名称与版本信息注释的 Vite 插件
4
+ * 注入格式:/* {name} v{version} *\/
5
+ * 便于在浏览器 DevTools 中快速识别包版本
6
+ *
7
+ * @export
8
+ * @return {*} {Plugin}
9
+ */
10
+ export declare function injectPkgBannerPlugin(): Plugin;
@@ -4,3 +4,4 @@ export { defineDevViteConfig } from './vite-config/vite-dev-config';
4
4
  export { definePkgDevViteConfig } from './vite-config/vite-pkg-dev-config';
5
5
  export { definePluginViteConfig, defineDesignPluginViteConfig, defineMobilePluginViteConfig, definePadPluginViteConfig, defineWebPluginViteConfig, } from './vite-config/vite-plugin-config';
6
6
  export { defineProjectViteConfig } from './vite-config/vite-project-config';
7
+ export { injectPkgBannerPlugin } from './vite-plugins/inject-pkg-banner-plugin';
package/es/vite/index.mjs CHANGED
@@ -10,3 +10,4 @@ export {
10
10
  defineWebPluginViteConfig
11
11
  } from "./vite-config/vite-plugin-config.mjs";
12
12
  export { defineProjectViteConfig } from "./vite-config/vite-project-config.mjs";
13
+ export { injectPkgBannerPlugin } from "./vite-plugins/inject-pkg-banner-plugin.mjs";
@@ -2,6 +2,7 @@ import { defineConfig, mergeConfig } from "vite";
2
2
  import path from "path";
3
3
  import UnoCSS from "unocss/vite";
4
4
  import { defineViteBaseConfig } from "./vite-base-config.mjs";
5
+ import { injectPkgBannerPlugin } from "../vite-plugins/inject-pkg-banner-plugin.mjs";
5
6
  export function defineViteConfig(opts = {}) {
6
7
  const cwd = process.cwd();
7
8
  return mergeConfig(
@@ -32,6 +33,7 @@ export function defineViteConfig(opts = {}) {
32
33
  }
33
34
  },
34
35
  plugins: [
36
+ injectPkgBannerPlugin(),
35
37
  UnoCSS({ hmrTopLevelAwait: false })
36
38
  ]
37
39
  })
@@ -7,21 +7,27 @@ import type { Plugin } from 'vite';
7
7
  */
8
8
  export interface InjectImportMapPluginOptions {
9
9
  /**
10
- * 仓库地址,默认为 https://git.gct-china.com/paas/frontend/gct-paas-cdn.git
10
+ * 是否禁用注入 import-map 配置的插件,默认为 false,即启用注入 import-map 配置的插件,设置为 true 则禁用注入 import-map 配置的插件
11
11
  *
12
12
  * @type {boolean}
13
13
  */
14
+ disabled?: boolean;
15
+ /**
16
+ * 仓库地址,默认为 https://git.gct-china.com/paas/frontend/gct-paas-cdn.git
17
+ *
18
+ * @type {string}
19
+ */
14
20
  repoUrl?: string;
15
21
  /**
16
22
  * 需要读取的文件路径,默认为 extras/import-map.json
17
23
  *
18
- * @type {boolean}
24
+ * @type {string}
19
25
  */
20
26
  filePath?: string;
21
27
  /**
22
28
  * 指定分支,若未指定则自动获取当前主工程对应的分支
23
29
  *
24
- * @type {boolean}
30
+ * @type {string}
25
31
  */
26
32
  branch?: string;
27
33
  /**
@@ -34,4 +40,4 @@ export interface InjectImportMapPluginOptions {
34
40
  /**
35
41
  * 编译时读取并注入 import-map 配置的插件
36
42
  */
37
- export declare function injectImportMapPlugin(options?: InjectImportMapPluginOptions): Plugin;
43
+ export declare function injectImportMapPlugin(options?: InjectImportMapPluginOptions): Plugin | undefined;
@@ -4,6 +4,9 @@ import { simpleGit } from "simple-git";
4
4
  import { isBuildPluginEnv } from "../../util/index.mjs";
5
5
  const DEV_IMPORT_MAP_PREFIX = ["/plugin-design/@id/", "/plugin-render-mobile/@id/", "/plugin-render-pad/@id/", "/plugin-render-web/@id/"];
6
6
  export function injectImportMapPlugin(options = {}) {
7
+ if (options.disabled === true) {
8
+ return void 0;
9
+ }
7
10
  const {
8
11
  repoUrl = "https://git.gct-china.com/paas/frontend/gct-paas-cdn.git",
9
12
  filePath = "extras/import-map.json",
@@ -0,0 +1,10 @@
1
+ import type { Plugin } from 'vite';
2
+ /**
3
+ * 在构建产物的每个 chunk 顶部注入当前包名称与版本信息注释的 Vite 插件
4
+ * 注入格式:/* {name} v{version} *\/
5
+ * 便于在浏览器 DevTools 中快速识别包版本
6
+ *
7
+ * @export
8
+ * @return {*} {Plugin}
9
+ */
10
+ export declare function injectPkgBannerPlugin(): Plugin;
@@ -0,0 +1,28 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ export function injectPkgBannerPlugin() {
4
+ let banner = "";
5
+ return {
6
+ name: "gct-vite-plugin:inject-pkg-banner",
7
+ apply: "build",
8
+ buildStart() {
9
+ const cwd = process.cwd();
10
+ const pkgPath = path.resolve(cwd, "package.json");
11
+ try {
12
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
13
+ const name = pkg.name ?? "";
14
+ const version = pkg.version ?? "";
15
+ if (name || version) {
16
+ banner = `/*! ${name} v${version} */`;
17
+ }
18
+ } catch {
19
+ this.warn("injectPkgBannerPlugin: \u65E0\u6CD5\u8BFB\u53D6 package.json\uFF0C\u8DF3\u8FC7 banner \u6CE8\u5165");
20
+ }
21
+ },
22
+ renderChunk(code) {
23
+ if (!banner) return null;
24
+ return { code: `${banner}
25
+ ${code}`, map: null };
26
+ }
27
+ };
28
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gct-paas/build",
3
- "version": "0.1.14",
3
+ "version": "0.1.16",
4
4
  "type": "module",
5
5
  "description": "paas 平台核心包",
6
6
  "main": "dist/index.cjs",