Skip to content

Commit

Permalink
feat: miniprogram
Browse files Browse the repository at this point in the history
  • Loading branch information
Sec-ant committed Jan 29, 2025
1 parent 900cbd5 commit a6ef074
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 1 deletion.
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
],
"main": "./dist/cjs/full/index.js",
"module": "./dist/es/full/index.js",
"miniprogram": "./dist/miniprogram",
"exports": {
".": {
"import": "./dist/es/full/index.js",
Expand Down Expand Up @@ -171,7 +172,8 @@
"build:es": "vite build",
"build:cjs": "tsx ./scripts/build-cjs.ts",
"build:iife": "tsx ./scripts/build-iife.ts",
"build": "conc \"pnpm:build:es\" \"pnpm:build:cjs\" \"pnpm:build:iife\"",
"build:miniprogram": "tsx ./scripts/build-miniprogram.ts",
"build": "conc \"pnpm:build:es\" \"pnpm:build:cjs\" \"pnpm:build:iife\" \"pnpm:build:miniprogram\"",
"postbuild:es": "tsc -p ./tsconfig.pkg.json --declarationDir ./dist/es",
"postbuild:cjs": "tsc -p ./tsconfig.pkg.json --declarationDir ./dist/cjs",
"postbuild": "conc \"pnpm:copy:wasm\" \"pnpm:docs:build\"",
Expand Down
14 changes: 14 additions & 0 deletions scripts/babel-plugin-miniprogram-patch.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import type { PluginItem } from "@babel/core";

export function miniprogramPatch(): PluginItem {
return {
visitor: {
Identifier(path) {
if (path.node.name !== "WebAssembly") {
return;
}
path.node.name = "WXWebAssembly";
},
},
};
}
47 changes: 47 additions & 0 deletions scripts/build-miniprogram.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import { writeFile } from "node:fs/promises";
import { type LibraryOptions, build } from "vite";
import babel from "vite-plugin-babel";
import viteConfig from "../vite.config.js";
import { miniprogramPatch } from "./babel-plugin-miniprogram-patch";

async function buildCjs() {
await build({
...viteConfig,
build: {
...viteConfig.build,
target: ["es2018"],
lib: {
...(viteConfig.build?.lib as LibraryOptions),
entry: {
index: "./src/full/index.ts",
},
formats: ["cjs"],
},
outDir: "dist/miniprogram",
rollupOptions: {
...viteConfig.build?.rollupOptions,
output: {
...viteConfig.build?.rollupOptions?.output,
manualChunks: {},
},
},
},
plugins: [
...viteConfig.plugins!,
babel({
babelConfig: {
plugins: [miniprogramPatch()],
},
filter: /zxing_(reader|writer|full)\.js$/,
include: /zxing_(reader|writer|full)\.js$/,
}),
],
configFile: false,
});
await writeFile(
"dist/miniprogram/package.json",
`${JSON.stringify({ type: "commonjs" }, undefined, 2)}\n`,
);
}

buildCjs();

0 comments on commit a6ef074

Please sign in to comment.