+44
-1
@@ -1,10 +1,47 @@
|
|||||||
// @ts-check
|
// @ts-check
|
||||||
|
|
||||||
|
import { writeFile, mkdir } from 'node:fs/promises';
|
||||||
import { fileURLToPath } from 'node:url';
|
import { fileURLToPath } from 'node:url';
|
||||||
|
|
||||||
import esbuild from 'esbuild';
|
import esbuild from 'esbuild';
|
||||||
|
|
||||||
esbuild.build({
|
const isTrace =
|
||||||
|
process.argv.slice(2).findIndex((arg) => arg === '--trace') !== -1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Writes files with needed imports to `../node_modules/.cache/wg-easy/trace.mjs`
|
||||||
|
*
|
||||||
|
* @param {import('esbuild').Metafile} metafile
|
||||||
|
*/
|
||||||
|
async function writeTrace(metafile) {
|
||||||
|
const paths = [
|
||||||
|
...new Set(
|
||||||
|
Object.values(metafile.outputs).flatMap((v) =>
|
||||||
|
v.imports.map((v) => v.path)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
];
|
||||||
|
const imports = paths.map((v) => `import '${v}';`).join('\n');
|
||||||
|
|
||||||
|
const folderUrl = new URL('../node_modules/.cache/wg-easy/', import.meta.url);
|
||||||
|
const folder = fileURLToPath(folderUrl);
|
||||||
|
const filePath = fileURLToPath(new URL('./trace.mjs', folderUrl));
|
||||||
|
|
||||||
|
await mkdir(folder, { recursive: true });
|
||||||
|
await writeFile(filePath, imports);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getOverrides() {
|
||||||
|
if (isTrace) {
|
||||||
|
return {
|
||||||
|
outfile: undefined,
|
||||||
|
write: false,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = await esbuild.build({
|
||||||
entryPoints: [fileURLToPath(new URL('./index.ts', import.meta.url))],
|
entryPoints: [fileURLToPath(new URL('./index.ts', import.meta.url))],
|
||||||
bundle: true,
|
bundle: true,
|
||||||
outfile: fileURLToPath(new URL('../.output/server/cli.mjs', import.meta.url)),
|
outfile: fileURLToPath(new URL('../.output/server/cli.mjs', import.meta.url)),
|
||||||
@@ -12,4 +49,10 @@ esbuild.build({
|
|||||||
format: 'esm',
|
format: 'esm',
|
||||||
packages: 'external',
|
packages: 'external',
|
||||||
logLevel: 'info',
|
logLevel: 'info',
|
||||||
|
metafile: true,
|
||||||
|
...getOverrides(),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (isTrace) {
|
||||||
|
await writeTrace(result.metafile);
|
||||||
|
}
|
||||||
|
|||||||
+5
-1
@@ -166,7 +166,11 @@ export default defineNuxtConfig({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
externals: {
|
externals: {
|
||||||
traceInclude: [fileURLToPath(new URL('./cli/index.ts', import.meta.url))],
|
traceInclude: [
|
||||||
|
fileURLToPath(
|
||||||
|
new URL('./node_modules/.cache/wg-easy/trace.mjs', import.meta.url)
|
||||||
|
),
|
||||||
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
alias: {
|
alias: {
|
||||||
|
|||||||
+2
-1
@@ -5,7 +5,7 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "nuxt build && pnpm cli:build",
|
"build": "pnpm cli:trace && nuxt build && pnpm cli:build",
|
||||||
"dev": "nuxt dev",
|
"dev": "nuxt dev",
|
||||||
"generate": "nuxt generate",
|
"generate": "nuxt generate",
|
||||||
"preview": "nuxt preview",
|
"preview": "nuxt preview",
|
||||||
@@ -16,6 +16,7 @@
|
|||||||
"typecheck": "nuxt typecheck",
|
"typecheck": "nuxt typecheck",
|
||||||
"check:all": "pnpm typecheck && pnpm lint && pnpm format:check && pnpm build",
|
"check:all": "pnpm typecheck && pnpm lint && pnpm format:check && pnpm build",
|
||||||
"db:generate": "drizzle-kit generate",
|
"db:generate": "drizzle-kit generate",
|
||||||
|
"cli:trace": "node cli/build.js --trace",
|
||||||
"cli:build": "node cli/build.js",
|
"cli:build": "node cli/build.js",
|
||||||
"cli:dev": "tsx cli/index.ts",
|
"cli:dev": "tsx cli/index.ts",
|
||||||
"test:unit": "vitest run --project unit"
|
"test:unit": "vitest run --project unit"
|
||||||
|
|||||||
Reference in New Issue
Block a user