xzh-vite-plugin-version 1.0.3 → 1.0.5

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 CHANGED
@@ -1,4 +1,4 @@
1
- # @xzh/vite-plugin-version
1
+ # xzh-vite-plugin-version
2
2
 
3
3
  > 一个 Vite 插件,用于在构建时生成包含版本信息的 version.json 文件
4
4
 
@@ -13,11 +13,11 @@
13
13
  ## 安装
14
14
 
15
15
  ```bash
16
- npm install @xzh/vite-plugin-version -D
16
+ npm install xzh-vite-plugin-version -D
17
17
  # 或
18
- pnpm add @xzh/vite-plugin-version -D
18
+ pnpm add xzh-vite-plugin-version -D
19
19
  # 或
20
- yarn add @xzh/vite-plugin-version -D
20
+ yarn add xzh-vite-plugin-version -D
21
21
  ```
22
22
 
23
23
  ## 使用方法
@@ -27,7 +27,7 @@ yarn add @xzh/vite-plugin-version -D
27
27
  ```ts
28
28
  // vite.config.ts
29
29
  import { defineConfig } from "vite";
30
- import versionPlugin from "@xzh/vite-plugin-version";
30
+ import versionPlugin from "xzh-vite-plugin-version";
31
31
 
32
32
  export default defineConfig({
33
33
  plugins: [versionPlugin()],
@@ -49,7 +49,7 @@ export default defineConfig({
49
49
 
50
50
  ```ts
51
51
  import { defineConfig } from "vite";
52
- import versionPlugin from "@xzh/vite-plugin-version";
52
+ import versionPlugin from "xzh-vite-plugin-version";
53
53
 
