chore: improve monorepo

This commit is contained in:
Simon
2025-12-05 20:00:31 +08:00
parent b9b812cc25
commit d756a2ef1c
6 changed files with 19 additions and 5 deletions

View File

@@ -27,7 +27,11 @@ This is a **monorepo** with npm workspaces containing **two main packages**:
1. **Core Library** (`packages/page-agent/`) - Pure JavaScript/TypeScript AI agent library for browser DOM automation, published as `page-agent` on npm
2. **Website** (`packages/website/`) - React documentation and landing page. Also as demo and test page for the core lib. private package `@page-agent/website`
We use a simplified monorepo solution with native npm-workspace. No fancy tooling. Hoisting is required.
We use a simplified monorepo solution with native npm-workspace + ts reference + vite alias. No fancy tooling. Hoisting is required.
- When developing. Use alias so that we don't have to pre-build.
- When bundling. Use external and disable ts `paths` alias to leave deps out.
- When bundling `UMD` or `Website`. Bundle everything including local packages.
## 🤝 How to Contribute

1
package-lock.json generated
View File

@@ -7023,7 +7023,6 @@
"@vitejs/plugin-react-swc": "^4.1.0",
"i18next": "^25.7.1",
"i18next-browser-languagedetector": "^8.2.0",
"page-agent": "*",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"react-i18next": "^16.1.4",

View File

@@ -47,6 +47,9 @@ const libConfig = {
// ============================================================================
// UMD Config (Browser Bundle for CDN)
// - alias all local packages so that they can be build in
// - no external
// - no d.ts. dts does not work with monorepo aliasing
// ============================================================================
/** @type {import('vite').UserConfig} */
const umdConfig = {

View File

@@ -0,0 +1,9 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
// @workaround DTS bug
// dts do not work with monorepo path mapping
// disable path mapping for it
"paths": {}
}
}

View File

@@ -13,7 +13,7 @@ console.log(chalk.cyan(`📦 Building @page-agent/page-controller`))
export default defineConfig({
clearScreen: false,
plugins: [
dts({ tsconfigPath: './tsconfig.json', bundleTypes: true }),
dts({ tsconfigPath: './tsconfig.dts.json', bundleTypes: true }),
cssInjectedByJsPlugin({ relativeCSSInjection: true }),
],
publicDir: false,
@@ -29,7 +29,7 @@ export default defineConfig({
},
outDir: resolve(__dirname, 'dist', 'lib'),
rollupOptions: {
external: [],
external: ['@page-agent/*'],
},
minify: false,
sourcemap: true,

View File

@@ -10,7 +10,6 @@
"typecheck": "tsc --noEmit"
},
"devDependencies": {
"page-agent": "*",
"@tailwindcss/vite": "^4.1.14",
"@types/react": "^19.2.2",
"@types/react-dom": "^19.2.1",