cn-font-split
Version:
划时代的字体切割工具,CJK与任何字符!支持 otf、ttf、woff2 字体多线程切割,完美地细颗粒度地进行包大小控制。A revolutionary font subetter that supports CJK and any characters! It enables multi-threaded subset of otf, ttf, and woff2 fonts, allowing for precise control over package size.
82 lines (79 loc) • 2.54 kB
text/typescript
import { defineConfig } from 'vite';
import nodeExternals from 'rollup-plugin-node-externals';
import dts from 'vite-plugin-dts';
import fs from 'fs-extra';
import { viteStaticCopy } from 'vite-plugin-static-copy';
try {
fs.unlinkSync('./src/version');
} catch (e) {}
export default defineConfig(({ mode }) => {
return {
base: '',
plugins: [
mode === 'production' &&
nodeExternals({
builtinsPrefix: 'ignore',
include: ['bun:ffi'],
exclude: [
'memfs-browser',
'@xan105/ffi/koffi',
'@tybys/wasm-util',
],
}),
dts({
include: ['src/**/*', '../ffi/gen/index.ts'],
exclude: ['src/*.test.ts'],
}),
{
name: 'add deps',
transform(code, id) {
if (mode === 'production' && id.includes('memfs')) {
return 'import { Buffer } from "buffer";\n' + code;
}
if (id.includes('wasm-util.esm')) {
return code.replaceAll(
'process.env',
'import.meta.env',
);
}
},
},
viteStaticCopy({
targets: [
{
src: '../ffi/scripts/init.ps1',
dest: '',
},
{
src: '../ffi/scripts/init.sh',
dest: '',
},
],
}),
],
build: {
target: 'esnext',
lib: {
entry: [
'./src/node/index.ts',
'./src/bun/index.ts',
'./src/deno/index.ts',
'./src/cli.ts',
],
formats: ['es', 'cjs'],
},
minify: true, // 禁用代码混淆
sourcemap: true,
assetsDir: '',
assetsInlineLimit: 0,
rollupOptions: {
output: {
assetFileNames: `[name]-[hash].[ext]`,
exports: 'named',
preserveModules: true,
preserveModulesRoot: './src',
},
},
},
};
});