Skip to content
This repository has been archived by the owner on Jan 10, 2024. It is now read-only.

Commit

Permalink
chore: update build.config
Browse files Browse the repository at this point in the history
  • Loading branch information
pi0 committed Jul 4, 2023
1 parent a956dc7 commit acd778f
Showing 1 changed file with 38 additions and 32 deletions.
70 changes: 38 additions & 32 deletions build.config.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { defineBuildConfig } from 'unbuild'
import { dirname, resolve } from 'path'
import fse from 'fs-extra'
import { dirname, resolve } from "node:path";
import { defineBuildConfig } from "unbuild";
import fse from "fs-extra";

export default defineBuildConfig({
failOnWarn: false,
Expand All @@ -10,41 +10,47 @@ export default defineBuildConfig({
emitCJS: false,
replace: {
preventAssignment: false,
delimiters: ['', ''],
delimiters: ["", ""],
values: {
'const isBrowser = ': 'const isBrowser = true ||',
'window': '({})',
"await fetch(": 'await (globalThis.__shiki_fetch__||globalThis.fetch)('
}
"const isBrowser = ": "const isBrowser = true ||",
window: "({})",
"await fetch(": "await (globalThis.__shiki_fetch__||globalThis.fetch)(",
},
},
},
entries: [
'./src/shiki',
'./src/shiki.node'
],
entries: ["./src/shiki", "./src/shiki.node"],
hooks: {
async 'build:before'(ctx) {
const genDir = resolve(ctx.options.rootDir, 'gen')
await fse.mkdirp(genDir)
async "build:before"(ctx) {
const genDir = resolve(ctx.options.rootDir, "gen");
await fse.mkdirp(genDir);

const shiki = await import('shiki')
const shiki = await import("shiki");
const assets = [
...shiki.BUNDLED_LANGUAGES.map(lang => `languages/${lang.path}`),
...shiki.BUNDLED_THEMES.map(theme => `themes/${theme}.json`)
]
const assetsCode = `export default {\n${assets.map(asset => ` '${asset}': () => import('shiki/${asset}')`).join(',\n')}\n}`
await fse.writeFile(resolve(genDir, 'assets.ts'), assetsCode)
...shiki.BUNDLED_LANGUAGES.map((lang) => `languages/${lang.path}`),
...shiki.BUNDLED_THEMES.map((theme) => `themes/${theme}.json`),
];
const assetsCode = `export default {\n${assets
.map((asset) => ` '${asset}': () => import('shiki/${asset}')`)
.join(",\n")}\n}`;
await fse.writeFile(resolve(genDir, "assets.ts"), assetsCode);

const buff = await fse.readFile('./node_modules/shiki/dist/onig.wasm')
await fse.writeFile(resolve(genDir, 'onig.ts'), `export default () => "${buff.toString('base64')}"`)
const buff = await fse.readFile("./node_modules/shiki/dist/onig.wasm");
await fse.writeFile(
resolve(genDir, "onig.ts"),
`export default () => "${buff.toString("base64")}"`
);
},
async 'rollup:done'(ctx) {
const shikiDir = dirname(require.resolve('shiki/package.json'))
const assetsDir = resolve(ctx.options.outDir, 'assets')
for (const item of ['languages', 'themes', 'dist/onig.wasm']) {
await fse.copy(resolve(shikiDir, item), resolve(assetsDir, item))
async "rollup:done"(ctx) {
// eslint-disable-next-line unicorn/prefer-module
const shikiDir = dirname(require.resolve("shiki/package.json"));
const assetsDir = resolve(ctx.options.outDir, "assets");
for (const item of ["languages", "themes", "dist/onig.wasm"]) {
await fse.copy(resolve(shikiDir, item), resolve(assetsDir, item));
}
await fse.copy(resolve(shikiDir, 'dist/index.d.ts'), resolve(ctx.options.outDir, 'shiki.d.ts'))
}
}
})
await fse.copy(
resolve(shikiDir, "dist/index.d.ts"),
resolve(ctx.options.outDir, "shiki.d.ts")
);
},
},
});

0 comments on commit acd778f

Please sign in to comment.