54
54
  export default defineConfig({
55
55
  plugins: [
package/dist/index.d.ts CHANGED
@@ -45,4 +45,5 @@ interface VersionPluginOptions {
45
45
  */
46
46
  declare function versionPlugin(options?: VersionPluginOptions): Plugin;
47
47
 
48
- export { type VersionInfo, type VersionPluginOptions, versionPlugin as default, versionPlugin };
48
+ export { versionPlugin as default, versionPlugin };
49
+ export type { VersionInfo, VersionPluginOptions };
package/dist/index.js CHANGED
@@ -1,74 +1 @@
1
- import { resolve } from 'path';
2
- import fs from 'fs';
3
- import { execSync } from 'child_process';
4
-
5
- // src/index.ts
6
- function versionPlugin(options = {}) {
7
- const {
8
- name: pkgName,
9
- version: pkgVersion,
10
- outDir = "",
11
- filename = "version.json",
12
- gitCommit = true,
13
- transform,
14
- verbose = true
15
- } = options;
16
- return {
17
- name: "vite-plugin-version",
18
- apply: "build",
19
- writeBundle({ dir }) {
20
- try {
21
- let name = pkgName;
22
- let version = pkgVersion;
23
- if (!name || !version) {
24
- const pkgPath = resolve(process.cwd(), "package.json");
25
- if (fs.existsSync(pkgPath)) {
26
- const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
27
- name = name || pkg.name;
28
- version = version || pkg.version;
29
- }
30
- }
31
- let commitHash = "unknown";
32
- if (gitCommit) {
33
- try {
34
- commitHash = execSync("git rev-parse --short HEAD").toString().trim();
35
- } catch {
36
- commitHash = "unknown";
37
- }
38
- }
39
- const versionInfo = {
40
- name: name || "unknown",
41
- version: version || "0.0.0",
42
- buildTime: (/* @__PURE__ */ new Date()).toISOString(),
43
- gitCommit: commitHash
44
- };
45
- const finalInfo = transform ? transform(versionInfo) : versionInfo;
46
- const buildDir = dir || resolve(process.cwd(), "dist");
47
- const outputPath = resolve(buildDir, outDir, filename);
48
- const outputDir = resolve(buildDir, outDir);
49
- if (!fs.existsSync(outputDir)) {
50
- fs.mkdirSync(outputDir, { recursive: true });
51
- }
52
- fs.writeFileSync(outputPath, JSON.stringify(finalInfo, null, 2), "utf-8");
53
- if (verbose) {
54
- console.log("\n\u2705 \u7248\u672C\u4FE1\u606F\u6587\u4EF6\u5DF2\u751F\u6210:");
55
- console.log(` \u8DEF\u5F84: ${outputPath}`);
56
- console.log(` \u7248\u672C: ${versionInfo.version}`);
57
- if (gitCommit) {
58
- console.log(` Git \u63D0\u4EA4: ${versionInfo.gitCommit}`);
59
- }
60
- console.log(` \u6784\u5EFA\u65F6\u95F4: ${versionInfo.buildTime}
61
- `);
62
- }
63
- } catch (error) {
64
- console.error("\u274C \u751F\u6210\u7248\u672C\u4FE1\u606F\u6587\u4EF6\u5931\u8D25:", error);
65
- throw error;
66
- }
67
- }
68
- };
69
- }
70
- var index_default = versionPlugin;
71
-
72
- export { index_default as default, versionPlugin };
73
- //# sourceMappingURL=index.js.map
74
- //# sourceMappingURL=index.js.map
1
+ import{resolve as t}from"path";import n from"fs";import{execSync as r}from"child_process";function i(i={}){const{name:o,version:e,outDir:s="",filename:m="version.json",gitCommit:a=!0,transform:c,verbose:u=!0}=i;return{name:"vite-plugin-version",apply:"build",writeBundle({dir:i}){try{let u=o,f=e;if(!u||!f){const r=t(process.cwd(),"package.json");if(n.existsSync(r)){const t=JSON.parse(n.readFileSync(r,"utf-8"));u=u||t.name,f=f||t.version}}let p="unknown";if(a)try{p=r("git rev-parse --short HEAD").toString().trim()}catch{p="unknown"}const l=new Date,g={name:u||"unknown",version:f||"0.0.0",buildTime:`${l.getFullYear()}年${String(l.getMonth()+1).padStart(2,"0")}月${String(l.getDate()).padStart(2,"0")}日 ${String(l.getHours()).padStart(2,"0")}:${String(l.getMinutes()).padStart(2,"0")}:${String(l.getSeconds()).padStart(2,"0")}`,gitCommit:p},v=c?c(g):g,d=i||t(process.cwd(),"dist"),S=t(d,s,m),h=t(d,s);n.existsSync(h)||n.mkdirSync(h,{recursive:!0}),n.writeFileSync(S,JSON.stringify(v,null,2),"utf-8")}catch(t){throw t}}}}export{i as default,i as versionPlugin};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xzh-vite-plugin-version",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "A Vite plugin that generates version.json file with build info",
5
5
  "author": "SwordGate",
6
6
  "license": "MIT",
@@ -27,10 +27,20 @@
27
27
  "vite": ">=4.0.0"
28
28
  },
29
29
  "devDependencies": {
30
+ "@rollup/plugin-commonjs": "29.0.0",
31
+ "@rollup/plugin-json": "6.1.0",
32
+ "@rollup/plugin-node-resolve": "16.0.3",
33
+ "@rollup/plugin-terser": "0.4.4",
34
+ "@rollup/plugin-typescript": "12.3.0",
30
35
  "@types/node": "^20.19.2",
31
- "tsup": "^8.4.0",
36
+ "@vitest/ui": "4.0.18",
37
+ "rollup": "4.57.0",
38
+ "rollup-plugin-dts": "6.3.0",
39
+ "terser": "5.46.0",
40
+ "tslib": "2.8.1",
32
41
  "typescript": "^5.8.2",
33
- "vite": "^5.4.11"
42
+ "vite": "^5.4.11",
43
+ "vitest": "4.0.18"
34
44
  },
35
45
  "engines": {
36
46
  "node": ">=16.0.0"
@@ -44,7 +54,11 @@
44
54
  },
45
55
  "homepage": "https://github.com/xzhdev/vite-plugin-version#readme",
46
56
  "scripts": {
47
- "build": "tsup",
48
- "dev": "tsup --watch"
57
+ "build": "rollup -c",
58
+ "dev": "rollup -c --watch",
59
+ "test": "vitest",
60
+ "test:ui": "vitest --ui",
61
+ "test:run": "vitest run",
62
+ "test:coverage": "vitest run --coverage"
49
63
  }
50
64
  }
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { Plugin } from \"vite\";\nimport { resolve } from \"path\";\nimport fs from \"fs\";\nimport { execSync } from \"child_process\";\n\nexport interface VersionInfo {\n name: string;\n version: string;\n buildTime: string;\n gitCommit: string;\n}\n\nexport interface VersionPluginOptions {\n /**\n * 包名(默认从 process.cwd() 的 package.json 读取)\n */\n name?: string;\n /**\n * 版本号(默认从 process.cwd() 的 package.json 读取)\n */\n version?: string;\n /**\n * 输出目录(相对于 build.outDir 或 process.cwd())\n * @default '' (输出到构建根目录)\n */\n outDir?: string;\n /**\n * 输出文件名\n * @default 'version.json'\n */\n filename?: string;\n /**\n * 是否获取 git 提交哈希\n * @default true\n */\n gitCommit?: boolean;\n /**\n * 自定义版本信息转换器\n */\n transform?: (info: VersionInfo) => Record<string, any>;\n /**\n * 是否显示控制台输出\n * @default true\n */\n verbose?: boolean;\n}\n\n/**\n * Vite 插件:生成包含构建信息的 version.json 文件\n */\nexport function versionPlugin(options: VersionPluginOptions = {}): Plugin {\n const {\n name: pkgName,\n version: pkgVersion,\n outDir = \"\",\n filename = \"version.json\",\n gitCommit = true,\n transform,\n verbose = true\n } = options;\n\n return {\n name: \"vite-plugin-version\",\n apply: \"build\",\n writeBundle({ dir }) {\n try {\n // 如果未提供,从 package.json 获取包信息\n let name = pkgName;\n let version = pkgVersion;\n\n if (!name || !version) {\n const pkgPath = resolve(process.cwd(), \"package.json\");\n if (fs.existsSync(pkgPath)) {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n name = name || pkg.name;\n version = version || pkg.version;\n }\n }\n\n // 获取 git 提交哈希\n let commitHash = \"unknown\";\n if (gitCommit) {\n try {\n commitHash = execSync(\"git rev-parse --short HEAD\").toString().trim();\n } catch {\n commitHash = \"unknown\";\n }\n }\n\n // 构建版本信息\n const versionInfo: VersionInfo = {\n name: name || \"unknown\",\n version: version || \"0.0.0\",\n buildTime: new Date().toISOString(),\n gitCommit: commitHash\n };\n\n // 应用自定义转换器\n const finalInfo = transform ? transform(versionInfo) : versionInfo;\n\n // 确定输出路径\n const buildDir = dir || resolve(process.cwd(), \"dist\");\n const outputPath = resolve(buildDir, outDir, filename);\n\n // 确保输出目录存在\n const outputDir = resolve(buildDir, outDir);\n if (!fs.existsSync(outputDir)) {\n fs.mkdirSync(outputDir, { recursive: true });\n }\n\n // 写入版本文件\n fs.writeFileSync(outputPath, JSON.stringify(finalInfo, null, 2), \"utf-8\");\n\n if (verbose) {\n console.log(\"\\n✅ 版本信息文件已生成:\");\n console.log(` 路径: ${outputPath}`);\n console.log(` 版本: ${versionInfo.version}`);\n if (gitCommit) {\n console.log(` Git 提交: ${versionInfo.gitCommit}`);\n }\n console.log(` 构建时间: ${versionInfo.buildTime}\\n`);\n }\n } catch (error) {\n console.error(\"❌ 生成版本信息文件失败:\", error);\n throw error;\n }\n }\n };\n}\n\nexport default versionPlugin;\n"]}