vault backup: 2025-04-10 14:02:57
This commit is contained in:
143
.obsidian/plugins/obsidian-enhancing-export-main/vite.config.ts
vendored
Normal file
143
.obsidian/plugins/obsidian-enhancing-export-main/vite.config.ts
vendored
Normal file
@ -0,0 +1,143 @@
|
||||
import { exec } from 'child_process';
|
||||
import { defineConfig, loadEnv, Plugin, UserConfig } from 'vite';
|
||||
import { viteStaticCopy } from 'vite-plugin-static-copy';
|
||||
import solidPlugin from 'vite-plugin-solid';
|
||||
import builtins from 'builtin-modules';
|
||||
import path from 'path';
|
||||
import * as fsp from 'fs/promises';
|
||||
|
||||
|
||||
|
||||
const banner = `
|
||||
/*!
|
||||
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
||||
if you want to view the source, please visit the github repository https://github.com/mokeyish/obsidian-enhancing-export .
|
||||
*/
|
||||
`;
|
||||
|
||||
|
||||
export default defineConfig(async ({ mode }) => {
|
||||
const { normalize } = path;
|
||||
const { rm } = fsp;
|
||||
const prod = mode === 'production';
|
||||
|
||||
let { OUT_DIR } = loadEnv(mode, process.cwd(), ['OUT_']);
|
||||
|
||||
OUT_DIR = normalize(OUT_DIR);
|
||||
if (OUT_DIR != 'dist' && OUT_DIR != path.join(process.cwd(), 'dist')) {
|
||||
await rm('dist', { recursive: true });
|
||||
exec(process.platform === 'win32' ? `mklink /J dist ${OUT_DIR}` : `ln -s ${OUT_DIR} dist`);
|
||||
}
|
||||
|
||||
return {
|
||||
plugins: [
|
||||
solidPlugin(),
|
||||
viteStaticCopy({
|
||||
targets: [{
|
||||
src: 'manifest.json',
|
||||
dest: '.'
|
||||
}]
|
||||
}),
|
||||
loader({
|
||||
'.lua': 'binary',
|
||||
'.tex': 'binary',
|
||||
'.sty': 'binary'
|
||||
}), // src/resources.ts
|
||||
prod ? undefined : inject(['src/hmr.ts']),
|
||||
],
|
||||
build: {
|
||||
lib: {
|
||||
entry: 'src/main.ts',
|
||||
name: 'main',
|
||||
fileName: () => 'main.js',
|
||||
formats: ['cjs'],
|
||||
},
|
||||
minify: prod,
|
||||
sourcemap: prod ? false : 'inline',
|
||||
cssCodeSplit: false,
|
||||
emptyOutDir: false,
|
||||
// outDir: '',
|
||||
rollupOptions: {
|
||||
output: {
|
||||
exports: 'named',
|
||||
assetFileNames: (v) => v.name === 'style.css' ? 'styles.css' : v.name,
|
||||
banner,
|
||||
},
|
||||
external: [
|
||||
'obsidian',
|
||||
'electron',
|
||||
'@codemirror/autocomplete',
|
||||
'@codemirror/closebrackets',
|
||||
'@codemirror/collab',
|
||||
'@codemirror/commands',
|
||||
'@codemirror/comment',
|
||||
'@codemirror/fold',
|
||||
'@codemirror/gutter',
|
||||
'@codemirror/highlight',
|
||||
'@codemirror/history',
|
||||
'@codemirror/language',
|
||||
'@codemirror/lint',
|
||||
'@codemirror/matchbrackets',
|
||||
'@codemirror/panel',
|
||||
'@codemirror/rangeset',
|
||||
'@codemirror/rectangular-selection',
|
||||
'@codemirror/search',
|
||||
'@codemirror/state',
|
||||
'@codemirror/stream-parser',
|
||||
'@codemirror/text',
|
||||
'@codemirror/tooltip',
|
||||
'@codemirror/view',
|
||||
'@lezer/common',
|
||||
'@lezer/highlight',
|
||||
'@lezer/lr',
|
||||
...builtins
|
||||
],
|
||||
},
|
||||
}
|
||||
} as UserConfig;
|
||||
});
|
||||
|
||||
|
||||
const loader = (config: { [extention: string]: 'binary' }): Plugin => {
|
||||
const { extname } = path;
|
||||
return {
|
||||
name: 'binary-boader',
|
||||
enforce: 'pre',
|
||||
async load(id) {
|
||||
const format = config[extname(id)];
|
||||
if (format) {
|
||||
if (format === 'binary') {
|
||||
const buffer = await fsp.readFile(id);
|
||||
return {
|
||||
code: `export default Uint8Array.from(atob('${buffer.toString('base64')}'), c => c.charCodeAt(0));`
|
||||
};
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
const inject = (files: string[]): Plugin => {
|
||||
if (files && files.length > 0) {
|
||||
return {
|
||||
name: 'inject-code',
|
||||
async load(this, id) {
|
||||
const info = this.getModuleInfo(id);
|
||||
if (info.isEntry) {
|
||||
const code = await fsp.readFile(id, 'utf-8');
|
||||
const { relative, dirname, basename, extname, join } = path;
|
||||
const dir = dirname(id);
|
||||
const inject_code = files
|
||||
.map(v => relative(dir, v))
|
||||
.map(p => join('./', basename(p, extname(p))))
|
||||
.map(p => `import './${p}'`).join(';');
|
||||
return `
|
||||
${inject_code};
|
||||
${code}
|
||||
`;
|
||||
}
|
||||
},
|
||||
};
|
||||
}
|
||||
};
|
Reference in New Issue
Block a user