Browse Source

fix: trace cli dependencies (#2683)

trace cli dependencies
master
Bernd Storath 5 days ago
committed by GitHub
parent
commit
915e559514
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 45
      src/cli/build.js
  2. 6
      src/nuxt.config.ts
  3. 3
      src/package.json

45
src/cli/build.js

@ -1,10 +1,47 @@
// @ts-check
import { writeFile, mkdir } from 'node:fs/promises';
import { fileURLToPath } from 'node:url';
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))],
bundle: true,
outfile: fileURLToPath(new URL('../.output/server/cli.mjs', import.meta.url)),
@ -12,4 +49,10 @@ esbuild.build({
format: 'esm',
packages: 'external',
logLevel: 'info',
metafile: true,
...getOverrides(),
});
if (isTrace) {
await writeTrace(result.metafile);
}

6
src/nuxt.config.ts

@ -166,7 +166,11 @@ export default defineNuxtConfig({
},
},
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: {

3
src/package.json

@ -5,7 +5,7 @@
"private": true,
"type": "module",
"scripts": {
"build": "nuxt build && pnpm cli:build",
"build": "pnpm cli:trace && nuxt build && pnpm cli:build",
"dev": "nuxt dev",
"generate": "nuxt generate",
"preview": "nuxt preview",
@ -16,6 +16,7 @@
"typecheck": "nuxt typecheck",
"check:all": "pnpm typecheck && pnpm lint && pnpm format:check && pnpm build",
"db:generate": "drizzle-kit generate",
"cli:trace": "node cli/build.js --trace",
"cli:build": "node cli/build.js",
"cli:dev": "tsx cli/index.ts",
"test:unit": "vitest run --project unit"

Loading…
Cancel
Save