Skip to content

Commit a6ef074

Browse files
committed
feat: miniprogram
1 parent 900cbd5 commit a6ef074

File tree

3 files changed

+64
-1
lines changed

3 files changed

+64
-1
lines changed

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
],
1010
"main": "./dist/cjs/full/index.js",
1111
"module": "./dist/es/full/index.js",
12+
"miniprogram": "./dist/miniprogram",
1213
"exports": {
1314
".": {
1415
"import": "./dist/es/full/index.js",
@@ -171,7 +172,8 @@
171172
"build:es": "vite build",
172173
"build:cjs": "tsx ./scripts/build-cjs.ts",
173174
"build:iife": "tsx ./scripts/build-iife.ts",
174-
"build": "conc \"pnpm:build:es\" \"pnpm:build:cjs\" \"pnpm:build:iife\"",
175+
"build:miniprogram": "tsx ./scripts/build-miniprogram.ts",
176+
"build": "conc \"pnpm:build:es\" \"pnpm:build:cjs\" \"pnpm:build:iife\" \"pnpm:build:miniprogram\"",
175177
"postbuild:es": "tsc -p ./tsconfig.pkg.json --declarationDir ./dist/es",
176178
"postbuild:cjs": "tsc -p ./tsconfig.pkg.json --declarationDir ./dist/cjs",
177179
"postbuild": "conc \"pnpm:copy:wasm\" \"pnpm:docs:build\"",
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import type { PluginItem } from "@babel/core";
2+
3+
export function miniprogramPatch(): PluginItem {
4+
return {
5+
visitor: {
6+
Identifier(path) {
7+
if (path.node.name !== "WebAssembly") {
8+
return;
9+
}
10+
path.node.name = "WXWebAssembly";
11+
},
12+
},
13+
};
14+
}

scripts/build-miniprogram.ts

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import { writeFile } from "node:fs/promises";
2+
import { type LibraryOptions, build } from "vite";
3+
import babel from "vite-plugin-babel";
4+
import viteConfig from "../vite.config.js";
5+
import { miniprogramPatch } from "./babel-plugin-miniprogram-patch";
6+
7+
async function buildCjs() {
8+
await build({
9+
...viteConfig,
10+
build: {
11+
...viteConfig.build,
12+
target: ["es2018"],
13+
lib: {
14+
...(viteConfig.build?.lib as LibraryOptions),
15+
entry: {
16+
index: "./src/full/index.ts",
17+
},
18+
formats: ["cjs"],
19+
},
20+
outDir: "dist/miniprogram",
21+
rollupOptions: {
22+
...viteConfig.build?.rollupOptions,
23+
output: {
24+
...viteConfig.build?.rollupOptions?.output,
25+
manualChunks: {},
26+
},
27+
},
28+
},
29+
plugins: [
30+
...viteConfig.plugins!,
31+
babel({
32+
babelConfig: {
33+
plugins: [miniprogramPatch()],
34+
},
35+
filter: /zxing_(reader|writer|full)\.js$/,
36+
include: /zxing_(reader|writer|full)\.js$/,
37+
}),
38+
],
39+
configFile: false,
40+
});
41+
await writeFile(
42+
"dist/miniprogram/package.json",
43+
`${JSON.stringify({ type: "commonjs" }, undefined, 2)}\n`,
44+
);
45+
}
46+
47+
buildCjs();

0 commit comments

Comments
 (0)