feat(nx-workspace-tools): Add documentation - #6
Conversation
|
View your CI Pipeline Execution ↗ for commit e60a9c0
💡 Verify your cache is correct by running tasks in a sandbox. Read docs ↗ ☁️ Nx Cloud last updated this comment at |
There was a problem hiding this comment.
🟡 Changes recommended
It introduces confirmed functional breakages (pnpm workspace globs exclude packages/*, an E2E test asserts non-existent content, and addInternalDepsToPackageJson can throw when package.json is missing).
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
This PR introduces a static documentation website (Vue + Tailwind + Vite) for nx-workspace-tools, adds Playwright E2E scaffolding, and refactors/extends parts of the generator test suite and utilities to support the updated workspace setup.
Changes:
- Add a new
apps/websiteVue/Vite app that renders documentation content for the Nx plugin. - Add a new
apps/website-e2ePlaywright project and wire it into Nx vianx.jsonplugins. - Refactor generator utilities/tests (new specs for patching utilities; move
addInternalDepsToPackageJsoninto its own module) and adjust workspace/config files for the new apps.
File summaries
| File | Description |
|---|---|
| tsconfig.json | Adds TS solution references for the new website apps. |
| pnpm-workspace.yaml | Updates pnpm workspace package globs and pnpm workspace settings. |
| packages/nx-workspace-tools/src/generators/feature-libs/utils/string-helpers.spec.ts | Renames test descriptions for consistency. |
| packages/nx-workspace-tools/src/generators/feature-libs/utils/patch-file.spec.ts | Replaces todo with real unit tests for file patching utility. |
| packages/nx-workspace-tools/src/generators/feature-libs/utils/library-generators.ts | Updates import to new internal-deps helper module. |
| packages/nx-workspace-tools/src/generators/feature-libs/utils/library-generators.spec.ts | Updates mocks/imports to match the internal-deps helper move. |
| packages/nx-workspace-tools/src/generators/feature-libs/utils/file-helpers.spec.ts | Removes placeholder todo spec. |
| packages/nx-workspace-tools/src/generators/feature-libs/utils/context.spec.ts | Renames test description for consistency. |
| packages/nx-workspace-tools/src/generators/feature-libs/utils/add-internal-deps.ts | Adjusts internal dependency injection logic (now assumes package.json exists). |
| packages/nx-workspace-tools/src/generators/feature-libs/utils/add-internal-deps.spec.ts | Adds new tests for internal dependency insertion behavior. |
| packages/nx-workspace-tools/src/generators/feature-libs/feature-libs.spec.ts | Replaces snapshot-heavy generator tests with delegation tests using mocks. |
| packages/nx-workspace-tools/src/executors/internal-deps/internal-deps.spec.ts | Renames test descriptions for consistency. |
| packages/nx-workspace-tools/package.json | Removes direct nx dependency and excludes snapshots from packaging. |
| package.json | Adds dependencies/devDependencies needed for the website and Playwright. |
| nx.json | Adds Nx Vite + Playwright plugins and tweaks cache inputs/changelog config. |
| eslint.config.mjs | Expands ignore patterns and adds .vue to linted file globs. |
| CHANGELOG.md | Fixes formatting/indentation. |
| apps/website/vite.config.mts | Adds Vite config for the website (including Vitest config). |
| apps/website/tsconfig.spec.json | Adds test TS config for website Vitest setup. |
| apps/website/tsconfig.json | Adds TS project references for website app/spec configs. |
| apps/website/tsconfig.app.json | Adds app TS config for Vue/Vite build. |
| apps/website/src/vue-shims.d.ts | Adds Vue SFC typing shim. |
| apps/website/src/styles.css | Adds Tailwind + global styles for the website UI. |
| apps/website/src/main.ts | Boots the Vue app and mounts it. |
| apps/website/src/app/utils/docs-content.ts | Provides structured docs content (TOC, features, API entries/snippets). |
| apps/website/src/app/components/TocNav.vue | Adds TOC navigation component. |
| apps/website/src/app/components/SectionBlock.vue | Adds reusable section wrapper component. |
| apps/website/src/app/components/HeroSection.vue | Adds hero header component for the docs landing section. |
| apps/website/src/app/components/FeatureCard.vue | Adds feature highlight card component. |
| apps/website/src/app/components/DocumentationMain.vue | Composes the full documentation page layout and content blocks. |
| apps/website/src/app/components/DocItem.vue | Renders API reference entries and option tables. |
| apps/website/src/app/components/CodeSnippet.vue | Adds syntax-highlighted code blocks with copy-to-clipboard. |
| apps/website/src/app/components/AppHeader.vue | Adds header with navigation and theme toggle. |
| apps/website/src/app/components/AppFooter.vue | Adds footer with repo/source links and copyright. |
| apps/website/src/app/App.vue | Adds full app shell with theme switching + section observer. |
| apps/website/src/app/App.spec.ts | Adds a basic render test for the docs content. |
| apps/website/package.json | Adds Nx project metadata for the website app. |
| apps/website/index.html | Adds static HTML entrypoint for the website app. |
| apps/website/eslint.config.mjs | Adds app-specific Vue ESLint configuration. |
| apps/website-e2e/tsconfig.json | Adds TS config for Playwright E2E project. |
| apps/website-e2e/src/example.spec.ts | Adds initial Playwright E2E test scaffold. |
| apps/website-e2e/playwright.config.mts | Adds Playwright + Nx preset configuration and webServer command. |
| apps/website-e2e/package.json | Adds Nx project metadata and implicit dependency on website. |
| apps/website-e2e/eslint.config.mjs | Adds Playwright ESLint configuration for E2E project. |
| .vscode/extensions.json | Recommends Playwright VS Code extension. |
| .prettierrc | Enables single-attribute-per-line formatting. |
| .gitignore | Adds ignores for Vite timestamp files and test-output. |
| .github/workflows/publish.yml | Builds and deploys the website to GitHub Pages during tag publish. |
Review details
Suppressed comments (1)
packages/nx-workspace-tools/src/generators/feature-libs/utils/add-internal-deps.ts:17
addInternalDepsToPackageJsoncallsupdateJsonunconditionally; if the generated library doesn't have apackage.json(common unless the workspace is configured for package-based projects), this will throw and fail the generator. The previous guard/initializer was removed, but callers still assume this is safe.
- Files reviewed: 44/49 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
❌ The fix was rejected
We are restoring "nx": "*" to the dependencies in packages/nx-workspace-tools/package.json, which was unintentionally removed in this PR. This caused the @nx/dependency-checks ESLint rule to fail because the project's source still imports from nx but the package was no longer declared as a dependency. Adding it back will resolve the lint error and ensure the published package correctly declares all its runtime dependencies.
Tip
✅ We verified this fix by re-running nx-workspace-tools:lint.
Warning
The suggested diff is too large to display here, but you can view it on Nx Cloud ↗
🎓 Learn more about Self-Healing CI on nx.dev
No description provided.