@xylabs/toolchain 7.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/analyze.mjs +140 -0
- package/dist/actions/analyze.mjs.map +1 -0
- package/dist/actions/build.mjs +173 -0
- package/dist/actions/build.mjs.map +1 -0
- package/dist/actions/claude-check.mjs +199 -0
- package/dist/actions/claude-check.mjs.map +1 -0
- package/dist/actions/claude-clean.mjs +70 -0
- package/dist/actions/claude-clean.mjs.map +1 -0
- package/dist/actions/claude-commands.mjs +126 -0
- package/dist/actions/claude-commands.mjs.map +1 -0
- package/dist/actions/claude-rules.mjs +151 -0
- package/dist/actions/claude-rules.mjs.map +1 -0
- package/dist/actions/claude-settings.mjs +99 -0
- package/dist/actions/claude-settings.mjs.map +1 -0
- package/dist/actions/claude-skills.mjs +131 -0
- package/dist/actions/claude-skills.mjs.map +1 -0
- package/dist/actions/clean-docs.mjs +66 -0
- package/dist/actions/clean-docs.mjs.map +1 -0
- package/dist/actions/clean-eslint.mjs +47 -0
- package/dist/actions/clean-eslint.mjs.map +1 -0
- package/dist/actions/clean.mjs +166 -0
- package/dist/actions/clean.mjs.map +1 -0
- package/dist/actions/compile.mjs +184 -0
- package/dist/actions/compile.mjs.map +1 -0
- package/dist/actions/copy-assets.mjs +81 -0
- package/dist/actions/copy-assets.mjs.map +1 -0
- package/dist/actions/cycle.mjs +275 -0
- package/dist/actions/cycle.mjs.map +1 -0
- package/dist/actions/dead.mjs +119 -0
- package/dist/actions/dead.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/checkPackage.mjs +1556 -0
- package/dist/actions/deplint/checkPackage/checkPackage.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/checkPackageTypes.mjs +1 -0
- package/dist/actions/deplint/checkPackage/checkPackageTypes.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getMismatchedPeerDevVersions.mjs +77 -0
- package/dist/actions/deplint/checkPackage/getMismatchedPeerDevVersions.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnlistedDependencies.mjs +158 -0
- package/dist/actions/deplint/checkPackage/getUnlistedDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnlistedDevDependencies.mjs +125 -0
- package/dist/actions/deplint/checkPackage/getUnlistedDevDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnnecessaryPeerDependencies.mjs +207 -0
- package/dist/actions/deplint/checkPackage/getUnnecessaryPeerDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnsatisfiedPeerDependencies.mjs +318 -0
- package/dist/actions/deplint/checkPackage/getUnsatisfiedPeerDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs +163 -0
- package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs +408 -0
- package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnusedPeerDependencies.mjs +75 -0
- package/dist/actions/deplint/checkPackage/getUnusedPeerDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getWorkspaceVersionProblems.mjs +128 -0
- package/dist/actions/deplint/checkPackage/getWorkspaceVersionProblems.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/index.mjs +1609 -0
- package/dist/actions/deplint/checkPackage/index.mjs.map +1 -0
- package/dist/actions/deplint/deplint.mjs +1840 -0
- package/dist/actions/deplint/deplint.mjs.map +1 -0
- package/dist/actions/deplint/engine.mjs +1736 -0
- package/dist/actions/deplint/engine.mjs.map +1 -0
- package/dist/actions/deplint/findFiles.mjs +39 -0
- package/dist/actions/deplint/findFiles.mjs.map +1 -0
- package/dist/actions/deplint/findFilesByGlob.mjs +14 -0
- package/dist/actions/deplint/findFilesByGlob.mjs.map +1 -0
- package/dist/actions/deplint/fixer.mjs +103 -0
- package/dist/actions/deplint/fixer.mjs.map +1 -0
- package/dist/actions/deplint/getBasePackageName.mjs +13 -0
- package/dist/actions/deplint/getBasePackageName.mjs.map +1 -0
- package/dist/actions/deplint/getCliReferencedPackagesFromFiles.mjs +140 -0
- package/dist/actions/deplint/getCliReferencedPackagesFromFiles.mjs.map +1 -0
- package/dist/actions/deplint/getDependenciesFromPackageJson.mjs +29 -0
- package/dist/actions/deplint/getDependenciesFromPackageJson.mjs.map +1 -0
- package/dist/actions/deplint/getExtendsFromTsconfigs.mjs +68 -0
- package/dist/actions/deplint/getExtendsFromTsconfigs.mjs.map +1 -0
- package/dist/actions/deplint/getExternalImportsFromFiles.mjs +143 -0
- package/dist/actions/deplint/getExternalImportsFromFiles.mjs.map +1 -0
- package/dist/actions/deplint/getImportsFromFile.mjs +85 -0
- package/dist/actions/deplint/getImportsFromFile.mjs.map +1 -0
- package/dist/actions/deplint/getRequiredPeerDependencies.mjs +37 -0
- package/dist/actions/deplint/getRequiredPeerDependencies.mjs.map +1 -0
- package/dist/actions/deplint/getScriptReferencedPackages.mjs +83 -0
- package/dist/actions/deplint/getScriptReferencedPackages.mjs.map +1 -0
- package/dist/actions/deplint/implicitDevDependencies.mjs +116 -0
- package/dist/actions/deplint/implicitDevDependencies.mjs.map +1 -0
- package/dist/actions/deplint/index.mjs +1848 -0
- package/dist/actions/deplint/index.mjs.map +1 -0
- package/dist/actions/deplint/packageEditor.mjs +82 -0
- package/dist/actions/deplint/packageEditor.mjs.map +1 -0
- package/dist/actions/deplint/packageJsonEditor.mjs +101 -0
- package/dist/actions/deplint/packageJsonEditor.mjs.map +1 -0
- package/dist/actions/deplint/reporters.mjs +36 -0
- package/dist/actions/deplint/reporters.mjs.map +1 -0
- package/dist/actions/deplint/rules.mjs +1223 -0
- package/dist/actions/deplint/rules.mjs.map +1 -0
- package/dist/actions/deplint/snapshot.mjs +372 -0
- package/dist/actions/deplint/snapshot.mjs.map +1 -0
- package/dist/actions/deplint/tsScriptsAliases.mjs +20 -0
- package/dist/actions/deplint/tsScriptsAliases.mjs.map +1 -0
- package/dist/actions/deplint/types.mjs +1 -0
- package/dist/actions/deplint/types.mjs.map +1 -0
- package/dist/actions/deploy.mjs +194 -0
- package/dist/actions/deploy.mjs.map +1 -0
- package/dist/actions/dupdeps.mjs +226 -0
- package/dist/actions/dupdeps.mjs.map +1 -0
- package/dist/actions/eject.mjs +142 -0
- package/dist/actions/eject.mjs.map +1 -0
- package/dist/actions/fix.mjs +359 -0
- package/dist/actions/fix.mjs.map +1 -0
- package/dist/actions/gen-docs.mjs +155 -0
- package/dist/actions/gen-docs.mjs.map +1 -0
- package/dist/actions/gitignore.mjs +159 -0
- package/dist/actions/gitignore.mjs.map +1 -0
- package/dist/actions/gitlint-fix.mjs +27 -0
- package/dist/actions/gitlint-fix.mjs.map +1 -0
- package/dist/actions/gitlint.mjs +48 -0
- package/dist/actions/gitlint.mjs.map +1 -0
- package/dist/actions/index.mjs +8259 -0
- package/dist/actions/index.mjs.map +1 -0
- package/dist/actions/knip.mjs +119 -0
- package/dist/actions/knip.mjs.map +1 -0
- package/dist/actions/license.mjs +92 -0
- package/dist/actions/license.mjs.map +1 -0
- package/dist/actions/lint-init.mjs +275 -0
- package/dist/actions/lint-init.mjs.map +1 -0
- package/dist/actions/lint.mjs +356 -0
- package/dist/actions/lint.mjs.map +1 -0
- package/dist/actions/lintNext.mjs +209 -0
- package/dist/actions/lintNext.mjs.map +1 -0
- package/dist/actions/lintlint.mjs +341 -0
- package/dist/actions/lintlint.mjs.map +1 -0
- package/dist/actions/npmignore-gen.mjs +90 -0
- package/dist/actions/npmignore-gen.mjs.map +1 -0
- package/dist/actions/orphan.mjs +110 -0
- package/dist/actions/orphan.mjs.map +1 -0
- package/dist/actions/package/clean-outputs.mjs +50 -0
- package/dist/actions/package/clean-outputs.mjs.map +1 -0
- package/dist/actions/package/clean-typescript.mjs +50 -0
- package/dist/actions/package/clean-typescript.mjs.map +1 -0
- package/dist/actions/package/clean.mjs +69 -0
- package/dist/actions/package/clean.mjs.map +1 -0
- package/dist/actions/package/compile/XyConfig.mjs +32 -0
- package/dist/actions/package/compile/XyConfig.mjs.map +1 -0
- package/dist/actions/package/compile/buildEntries.mjs +53 -0
- package/dist/actions/package/compile/buildEntries.mjs.map +1 -0
- package/dist/actions/package/compile/compile.mjs +439 -0
- package/dist/actions/package/compile/compile.mjs.map +1 -0
- package/dist/actions/package/compile/copyTypeFiles.mjs +34 -0
- package/dist/actions/package/compile/copyTypeFiles.mjs.map +1 -0
- package/dist/actions/package/compile/deepMerge.mjs +27 -0
- package/dist/actions/package/compile/deepMerge.mjs.map +1 -0
- package/dist/actions/package/compile/getCompilerOptions.mjs +12 -0
- package/dist/actions/package/compile/getCompilerOptions.mjs.map +1 -0
- package/dist/actions/package/compile/index.mjs +472 -0
- package/dist/actions/package/compile/index.mjs.map +1 -0
- package/dist/actions/package/compile/inputs.mjs +22 -0
- package/dist/actions/package/compile/inputs.mjs.map +1 -0
- package/dist/actions/package/compile/packageCompileTsc.mjs +93 -0
- package/dist/actions/package/compile/packageCompileTsc.mjs.map +1 -0
- package/dist/actions/package/compile/packageCompileTscTypes.mjs +92 -0
- package/dist/actions/package/compile/packageCompileTscTypes.mjs.map +1 -0
- package/dist/actions/package/compile/packageCompileTsup.mjs +402 -0
- package/dist/actions/package/compile/packageCompileTsup.mjs.map +1 -0
- package/dist/actions/package/copy-assets.mjs +69 -0
- package/dist/actions/package/copy-assets.mjs.map +1 -0
- package/dist/actions/package/cycle.mjs +62 -0
- package/dist/actions/package/cycle.mjs.map +1 -0
- package/dist/actions/package/gen-docs.mjs +137 -0
- package/dist/actions/package/gen-docs.mjs.map +1 -0
- package/dist/actions/package/index.mjs +1131 -0
- package/dist/actions/package/index.mjs.map +1 -0
- package/dist/actions/package/lint.mjs +87 -0
- package/dist/actions/package/lint.mjs.map +1 -0
- package/dist/actions/package/publint.mjs +336 -0
- package/dist/actions/package/publint.mjs.map +1 -0
- package/dist/actions/package/recompile.mjs +510 -0
- package/dist/actions/package/recompile.mjs.map +1 -0
- package/dist/actions/package-lint-deps.mjs +348 -0
- package/dist/actions/package-lint-deps.mjs.map +1 -0
- package/dist/actions/package-lint.mjs +774 -0
- package/dist/actions/package-lint.mjs.map +1 -0
- package/dist/actions/packman/clean.mjs +144 -0
- package/dist/actions/packman/clean.mjs.map +1 -0
- package/dist/actions/packman/convert.mjs +1331 -0
- package/dist/actions/packman/convert.mjs.map +1 -0
- package/dist/actions/packman/convertToPnpm.mjs +295 -0
- package/dist/actions/packman/convertToPnpm.mjs.map +1 -0
- package/dist/actions/packman/convertToYarn.mjs +307 -0
- package/dist/actions/packman/convertToYarn.mjs.map +1 -0
- package/dist/actions/packman/index.mjs +1493 -0
- package/dist/actions/packman/index.mjs.map +1 -0
- package/dist/actions/packman/lint.mjs +109 -0
- package/dist/actions/packman/lint.mjs.map +1 -0
- package/dist/actions/packman/rewriteScripts.mjs +52 -0
- package/dist/actions/packman/rewriteScripts.mjs.map +1 -0
- package/dist/actions/packman/rewriteSourceImports.mjs +60 -0
- package/dist/actions/packman/rewriteSourceImports.mjs.map +1 -0
- package/dist/actions/packman/swapTsScriptsDependency.mjs +57 -0
- package/dist/actions/packman/swapTsScriptsDependency.mjs.map +1 -0
- package/dist/actions/publint.mjs +748 -0
- package/dist/actions/publint.mjs.map +1 -0
- package/dist/actions/publish.mjs +208 -0
- package/dist/actions/publish.mjs.map +1 -0
- package/dist/actions/reactTest.mjs +142 -0
- package/dist/actions/reactTest.mjs.map +1 -0
- package/dist/actions/readme-gen.mjs +362 -0
- package/dist/actions/readme-gen.mjs.map +1 -0
- package/dist/actions/readme-init.mjs +89 -0
- package/dist/actions/readme-init.mjs.map +1 -0
- package/dist/actions/readme-lint.mjs +147 -0
- package/dist/actions/readme-lint.mjs.map +1 -0
- package/dist/actions/rebuild.mjs +143 -0
- package/dist/actions/rebuild.mjs.map +1 -0
- package/dist/actions/recompile.mjs +196 -0
- package/dist/actions/recompile.mjs.map +1 -0
- package/dist/actions/reinstall.mjs +283 -0
- package/dist/actions/reinstall.mjs.map +1 -0
- package/dist/actions/relint.mjs +355 -0
- package/dist/actions/relint.mjs.map +1 -0
- package/dist/actions/repo-init.mjs +217 -0
- package/dist/actions/repo-init.mjs.map +1 -0
- package/dist/actions/retest.mjs +150 -0
- package/dist/actions/retest.mjs.map +1 -0
- package/dist/actions/sitemap.mjs +121 -0
- package/dist/actions/sitemap.mjs.map +1 -0
- package/dist/actions/sonar.mjs +119 -0
- package/dist/actions/sonar.mjs.map +1 -0
- package/dist/actions/start.mjs +142 -0
- package/dist/actions/start.mjs.map +1 -0
- package/dist/actions/statics.mjs +225 -0
- package/dist/actions/statics.mjs.map +1 -0
- package/dist/actions/test.mjs +144 -0
- package/dist/actions/test.mjs.map +1 -0
- package/dist/actions/up.mjs +140 -0
- package/dist/actions/up.mjs.map +1 -0
- package/dist/actions/updo.mjs +533 -0
- package/dist/actions/updo.mjs.map +1 -0
- package/dist/actions/upplug.mjs +124 -0
- package/dist/actions/upplug.mjs.map +1 -0
- package/dist/actions/upyarn.mjs +119 -0
- package/dist/actions/upyarn.mjs.map +1 -0
- package/dist/actions/yarn3only.mjs +60 -0
- package/dist/actions/yarn3only.mjs.map +1 -0
- package/dist/bin/package/build-only.mjs +451 -0
- package/dist/bin/package/build-only.mjs.map +1 -0
- package/dist/bin/package/build.mjs +451 -0
- package/dist/bin/package/build.mjs.map +1 -0
- package/dist/bin/package/clean-outputs.mjs +50 -0
- package/dist/bin/package/clean-outputs.mjs.map +1 -0
- package/dist/bin/package/clean-typescript.mjs +50 -0
- package/dist/bin/package/clean-typescript.mjs.map +1 -0
- package/dist/bin/package/clean.mjs +75 -0
- package/dist/bin/package/clean.mjs.map +1 -0
- package/dist/bin/package/compile-only.mjs +447 -0
- package/dist/bin/package/compile-only.mjs.map +1 -0
- package/dist/bin/package/compile-tsup.mjs +409 -0
- package/dist/bin/package/compile-tsup.mjs.map +1 -0
- package/dist/bin/package/compile.mjs +451 -0
- package/dist/bin/package/compile.mjs.map +1 -0
- package/dist/bin/package/copy-assets-cjs.mjs +75 -0
- package/dist/bin/package/copy-assets-cjs.mjs.map +1 -0
- package/dist/bin/package/copy-assets-esm.mjs +75 -0
- package/dist/bin/package/copy-assets-esm.mjs.map +1 -0
- package/dist/bin/package/cycle.mjs +72 -0
- package/dist/bin/package/cycle.mjs.map +1 -0
- package/dist/bin/package/fix.mjs +97 -0
- package/dist/bin/package/fix.mjs.map +1 -0
- package/dist/bin/package/gen-docs.mjs +142 -0
- package/dist/bin/package/gen-docs.mjs.map +1 -0
- package/dist/bin/package/lint-verbose.mjs +97 -0
- package/dist/bin/package/lint-verbose.mjs.map +1 -0
- package/dist/bin/package/lint.mjs +97 -0
- package/dist/bin/package/lint.mjs.map +1 -0
- package/dist/bin/package/publint.mjs +423 -0
- package/dist/bin/package/publint.mjs.map +1 -0
- package/dist/bin/package/recompile.mjs +516 -0
- package/dist/bin/package/recompile.mjs.map +1 -0
- package/dist/bin/package/relint.mjs +97 -0
- package/dist/bin/package/relint.mjs.map +1 -0
- package/dist/bin/run-or-exec.mjs +20 -0
- package/dist/bin/run-or-exec.mjs.map +1 -0
- package/dist/bin/xy.mjs +8885 -0
- package/dist/bin/xy.mjs.map +1 -0
- package/dist/index.d.ts +1102 -0
- package/dist/index.mjs +9986 -0
- package/dist/index.mjs.map +1 -0
- package/dist/lib/checkResult.mjs +16 -0
- package/dist/lib/checkResult.mjs.map +1 -0
- package/dist/lib/claudeMdTemplate.mjs +69 -0
- package/dist/lib/claudeMdTemplate.mjs.map +1 -0
- package/dist/lib/concurrency.mjs +38 -0
- package/dist/lib/concurrency.mjs.map +1 -0
- package/dist/lib/createBuildConfig.mjs +55 -0
- package/dist/lib/createBuildConfig.mjs.map +1 -0
- package/dist/lib/defaultBuildConfig.mjs +23 -0
- package/dist/lib/defaultBuildConfig.mjs.map +1 -0
- package/dist/lib/deleteGlob.mjs +13 -0
- package/dist/lib/deleteGlob.mjs.map +1 -0
- package/dist/lib/dependencies/DuplicateDetector.mjs +99 -0
- package/dist/lib/dependencies/DuplicateDetector.mjs.map +1 -0
- package/dist/lib/dependencies/detectDuplicateDependencies.mjs +203 -0
- package/dist/lib/dependencies/detectDuplicateDependencies.mjs.map +1 -0
- package/dist/lib/dependencies/index.mjs +281 -0
- package/dist/lib/dependencies/index.mjs.map +1 -0
- package/dist/lib/dependencies/workspaceCycles.mjs +79 -0
- package/dist/lib/dependencies/workspaceCycles.mjs.map +1 -0
- package/dist/lib/file/ReadFileSyncOptions.mjs +6 -0
- package/dist/lib/file/ReadFileSyncOptions.mjs.map +1 -0
- package/dist/lib/file/constants.mjs +8 -0
- package/dist/lib/file/constants.mjs.map +1 -0
- package/dist/lib/file/fileLines.mjs +32 -0
- package/dist/lib/file/fileLines.mjs.map +1 -0
- package/dist/lib/file/index.mjs +42 -0
- package/dist/lib/file/index.mjs.map +1 -0
- package/dist/lib/file/tryReadFileSync.mjs +14 -0
- package/dist/lib/file/tryReadFileSync.mjs.map +1 -0
- package/dist/lib/fillTemplate.mjs +8 -0
- package/dist/lib/fillTemplate.mjs.map +1 -0
- package/dist/lib/generateIgnoreFiles.mjs +86 -0
- package/dist/lib/generateIgnoreFiles.mjs.map +1 -0
- package/dist/lib/generateReadmeFiles.mjs +323 -0
- package/dist/lib/generateReadmeFiles.mjs.map +1 -0
- package/dist/lib/gitignoreTemplate.mjs +12 -0
- package/dist/lib/gitignoreTemplate.mjs.map +1 -0
- package/dist/lib/index.mjs +1627 -0
- package/dist/lib/index.mjs.map +1 -0
- package/dist/lib/initCwd.mjs +8 -0
- package/dist/lib/initCwd.mjs.map +1 -0
- package/dist/lib/jsonFormatters.mjs +11 -0
- package/dist/lib/jsonFormatters.mjs.map +1 -0
- package/dist/lib/latestVersions.mjs +12 -0
- package/dist/lib/latestVersions.mjs.map +1 -0
- package/dist/lib/loadConfig.mjs +72 -0
- package/dist/lib/loadConfig.mjs.map +1 -0
- package/dist/lib/packageName.mjs +26 -0
- package/dist/lib/packageName.mjs.map +1 -0
- package/dist/lib/parsedPackageJSON.mjs +11 -0
- package/dist/lib/parsedPackageJSON.mjs.map +1 -0
- package/dist/lib/processEx.mjs +36 -0
- package/dist/lib/processEx.mjs.map +1 -0
- package/dist/lib/repoTemplates.mjs +34 -0
- package/dist/lib/repoTemplates.mjs.map +1 -0
- package/dist/lib/runInstall.mjs +30 -0
- package/dist/lib/runInstall.mjs.map +1 -0
- package/dist/lib/runSteps.mjs +118 -0
- package/dist/lib/runSteps.mjs.map +1 -0
- package/dist/lib/runStepsAsync.mjs +136 -0
- package/dist/lib/runStepsAsync.mjs.map +1 -0
- package/dist/lib/runXy.mjs +147 -0
- package/dist/lib/runXy.mjs.map +1 -0
- package/dist/lib/runXyWithWarning.mjs +36 -0
- package/dist/lib/runXyWithWarning.mjs.map +1 -0
- package/dist/lib/safeExit.mjs +61 -0
- package/dist/lib/safeExit.mjs.map +1 -0
- package/dist/lib/string/empty.mjs +8 -0
- package/dist/lib/string/empty.mjs.map +1 -0
- package/dist/lib/string/index.mjs +12 -0
- package/dist/lib/string/index.mjs.map +1 -0
- package/dist/lib/string/union.mjs +6 -0
- package/dist/lib/string/union.mjs.map +1 -0
- package/dist/lib/tryRunLocalScript.mjs +57 -0
- package/dist/lib/tryRunLocalScript.mjs.map +1 -0
- package/dist/lib/updo/applyUpdates.mjs +44 -0
- package/dist/lib/updo/applyUpdates.mjs.map +1 -0
- package/dist/lib/updo/collectWorkspaceDeps.mjs +48 -0
- package/dist/lib/updo/collectWorkspaceDeps.mjs.map +1 -0
- package/dist/lib/updo/fetchRegistryInfo.mjs +53 -0
- package/dist/lib/updo/fetchRegistryInfo.mjs.map +1 -0
- package/dist/lib/updo/index.mjs +594 -0
- package/dist/lib/updo/index.mjs.map +1 -0
- package/dist/lib/updo/interactiveSelect.mjs +185 -0
- package/dist/lib/updo/interactiveSelect.mjs.map +1 -0
- package/dist/lib/updo/interfaces.mjs +1 -0
- package/dist/lib/updo/interfaces.mjs.map +1 -0
- package/dist/lib/updo/renderTable.mjs +79 -0
- package/dist/lib/updo/renderTable.mjs.map +1 -0
- package/dist/lib/updo/resolveVersions.mjs +49 -0
- package/dist/lib/updo/resolveVersions.mjs.map +1 -0
- package/dist/lib/updo/runUpdo.mjs +511 -0
- package/dist/lib/updo/runUpdo.mjs.map +1 -0
- package/dist/lib/withErrnoException.mjs +13 -0
- package/dist/lib/withErrnoException.mjs.map +1 -0
- package/dist/lib/withError.mjs +8 -0
- package/dist/lib/withError.mjs.map +1 -0
- package/dist/lib/yarn/index.mjs +39 -0
- package/dist/lib/yarn/index.mjs.map +1 -0
- package/dist/lib/yarn/isYarnVersionOrGreater.mjs +18 -0
- package/dist/lib/yarn/isYarnVersionOrGreater.mjs.map +1 -0
- package/dist/lib/yarn/workspace/Workspace.mjs +1 -0
- package/dist/lib/yarn/workspace/Workspace.mjs.map +1 -0
- package/dist/lib/yarn/workspace/index.mjs +23 -0
- package/dist/lib/yarn/workspace/index.mjs.map +1 -0
- package/dist/lib/yarn/workspace/yarnWorkspace.mjs +22 -0
- package/dist/lib/yarn/workspace/yarnWorkspace.mjs.map +1 -0
- package/dist/lib/yarn/workspace/yarnWorkspaces.mjs +15 -0
- package/dist/lib/yarn/workspace/yarnWorkspaces.mjs.map +1 -0
- package/dist/lib/yarn/yarnInitCwd.mjs +8 -0
- package/dist/lib/yarn/yarnInitCwd.mjs.map +1 -0
- package/dist/loadPackageConfig.mjs +18 -0
- package/dist/loadPackageConfig.mjs.map +1 -0
- package/dist/pm/PackageManager.mjs +1 -0
- package/dist/pm/PackageManager.mjs.map +1 -0
- package/dist/pm/detectPackageManager.mjs +10 -0
- package/dist/pm/detectPackageManager.mjs.map +1 -0
- package/dist/pm/detectReact.mjs +52 -0
- package/dist/pm/detectReact.mjs.map +1 -0
- package/dist/pm/index.mjs +263 -0
- package/dist/pm/index.mjs.map +1 -0
- package/dist/pm/pnpmPackageManager.mjs +97 -0
- package/dist/pm/pnpmPackageManager.mjs.map +1 -0
- package/dist/pm/registry.mjs +27 -0
- package/dist/pm/registry.mjs.map +1 -0
- package/dist/pm/yarnPackageManager.mjs +112 -0
- package/dist/pm/yarnPackageManager.mjs.map +1 -0
- package/dist/types.d.mjs +1 -0
- package/dist/types.d.mjs.map +1 -0
- package/dist/xy/build/buildCommand.mjs +194 -0
- package/dist/xy/build/buildCommand.mjs.map +1 -0
- package/dist/xy/build/compileCommand.mjs +203 -0
- package/dist/xy/build/compileCommand.mjs.map +1 -0
- package/dist/xy/build/compileOnlyCommand.mjs +204 -0
- package/dist/xy/build/compileOnlyCommand.mjs.map +1 -0
- package/dist/xy/build/copyAssetsCommand.mjs +92 -0
- package/dist/xy/build/copyAssetsCommand.mjs.map +1 -0
- package/dist/xy/build/index.mjs +487 -0
- package/dist/xy/build/index.mjs.map +1 -0
- package/dist/xy/build/rebuildCommand.mjs +156 -0
- package/dist/xy/build/rebuildCommand.mjs.map +1 -0
- package/dist/xy/build/recompileCommand.mjs +215 -0
- package/dist/xy/build/recompileCommand.mjs.map +1 -0
- package/dist/xy/common/checkCommand.mjs +1909 -0
- package/dist/xy/common/checkCommand.mjs.map +1 -0
- package/dist/xy/common/claude/checkCommand.mjs +207 -0
- package/dist/xy/common/claude/checkCommand.mjs.map +1 -0
- package/dist/xy/common/claude/cleanCommand.mjs +78 -0
- package/dist/xy/common/claude/cleanCommand.mjs.map +1 -0
- package/dist/xy/common/claude/commandsCommand.mjs +134 -0
- package/dist/xy/common/claude/commandsCommand.mjs.map +1 -0
- package/dist/xy/common/claude/index.mjs +734 -0
- package/dist/xy/common/claude/index.mjs.map +1 -0
- package/dist/xy/common/claude/initCommand.mjs +458 -0
- package/dist/xy/common/claude/initCommand.mjs.map +1 -0
- package/dist/xy/common/claude/rulesCommand.mjs +167 -0
- package/dist/xy/common/claude/rulesCommand.mjs.map +1 -0
- package/dist/xy/common/claude/settingsCommand.mjs +115 -0
- package/dist/xy/common/claude/settingsCommand.mjs.map +1 -0
- package/dist/xy/common/claude/skillsCommand.mjs +140 -0
- package/dist/xy/common/claude/skillsCommand.mjs.map +1 -0
- package/dist/xy/common/cleanDocsCommand.mjs +74 -0
- package/dist/xy/common/cleanDocsCommand.mjs.map +1 -0
- package/dist/xy/common/deadCommand.mjs +137 -0
- package/dist/xy/common/deadCommand.mjs.map +1 -0
- package/dist/xy/common/genDocsCommand.mjs +175 -0
- package/dist/xy/common/genDocsCommand.mjs.map +1 -0
- package/dist/xy/common/gitignoreCommand.mjs +165 -0
- package/dist/xy/common/gitignoreCommand.mjs.map +1 -0
- package/dist/xy/common/gitlintCommand.mjs +89 -0
- package/dist/xy/common/gitlintCommand.mjs.map +1 -0
- package/dist/xy/common/index.mjs +4654 -0
- package/dist/xy/common/index.mjs.map +1 -0
- package/dist/xy/common/licenseCommand.mjs +108 -0
- package/dist/xy/common/licenseCommand.mjs.map +1 -0
- package/dist/xy/common/npmignoreGenCommand.mjs +100 -0
- package/dist/xy/common/npmignoreGenCommand.mjs.map +1 -0
- package/dist/xy/common/orphan/cleanCommand.mjs +102 -0
- package/dist/xy/common/orphan/cleanCommand.mjs.map +1 -0
- package/dist/xy/common/orphan/index.mjs +138 -0
- package/dist/xy/common/orphan/index.mjs.map +1 -0
- package/dist/xy/common/orphan/listCommand.mjs +100 -0
- package/dist/xy/common/orphan/listCommand.mjs.map +1 -0
- package/dist/xy/common/packmanCommand.mjs +1538 -0
- package/dist/xy/common/packmanCommand.mjs.map +1 -0
- package/dist/xy/common/readme/genCommand.mjs +395 -0
- package/dist/xy/common/readme/genCommand.mjs.map +1 -0
- package/dist/xy/common/readme/index.mjs +538 -0
- package/dist/xy/common/readme/index.mjs.map +1 -0
- package/dist/xy/common/readme/initCommand.mjs +109 -0
- package/dist/xy/common/readme/initCommand.mjs.map +1 -0
- package/dist/xy/common/readme/lintCommand.mjs +181 -0
- package/dist/xy/common/readme/lintCommand.mjs.map +1 -0
- package/dist/xy/common/repo/index.mjs +1070 -0
- package/dist/xy/common/repo/index.mjs.map +1 -0
- package/dist/xy/common/repo/initCommand.mjs +273 -0
- package/dist/xy/common/repo/initCommand.mjs.map +1 -0
- package/dist/xy/common/repo/lintCommand.mjs +789 -0
- package/dist/xy/common/repo/lintCommand.mjs.map +1 -0
- package/dist/xy/common/retestCommand.mjs +163 -0
- package/dist/xy/common/retestCommand.mjs.map +1 -0
- package/dist/xy/common/testCommand.mjs +157 -0
- package/dist/xy/common/testCommand.mjs.map +1 -0
- package/dist/xy/deploy/deployCommand.mjs +214 -0
- package/dist/xy/deploy/deployCommand.mjs.map +1 -0
- package/dist/xy/deploy/index.mjs +289 -0
- package/dist/xy/deploy/index.mjs.map +1 -0
- package/dist/xy/deploy/publishCommand.mjs +218 -0
- package/dist/xy/deploy/publishCommand.mjs.map +1 -0
- package/dist/xy/index.mjs +8887 -0
- package/dist/xy/index.mjs.map +1 -0
- package/dist/xy/install/cleanCommand.mjs +182 -0
- package/dist/xy/install/cleanCommand.mjs.map +1 -0
- package/dist/xy/install/dupdepsCommand.mjs +234 -0
- package/dist/xy/install/dupdepsCommand.mjs.map +1 -0
- package/dist/xy/install/index.mjs +1006 -0
- package/dist/xy/install/index.mjs.map +1 -0
- package/dist/xy/install/reinstallCommand.mjs +292 -0
- package/dist/xy/install/reinstallCommand.mjs.map +1 -0
- package/dist/xy/install/staticsCommand.mjs +233 -0
- package/dist/xy/install/staticsCommand.mjs.map +1 -0
- package/dist/xy/install/upCommand.mjs +150 -0
- package/dist/xy/install/upCommand.mjs.map +1 -0
- package/dist/xy/install/updoCommand.mjs +550 -0
- package/dist/xy/install/updoCommand.mjs.map +1 -0
- package/dist/xy/lint/cycleCommand.mjs +289 -0
- package/dist/xy/lint/cycleCommand.mjs.map +1 -0
- package/dist/xy/lint/deplintCommand.mjs +1897 -0
- package/dist/xy/lint/deplintCommand.mjs.map +1 -0
- package/dist/xy/lint/fixCommand.mjs +398 -0
- package/dist/xy/lint/fixCommand.mjs.map +1 -0
- package/dist/xy/lint/index.mjs +3759 -0
- package/dist/xy/lint/index.mjs.map +1 -0
- package/dist/xy/lint/knipCommand.mjs +142 -0
- package/dist/xy/lint/knipCommand.mjs.map +1 -0
- package/dist/xy/lint/lint/index.mjs +695 -0
- package/dist/xy/lint/lint/index.mjs.map +1 -0
- package/dist/xy/lint/lint/initCommand.mjs +282 -0
- package/dist/xy/lint/lint/initCommand.mjs.map +1 -0
- package/dist/xy/lint/lint/runCommand.mjs +405 -0
- package/dist/xy/lint/lint/runCommand.mjs.map +1 -0
- package/dist/xy/lint/lintCommand.mjs +695 -0
- package/dist/xy/lint/lintCommand.mjs.map +1 -0
- package/dist/xy/lint/lintlintCommand.mjs +359 -0
- package/dist/xy/lint/lintlintCommand.mjs.map +1 -0
- package/dist/xy/lint/publintCommand.mjs +778 -0
- package/dist/xy/lint/publintCommand.mjs.map +1 -0
- package/dist/xy/lint/relintCommand.mjs +381 -0
- package/dist/xy/lint/relintCommand.mjs.map +1 -0
- package/dist/xy/lint/sonarCommand.mjs +137 -0
- package/dist/xy/lint/sonarCommand.mjs.map +1 -0
- package/dist/xy/param.mjs +8 -0
- package/dist/xy/param.mjs.map +1 -0
- package/dist/xy/react/analyzeCommand.mjs +150 -0
- package/dist/xy/react/analyzeCommand.mjs.map +1 -0
- package/dist/xy/react/ejectCommand.mjs +150 -0
- package/dist/xy/react/ejectCommand.mjs.map +1 -0
- package/dist/xy/react/index.mjs +202 -0
- package/dist/xy/react/index.mjs.map +1 -0
- package/dist/xy/react/sitemapCommand.mjs +129 -0
- package/dist/xy/react/sitemapCommand.mjs.map +1 -0
- package/dist/xy/react/startCommand.mjs +150 -0
- package/dist/xy/react/startCommand.mjs.map +1 -0
- package/dist/xy/xy.mjs +8879 -0
- package/dist/xy/xy.mjs.map +1 -0
- package/dist/xy/xyParseOptions.mjs +117 -0
- package/dist/xy/xyParseOptions.mjs.map +1 -0
- package/dist/xy/yarn/index.mjs +188 -0
- package/dist/xy/yarn/index.mjs.map +1 -0
- package/dist/xy/yarn/upplugCommand.mjs +134 -0
- package/dist/xy/yarn/upplugCommand.mjs.map +1 -0
- package/dist/xy/yarn/upyarnCommand.mjs +129 -0
- package/dist/xy/yarn/upyarnCommand.mjs.map +1 -0
- package/dist/xy/yarn/yarn3OnlyCommand.mjs +70 -0
- package/dist/xy/yarn/yarn3OnlyCommand.mjs.map +1 -0
- package/package.json +119 -0
- package/templates/claude/CLAUDE-local.md +4 -0
- package/templates/claude/CLAUDE-project.md +4 -0
- package/templates/claude/commands/xy-build.md +7 -0
- package/templates/claude/commands/xy-clean.md +7 -0
- package/templates/claude/commands/xy-compile.md +7 -0
- package/templates/claude/commands/xy-cycle.md +7 -0
- package/templates/claude/commands/xy-dead.md +7 -0
- package/templates/claude/commands/xy-deplint.md +7 -0
- package/templates/claude/commands/xy-deps.md +24 -0
- package/templates/claude/commands/xy-dupdeps.md +7 -0
- package/templates/claude/commands/xy-fix.md +7 -0
- package/templates/claude/commands/xy-gen-docs.md +7 -0
- package/templates/claude/commands/xy-gitignore.md +7 -0
- package/templates/claude/commands/xy-gitlint.md +7 -0
- package/templates/claude/commands/xy-knip.md +7 -0
- package/templates/claude/commands/xy-license.md +7 -0
- package/templates/claude/commands/xy-lint-rules.md +44 -0
- package/templates/claude/commands/xy-lint.md +7 -0
- package/templates/claude/commands/xy-publint.md +7 -0
- package/templates/claude/commands/xy-rebuild.md +7 -0
- package/templates/claude/commands/xy-recompile.md +7 -0
- package/templates/claude/commands/xy-reinstall.md +7 -0
- package/templates/claude/commands/xy-relint.md +7 -0
- package/templates/claude/commands/xy-retest.md +7 -0
- package/templates/claude/commands/xy-sonar.md +7 -0
- package/templates/claude/commands/xy-test.md +7 -0
- package/templates/claude/commands/xy-up.md +9 -0
- package/templates/claude/rules/xylabs-architecture.md +8 -0
- package/templates/claude/rules/xylabs-git-workflow.md +7 -0
- package/templates/claude/rules/xylabs-naming.md +7 -0
- package/templates/claude/rules/xylabs-style.md +17 -0
- package/templates/claude/skills/xylabs-e2e-setup/SKILL.md +223 -0
- package/templates/claude/skills/xylabs-xy-cli/SKILL.md +236 -0
- package/templates/claude/skills/xylabs-xy-deplint-fix/SKILL.md +122 -0
- package/templates/gitignore/gitignore/template.gitignore +51 -0
- package/templates/gitignore/template.gitignore +51 -0
- package/templates/readme/README.body.md +25 -0
- package/templates/readme/README.template.md +22 -0
- package/templates/repo/cli/package/package.json.tmpl +63 -0
- package/templates/repo/cli/package/src/__packageName__.ts.tmpl +21 -0
- package/templates/repo/cli/package/src/actions/index.ts +1 -0
- package/templates/repo/cli/package/src/actions/printVersion.ts.tmpl +8 -0
- package/templates/repo/cli/package/src/bin/__packageName__.ts.tmpl +12 -0
- package/templates/repo/cli/package/src/commands/index.ts +1 -0
- package/templates/repo/cli/package/src/commands/versionCommand.ts.tmpl +11 -0
- package/templates/repo/cli/package/src/index.ts.tmpl +1 -0
- package/templates/repo/cli/package/tsconfig.build.json +25 -0
- package/templates/repo/cli/package/tsconfig.json +4 -0
- package/templates/repo/cli/package/tsup.config.ts +15 -0
- package/templates/repo/cli/package/xy.config.ts +3 -0
- package/templates/repo/cli/root/CLAUDE.md.tmpl +38 -0
- package/templates/repo/cli/root/cspell.json.tmpl +13 -0
- package/templates/repo/cli/root/eslint.config.ts +28 -0
- package/templates/repo/cli/root/github/workflows/build-pnpm.yml.tmpl +34 -0
- package/templates/repo/cli/root/github/workflows/build-yarn.yml.tmpl +32 -0
- package/templates/repo/cli/root/gitignore.tmpl +47 -0
- package/templates/repo/cli/root/knip.config.ts +16 -0
- package/templates/repo/cli/root/package.json.tmpl +54 -0
- package/templates/repo/cli/root/pnpm-workspace.yaml +2 -0
- package/templates/repo/cli/root/tsconfig.json +4 -0
- package/templates/repo/cli/root/vitest.config.ts +31 -0
- package/templates/repo/cli/root/xy.config.ts.tmpl +5 -0
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: xylabs-e2e-setup
|
|
3
|
+
description: >
|
|
4
|
+
Sets up a complete Playwright end-to-end testing package for a React/Vite monorepo app.
|
|
5
|
+
Use this skill whenever the user asks to add e2e tests, set up Playwright, add browser testing,
|
|
6
|
+
or create a test package for a React app — even if they just say something like "add e2e" or
|
|
7
|
+
"I want to test this in Safari too". The skill creates the full packages/e2e/ directory with
|
|
8
|
+
page object models, a Playwright config covering Chromium, Firefox, and WebKit, and a webkit-safe
|
|
9
|
+
home page title test. It adapts to the existing repo's package naming, dev server port, and
|
|
10
|
+
workspace conventions rather than using generic defaults.
|
|
11
|
+
---
|
|
12
|
+
# xylabs-e2e-setup
|
|
13
|
+
Scaffolds a `packages/e2e/` Playwright testing package that fits neatly into an existing
|
|
14
|
+
React/Vite Yarn-workspaces monorepo. The generated package uses the Page Object Model pattern,
|
|
15
|
+
targets all three browser engines, and includes a WebKit-safe title assertion.
|
|
16
|
+
---
|
|
17
|
+
## Step 1 — Read the repo before writing anything
|
|
18
|
+
Before generating any files, collect these four pieces of information from the repo root:
|
|
19
|
+
1. **App package name** — read `package.json` → `name` field (e.g. `web-explore.xyo.network-react`)
|
|
20
|
+
2. **Dev-server port** — read `vite.config.ts`; look for the parsed `port` variable or the `server.port` value. Default is `3000` if not set.
|
|
21
|
+
3. **Existing e2e scripts** — check whether `package.json` already has `"e2e"` scripts so you don't duplicate them.
|
|
22
|
+
4. **Workspace glob** — confirm `"workspaces": ["packages/*"]` is present so `packages/e2e` will be picked up automatically.
|
|
23
|
+
The e2e package name should be derived from the app name by stripping any leading scope/path noise
|
|
24
|
+
and appending `-e2e`. For example, `web-explore.xyo.network-react` → `web-explore-e2e`.
|
|
25
|
+
---
|
|
26
|
+
## Step 2 — Create `packages/e2e/`
|
|
27
|
+
Create every file below. Adapt the port and package name to what you found in Step 1.
|
|
28
|
+
### `packages/e2e/package.json`
|
|
29
|
+
```json
|
|
30
|
+
{
|
|
31
|
+
"name": "<derived-e2e-name>",
|
|
32
|
+
"private": true,
|
|
33
|
+
"type": "module",
|
|
34
|
+
"scripts": {
|
|
35
|
+
"test": "playwright test",
|
|
36
|
+
"test:debug": "playwright test --debug",
|
|
37
|
+
"test:headed": "playwright test --headed",
|
|
38
|
+
"test:ui": "playwright test --ui"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@playwright/test": "^1.49.0"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
### `packages/e2e/tsconfig.json`
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"compilerOptions": {
|
|
49
|
+
"esModuleInterop": true,
|
|
50
|
+
"lib": ["ES2022", "DOM"],
|
|
51
|
+
"module": "ESNext",
|
|
52
|
+
"moduleResolution": "bundler",
|
|
53
|
+
"noEmit": true,
|
|
54
|
+
"strict": true,
|
|
55
|
+
"target": "ES2022"
|
|
56
|
+
},
|
|
57
|
+
"exclude": ["node_modules", "test-results", "playwright-report"],
|
|
58
|
+
"include": ["playwright.config.ts", "tests/**/*.ts", "pages/**/*.ts", "fixtures/**/*.ts"]
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
### `packages/e2e/playwright.config.ts`
|
|
62
|
+
Key points:
|
|
63
|
+
- `baseURL` falls back to `http://localhost:<PORT>` (use the port you found)
|
|
64
|
+
- `webServer` restarts the app's own dev server when needed, with `reuseExistingServer: true`
|
|
65
|
+
- `webServer.cwd` is `'../..'` — two levels up from `packages/e2e/` to the repo root
|
|
66
|
+
- `webServer.command` is `'yarn start'` (the standard React/Vite dev-server script)
|
|
67
|
+
- CI mode: `forbidOnly`, 1 worker, 2 retries, `github` reporter
|
|
68
|
+
```typescript
|
|
69
|
+
import { defineConfig, devices } from '@playwright/test'
|
|
70
|
+
const baseURL = process.env['BASE_URL'] ?? 'http://localhost:<PORT>'
|
|
71
|
+
export default defineConfig({
|
|
72
|
+
forbidOnly: !!process.env['CI'],
|
|
73
|
+
fullyParallel: true,
|
|
74
|
+
projects: [
|
|
75
|
+
{
|
|
76
|
+
name: 'chromium',
|
|
77
|
+
use: { ...devices['Desktop Chrome'] },
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: 'firefox',
|
|
81
|
+
use: { ...devices['Desktop Firefox'] },
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: 'webkit',
|
|
85
|
+
use: { ...devices['Desktop Safari'] },
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
reporter: process.env['CI'] ? 'github' : 'html',
|
|
89
|
+
retries: process.env['CI'] ? 2 : 0,
|
|
90
|
+
testDir: './tests',
|
|
91
|
+
use: {
|
|
92
|
+
baseURL,
|
|
93
|
+
screenshot: 'only-on-failure',
|
|
94
|
+
trace: 'on-first-retry',
|
|
95
|
+
video: 'on-first-retry',
|
|
96
|
+
},
|
|
97
|
+
webServer: {
|
|
98
|
+
command: 'yarn start',
|
|
99
|
+
cwd: '../..',
|
|
100
|
+
reuseExistingServer: true,
|
|
101
|
+
url: baseURL,
|
|
102
|
+
},
|
|
103
|
+
workers: process.env['CI'] ? 1 : undefined,
|
|
104
|
+
})
|
|
105
|
+
```
|
|
106
|
+
### `packages/e2e/pages/BasePage.ts`
|
|
107
|
+
The `goto` base method navigates and waits for `domcontentloaded`. Subclasses override `goto()` with
|
|
108
|
+
no arguments and call `super.goto('/<path>')`.
|
|
109
|
+
```typescript
|
|
110
|
+
import type { Page } from '@playwright/test'
|
|
111
|
+
export class BasePage {
|
|
112
|
+
readonly page: Page
|
|
113
|
+
constructor(page: Page) {
|
|
114
|
+
this.page = page
|
|
115
|
+
}
|
|
116
|
+
async goto(path: string): Promise<void> {
|
|
117
|
+
await this.page.goto(path)
|
|
118
|
+
await this.page.waitForLoadState('domcontentloaded')
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
### `packages/e2e/pages/HomePage.ts`
|
|
123
|
+
```typescript
|
|
124
|
+
import type { Locator, Page } from '@playwright/test'
|
|
125
|
+
import { BasePage } from './BasePage.js'
|
|
126
|
+
export class HomePage extends BasePage {
|
|
127
|
+
readonly nav: Locator
|
|
128
|
+
constructor(page: Page) {
|
|
129
|
+
super(page)
|
|
130
|
+
this.nav = page.locator('nav')
|
|
131
|
+
}
|
|
132
|
+
override async goto(): Promise<void> {
|
|
133
|
+
await super.goto('/')
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
### `packages/e2e/tests/home.spec.ts`
|
|
138
|
+
> **Why the `waitForFunction` call?**
|
|
139
|
+
> In WebKit (Safari), `networkidle` can fire before React (or react-helmet) has written
|
|
140
|
+
> `document.title`. Adding `waitForFunction(() => document.title.length > 0)` polls inside
|
|
141
|
+
> the browser until the title is actually set, so the `toHaveTitle` assertion is always
|
|
142
|
+
> racing against a non-empty string rather than timing out on an empty one.
|
|
143
|
+
```typescript
|
|
144
|
+
import { expect, test } from '@playwright/test'
|
|
145
|
+
import { HomePage } from '../pages/HomePage.js'
|
|
146
|
+
test.describe('Home page', () => {
|
|
147
|
+
test('loads successfully', async ({ page }) => {
|
|
148
|
+
const home = new HomePage(page)
|
|
149
|
+
await home.goto()
|
|
150
|
+
await page.waitForFunction(() => document.title.length > 0, { timeout: 5000 })
|
|
151
|
+
await expect(page).toHaveTitle(/.+/)
|
|
152
|
+
})
|
|
153
|
+
})
|
|
154
|
+
```
|
|
155
|
+
### `packages/e2e/tests/navigation.spec.ts`
|
|
156
|
+
Minimal smoke test — extend the `routes` array as the app grows.
|
|
157
|
+
```typescript
|
|
158
|
+
import { expect, test } from '@playwright/test'
|
|
159
|
+
const routes = [
|
|
160
|
+
{ name: 'Home', path: '/' },
|
|
161
|
+
]
|
|
162
|
+
test.describe('Navigation', () => {
|
|
163
|
+
for (const route of routes) {
|
|
164
|
+
test(`${route.name} route renders without errors`, async ({ page }) => {
|
|
165
|
+
await page.goto(route.path)
|
|
166
|
+
await expect(page.locator('body')).toBeVisible()
|
|
167
|
+
})
|
|
168
|
+
}
|
|
169
|
+
})
|
|
170
|
+
```
|
|
171
|
+
---
|
|
172
|
+
## Step 3 — Wire up root `package.json`
|
|
173
|
+
Add convenience scripts to the root `package.json` so developers can run tests without `cd`-ing
|
|
174
|
+
into `packages/e2e`. Use the e2e package name you derived in Step 1.
|
|
175
|
+
```json
|
|
176
|
+
"e2e": "yarn workspace <derived-e2e-name> test",
|
|
177
|
+
"e2e:debug": "yarn workspace <derived-e2e-name> test:debug",
|
|
178
|
+
"e2e:headed": "yarn workspace <derived-e2e-name> test:headed",
|
|
179
|
+
"e2e:ui": "yarn workspace <derived-e2e-name> test:ui"
|
|
180
|
+
```
|
|
181
|
+
Only add scripts that don't already exist.
|
|
182
|
+
---
|
|
183
|
+
## Step 4 — Update root `.gitignore`
|
|
184
|
+
Playwright generates several output directories that should never be committed. Read the root
|
|
185
|
+
`.gitignore` and append the following block **only if the entries are not already present**:
|
|
186
|
+
```gitignore
|
|
187
|
+
# Playwright
|
|
188
|
+
/packages/e2e/test-results/
|
|
189
|
+
/packages/e2e/playwright-report/
|
|
190
|
+
/packages/e2e/blob-report/
|
|
191
|
+
/packages/e2e/.playwright/
|
|
192
|
+
```
|
|
193
|
+
Do not create a new `.gitignore` if one doesn't exist — if there is no root `.gitignore`, skip
|
|
194
|
+
this step and note it to the user.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
## Step 5 — Install Playwright browsers and CLI tool
|
|
198
|
+
After scaffolding, run the following two commands via the Bash tool:
|
|
199
|
+
|
|
200
|
+
**5a — Install browser binaries:**
|
|
201
|
+
```bash
|
|
202
|
+
yarn workspace <derived-e2e-name> playwright install
|
|
203
|
+
```
|
|
204
|
+
This downloads the Chromium, Firefox, and WebKit browser binaries. Without this step the tests
|
|
205
|
+
will fail immediately with a "browser not found" error.
|
|
206
|
+
|
|
207
|
+
**5b — Install the `@playwright/cli` package and its skills:**
|
|
208
|
+
```bash
|
|
209
|
+
yarn workspace <derived-e2e-name> add @playwright/cli@latest && yarn workspace <derived-e2e-name> playwright-cli install --skills
|
|
210
|
+
```
|
|
211
|
+
`@playwright/cli` provides the `playwright-cli` binary. Running `playwright-cli install --skills`
|
|
212
|
+
installs the Playwright VS Code agent skills into the workspace so Copilot and other AI tooling
|
|
213
|
+
can generate accurate Playwright tests against the actual page structure.
|
|
214
|
+
|
|
215
|
+
Do not skip either step or ask the user to run them manually — execute both directly as part of
|
|
216
|
+
the setup.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
## Conventions to preserve
|
|
220
|
+
- All files use ESM (`import`/`export`), never CommonJS.
|
|
221
|
+
- Playwright bracket notation for env vars: `process.env['CI']`, not `process.env.CI` — avoids TypeScript strict-mode complaints.
|
|
222
|
+
- `strict: true` in `tsconfig.json`.
|
|
223
|
+
- No `dist/` output — `noEmit: true` because Playwright compiles on the fly via its own ESM loader.
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: xylabs-xy-cli
|
|
3
|
+
description: >
|
|
4
|
+
Comprehensive reference for the `xy` CLI provided by `@xylabs/ts-scripts-yarn3`.
|
|
5
|
+
Use this skill whenever the user asks how to build, lint, test, deploy, or run any
|
|
6
|
+
tooling command in an XY Labs monorepo — even if they just say something like
|
|
7
|
+
"how do I compile" or "check my deps". Covers every command, common workflows,
|
|
8
|
+
single-package targeting, and troubleshooting.
|
|
9
|
+
---
|
|
10
|
+
# xylabs-xy-cli
|
|
11
|
+
|
|
12
|
+
The `xy` CLI is the unified build toolchain for all XY Labs and XYO Network TypeScript
|
|
13
|
+
monorepos. It wraps compilation, linting, testing, dependency analysis, deployment, and
|
|
14
|
+
repo maintenance into a single tool.
|
|
15
|
+
|
|
16
|
+
**Always run `xy` commands from the repo root**, never from inside a package directory.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Package Manager Detection
|
|
21
|
+
|
|
22
|
+
Before running any command, detect the repo's package manager by checking the repo root:
|
|
23
|
+
- `yarn.lock` present → use **yarn** (e.g. `yarn xy build`)
|
|
24
|
+
- `pnpm-lock.yaml` present → use **pnpm** (e.g. `pnpm xy build`)
|
|
25
|
+
|
|
26
|
+
All commands below are shown without a prefix. Prepend the detected package manager
|
|
27
|
+
when executing (e.g. `xy build` → `yarn xy build` or `pnpm xy build`).
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Installation
|
|
32
|
+
|
|
33
|
+
The CLI is provided by `@xylabs/ts-scripts-yarn3` (or `@xylabs/ts-scripts-react-yarn3`
|
|
34
|
+
for React repos). It is already a devDependency in every XY Labs repo — no separate
|
|
35
|
+
install is needed.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Global Options
|
|
40
|
+
|
|
41
|
+
All commands accept these flags:
|
|
42
|
+
|
|
43
|
+
| Flag | Description |
|
|
44
|
+
|---|---|
|
|
45
|
+
| `-j, --jobs` | Max parallel jobs |
|
|
46
|
+
| `-v, --verbose` | Run with verbose logging (default: false) |
|
|
47
|
+
| `-i, --incremental` | Only act on changed packages (default: false) |
|
|
48
|
+
| `-p, --profile` | Profile the action (default: false) |
|
|
49
|
+
| `--version` | Show version number |
|
|
50
|
+
| `--help` | Show help |
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Command Reference
|
|
55
|
+
|
|
56
|
+
### Build & Compile
|
|
57
|
+
|
|
58
|
+
| Command | Description |
|
|
59
|
+
|---|---|
|
|
60
|
+
| `xy build [package]` | Full build: compile + publint + deplint + lint |
|
|
61
|
+
| `xy compile [package]` | Compile all packages (TypeScript via tsup) + publint |
|
|
62
|
+
| `xy compile-only [package]` | Compile only (no publint) |
|
|
63
|
+
| `xy recompile [package]` | Clean compiled output, then compile again |
|
|
64
|
+
| `xy rebuild [package]` | Clean everything, then full build |
|
|
65
|
+
| `xy copy-assets [package]` | Copy non-TS assets from `src/` to `dist/` |
|
|
66
|
+
| `xy clean [package]` | Remove `dist/` and `build/` artifacts |
|
|
67
|
+
|
|
68
|
+
### Lint & Fix
|
|
69
|
+
|
|
70
|
+
| Command | Description |
|
|
71
|
+
|---|---|
|
|
72
|
+
| `xy check` | Run gitlint, publint, repo lint, and lintlint as a batch |
|
|
73
|
+
| `xy lint [package]` | Run ESLint across all packages |
|
|
74
|
+
| `xy fix [package]` | Run ESLint with `--fix` to auto-fix issues |
|
|
75
|
+
| `xy relint [package]` | Clean ESLint cache, then lint from scratch |
|
|
76
|
+
| `xy deplint [package]` | Verify imports match `package.json` dependency declarations |
|
|
77
|
+
| `xy publint [package]` | Validate `package.json` correctness for npm publishing |
|
|
78
|
+
| `xy cycle [package]` | Detect circular dependency cycles |
|
|
79
|
+
| `xy knip` | Find unused exports and dead code |
|
|
80
|
+
| `xy dead [package]` | Check for dead (unreachable) code |
|
|
81
|
+
| `xy sonar` | Run SonarQube analysis |
|
|
82
|
+
| `xy lintlint` | Check for redundant or overridden ESLint rules vs shared config |
|
|
83
|
+
| `xy dupdeps` | Find duplicate dependency declarations across packages |
|
|
84
|
+
|
|
85
|
+
### Testing
|
|
86
|
+
|
|
87
|
+
| Command | Description |
|
|
88
|
+
|---|---|
|
|
89
|
+
| `xy test [target]` | Run Vitest tests |
|
|
90
|
+
| `xy retest [target]` | Clean test cache, then run tests |
|
|
91
|
+
|
|
92
|
+
### Deploy & Publish
|
|
93
|
+
|
|
94
|
+
| Command | Description |
|
|
95
|
+
|---|---|
|
|
96
|
+
| `xy deploy` | Patch version bump + build + publish |
|
|
97
|
+
| `xy deploy-minor` | Minor version bump + build + publish |
|
|
98
|
+
| `xy deploy-major` | Major version bump + build + publish |
|
|
99
|
+
| `xy deploy-next` | Deploy as `next` tag (pre-release) |
|
|
100
|
+
| `xy publish` | Publish packages to npmjs (without version bump) |
|
|
101
|
+
|
|
102
|
+
### Dependency Management
|
|
103
|
+
|
|
104
|
+
| Command | Description |
|
|
105
|
+
|---|---|
|
|
106
|
+
| `xy reinstall` | Remove `node_modules`, reinstall from scratch |
|
|
107
|
+
| `xy up` | Update all dependencies to latest compatible versions |
|
|
108
|
+
| `xy updo` | Update dependencies (interactive) |
|
|
109
|
+
| `xy upplug` | Update Yarn plugins |
|
|
110
|
+
| `xy upyarn` | Update Yarn version |
|
|
111
|
+
| `xy statics` | Confirm static packages |
|
|
112
|
+
| `xy yarn3only` | Check if using Yarn v3 |
|
|
113
|
+
|
|
114
|
+
### Git & Repo Maintenance
|
|
115
|
+
|
|
116
|
+
| Command | Description |
|
|
117
|
+
|---|---|
|
|
118
|
+
| `xy gitlint [package]` | Lint git configuration (ignorecase, autocrlf, etc.) |
|
|
119
|
+
| `xy gitignore` | Generate root `.gitignore` and remove package-level ones |
|
|
120
|
+
| `xy npmignore-gen` | Generate `.npmignore` files |
|
|
121
|
+
| `xy license [package]` | Check dependency licenses for compliance |
|
|
122
|
+
| `xy gen-docs [package]` | Generate TypeDoc API documentation |
|
|
123
|
+
| `xy clean-docs` | Clean TypeDoc output |
|
|
124
|
+
|
|
125
|
+
### README Utilities
|
|
126
|
+
|
|
127
|
+
| Command | Description |
|
|
128
|
+
|---|---|
|
|
129
|
+
| `xy readme gen [package]` | Generate README.md files from template |
|
|
130
|
+
| `xy readme init` | Initialize README template and logo files |
|
|
131
|
+
|
|
132
|
+
`xy readme gen` accepts `--template <path>` to specify a custom template and
|
|
133
|
+
`--typedoc` to include TypeDoc reference sections.
|
|
134
|
+
|
|
135
|
+
### Repo Utilities
|
|
136
|
+
|
|
137
|
+
| Command | Description |
|
|
138
|
+
|---|---|
|
|
139
|
+
| `xy repo lint` | Check monorepo package structure (root private, workspace globs, etc.) |
|
|
140
|
+
|
|
141
|
+
### Package Manager Utilities
|
|
142
|
+
|
|
143
|
+
| Command | Description |
|
|
144
|
+
|---|---|
|
|
145
|
+
| `xy packman convert <target>` | Convert repo to a different package manager (pnpm or yarn) |
|
|
146
|
+
| `xy packman lint` | Check package manager configuration settings |
|
|
147
|
+
|
|
148
|
+
### Claude Code Integration
|
|
149
|
+
|
|
150
|
+
| Command | Description |
|
|
151
|
+
|---|---|
|
|
152
|
+
| `xy claude init` | Initialize all Claude configuration (commands, rules, skills, settings) |
|
|
153
|
+
| `xy claude check` | Check if Claude configuration is up to date with templates |
|
|
154
|
+
| `xy claude clean` | Remove all Claude configuration files |
|
|
155
|
+
| `xy claude commands` | Sync slash commands to `.claude/commands/` |
|
|
156
|
+
| `xy claude rules` | Sync rules to `.claude/rules/` |
|
|
157
|
+
| `xy claude skills` | Sync skills to `.claude/skills/` |
|
|
158
|
+
| `xy claude settings` | Initialize `.claude/settings.local.json` |
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Targeting a Single Package
|
|
163
|
+
|
|
164
|
+
Most commands accept an optional `[package]` argument to scope to one package:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
xy compile my-package
|
|
168
|
+
xy lint my-package
|
|
169
|
+
xy deplint my-package
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Use the **package name** from `package.json` (e.g. `@xylabs/assert`), not the directory
|
|
173
|
+
path. You can also use just the short name without the scope (e.g. `assert`).
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Common Workflows
|
|
178
|
+
|
|
179
|
+
### Before pushing code
|
|
180
|
+
```bash
|
|
181
|
+
xy build
|
|
182
|
+
```
|
|
183
|
+
This runs the full pipeline: compile, publint, deplint, and lint. If it passes, the code
|
|
184
|
+
is ready to push.
|
|
185
|
+
|
|
186
|
+
### After modifying dependencies
|
|
187
|
+
```bash
|
|
188
|
+
xy deplint
|
|
189
|
+
```
|
|
190
|
+
Catches missing or extraneous entries in `package.json` relative to actual imports.
|
|
191
|
+
|
|
192
|
+
### When lint results seem stale
|
|
193
|
+
```bash
|
|
194
|
+
xy relint
|
|
195
|
+
```
|
|
196
|
+
Clears the ESLint cache and re-lints everything.
|
|
197
|
+
|
|
198
|
+
### When tests seem stale
|
|
199
|
+
```bash
|
|
200
|
+
xy retest
|
|
201
|
+
```
|
|
202
|
+
Clears the Vitest cache and re-runs tests.
|
|
203
|
+
|
|
204
|
+
### When things are broken and you want a clean slate
|
|
205
|
+
```bash
|
|
206
|
+
xy rebuild
|
|
207
|
+
```
|
|
208
|
+
Cleans all artifacts, recompiles, and re-lints.
|
|
209
|
+
|
|
210
|
+
### Nuclear option — full reset
|
|
211
|
+
```bash
|
|
212
|
+
xy reinstall
|
|
213
|
+
```
|
|
214
|
+
Removes `node_modules` and reinstalls everything from scratch.
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Troubleshooting
|
|
219
|
+
|
|
220
|
+
### "Command not found: xy"
|
|
221
|
+
The `xy` binary comes from `@xylabs/ts-scripts-yarn3`. Run `install` via your package
|
|
222
|
+
manager to ensure it is linked. The binary is at `node_modules/.bin/xy`.
|
|
223
|
+
|
|
224
|
+
### Compile errors in other packages
|
|
225
|
+
`ts-scripts-yarn3` must compile before other packages that depend on it. The repo's
|
|
226
|
+
`compile` script handles this ordering automatically — always use `xy compile`
|
|
227
|
+
from the root, not `tsc` directly.
|
|
228
|
+
|
|
229
|
+
### Deplint false positives
|
|
230
|
+
Deplint scans TypeScript source imports and `tsconfig.json` extends chains. If a
|
|
231
|
+
dependency is used only in config files (not source), it may flag as unused. Check the
|
|
232
|
+
output carefully before removing.
|
|
233
|
+
|
|
234
|
+
### Version conflicts
|
|
235
|
+
All packages in a repo share a single version. Never edit version fields manually —
|
|
236
|
+
use `xy deploy` variants to bump versions.
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: xylabs-xy-deplint-fix
|
|
3
|
+
description: >
|
|
4
|
+
Fix dependency declaration errors in one or more packages using `xy deplint --fix`.
|
|
5
|
+
Use this skill whenever the user asks to fix deplint errors, clean up package.json
|
|
6
|
+
dependencies, or resolve "dependency should be devDependency" / "missing dependency"
|
|
7
|
+
warnings in an XY Labs monorepo. If a package name is supplied as an argument, fix
|
|
8
|
+
only that package. If no argument is given, fix all packages in the repo.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# xylabs-xy-deplint-fix
|
|
12
|
+
|
|
13
|
+
Diagnoses and fixes `package.json` dependency declaration errors reported by `xy deplint`
|
|
14
|
+
in an XY Labs monorepo. The `--fix` flag handles all error types automatically.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Package Manager Detection
|
|
19
|
+
|
|
20
|
+
Check the repo root before running any command:
|
|
21
|
+
|
|
22
|
+
* `yarn.lock` present → prefix commands with **yarn** (e.g. `yarn xy deplint`)
|
|
23
|
+
* `pnpm-lock.yaml` present → prefix commands with **pnpm**
|
|
24
|
+
|
|
25
|
+
All commands below are shown without a prefix. Prepend accordingly.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## What `--fix` handles
|
|
30
|
+
|
|
31
|
+
| Error message | Fix applied |
|
|
32
|
+
|---|---|
|
|
33
|
+
| `dependency should be devDependency` | Moves from `dependencies` → `devDependencies` |
|
|
34
|
+
| `Unused dependency` | Removes from `dependencies` |
|
|
35
|
+
| `Unused devDependency` | Removes from `devDependencies` |
|
|
36
|
+
| `Unused peerDependency` | Removes from `peerDependencies` |
|
|
37
|
+
| `Missing dependency` | Adds to `dependencies` (version from node_modules) |
|
|
38
|
+
| `Missing devDependency` | Adds to `devDependencies` (version from node_modules) |
|
|
39
|
+
| `Unsatisfied peer dependency` | Adds to appropriate section based on context |
|
|
40
|
+
|
|
41
|
+
Empty dependency sections are removed automatically. All edits are sorted with
|
|
42
|
+
`sort-package-json`.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Workflow
|
|
47
|
+
|
|
48
|
+
### Step 1 — Fix
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Whole repo
|
|
52
|
+
xy deplint --fix
|
|
53
|
+
|
|
54
|
+
# Single package
|
|
55
|
+
xy deplint --fix package-name
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
This scans for problems and applies fixes to `package.json` files in place.
|
|
59
|
+
Review the output to see what was changed.
|
|
60
|
+
|
|
61
|
+
### Step 2 — Install
|
|
62
|
+
|
|
63
|
+
After `--fix` modifies `package.json` files, reinstall from the repo root so the
|
|
64
|
+
lockfile and `node_modules` reflect the changes:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
yarn install # or: pnpm install
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Do **not** use `yarn workspaces focus` — it strips the root-level `xy` script bindings.
|
|
71
|
+
|
|
72
|
+
### Step 3 — Verify
|
|
73
|
+
|
|
74
|
+
Re-run deplint without `--fix` to confirm all issues are resolved:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
xy deplint [package-name]
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Definition of done:**
|
|
81
|
+
|
|
82
|
+
```text
|
|
83
|
+
Deplint: Found no dependency problems. ✔
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
If problems remain, repeat from Step 1. Some issues (e.g. newly-added deps introducing
|
|
87
|
+
their own unsatisfied peers) may require multiple passes.
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Edge Cases
|
|
92
|
+
|
|
93
|
+
### Multiple passes required
|
|
94
|
+
|
|
95
|
+
Fixing missing dependencies may introduce new unsatisfied peer dependency errors, since
|
|
96
|
+
the newly-added package has its own peers. Run the fix → install → verify loop until
|
|
97
|
+
clean.
|
|
98
|
+
|
|
99
|
+
### Version resolution for missing deps
|
|
100
|
+
|
|
101
|
+
`--fix` resolves versions by reading the installed version from `node_modules` and
|
|
102
|
+
prefixing with `~`. If the package is not installed, it falls back to `*`. After
|
|
103
|
+
installing and re-running, the version will be resolved correctly on the next pass.
|
|
104
|
+
|
|
105
|
+
### Aggregator packages
|
|
106
|
+
|
|
107
|
+
Aggregator packages (no `src/`, only re-export workspace children) may need all workspace
|
|
108
|
+
children as `devDependencies`. `--fix` handles this — it moves deps to devDependencies
|
|
109
|
+
and adds missing transitive deps automatically.
|
|
110
|
+
|
|
111
|
+
### `dependency should be devDependency` for a runtime import
|
|
112
|
+
|
|
113
|
+
deplint may flag a dep as "should be devDependency" even when it is imported for a
|
|
114
|
+
runtime value. This happens when the dep is a foundational library that consumers are
|
|
115
|
+
expected to already have installed (behaves like a peer). `--fix` moves it to
|
|
116
|
+
`devDependencies`. If the dep must be guaranteed for external npm consumers, manually
|
|
117
|
+
add it to `peerDependencies` after fixing.
|
|
118
|
+
|
|
119
|
+
### `yarn workspaces focus` breaks the `xy` command
|
|
120
|
+
|
|
121
|
+
`yarn workspaces focus <package>` installs only the deps for that one package and removes
|
|
122
|
+
the root-level `xy` script bindings. Always use `yarn install` (full) after fixing.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Build outputs (root)
|
|
2
|
+
/build
|
|
3
|
+
/dist
|
|
4
|
+
/docs
|
|
5
|
+
/storybook-static
|
|
6
|
+
|
|
7
|
+
# Build outputs (packages)
|
|
8
|
+
packages/*/build
|
|
9
|
+
packages/*/dist
|
|
10
|
+
packages/*/docs
|
|
11
|
+
packages/*/storybook-static
|
|
12
|
+
|
|
13
|
+
# Coverage
|
|
14
|
+
/coverage
|
|
15
|
+
packages/*/coverage
|
|
16
|
+
|
|
17
|
+
# TypeScript
|
|
18
|
+
*.tsbuildinfo
|
|
19
|
+
|
|
20
|
+
# Logs
|
|
21
|
+
*.log
|
|
22
|
+
|
|
23
|
+
# Environment
|
|
24
|
+
.env
|
|
25
|
+
.env.*
|
|
26
|
+
!.env.example
|
|
27
|
+
|
|
28
|
+
# OS
|
|
29
|
+
.DS_Store
|
|
30
|
+
|
|
31
|
+
# Node
|
|
32
|
+
node_modules
|
|
33
|
+
|
|
34
|
+
# Yarn
|
|
35
|
+
.pnp.*
|
|
36
|
+
.yarn/*
|
|
37
|
+
!.yarn/patches
|
|
38
|
+
!.yarn/plugins
|
|
39
|
+
!.yarn/releases
|
|
40
|
+
!.yarn/sdks
|
|
41
|
+
!.yarn/versions
|
|
42
|
+
|
|
43
|
+
# Lint
|
|
44
|
+
.eslintcache
|
|
45
|
+
|
|
46
|
+
# Claude Code
|
|
47
|
+
.claude
|
|
48
|
+
CLAUDE.local.md
|
|
49
|
+
|
|
50
|
+
# Claude Code worktrees
|
|
51
|
+
.claude-worktrees
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Build outputs (root)
|
|
2
|
+
/build
|
|
3
|
+
/dist
|
|
4
|
+
/docs
|
|
5
|
+
/storybook-static
|
|
6
|
+
|
|
7
|
+
# Build outputs (packages)
|
|
8
|
+
packages/*/build
|
|
9
|
+
packages/*/dist
|
|
10
|
+
packages/*/docs
|
|
11
|
+
packages/*/storybook-static
|
|
12
|
+
|
|
13
|
+
# Coverage
|
|
14
|
+
/coverage
|
|
15
|
+
packages/*/coverage
|
|
16
|
+
|
|
17
|
+
# TypeScript
|
|
18
|
+
*.tsbuildinfo
|
|
19
|
+
|
|
20
|
+
# Logs
|
|
21
|
+
*.log
|
|
22
|
+
|
|
23
|
+
# Environment
|
|
24
|
+
.env
|
|
25
|
+
.env.*
|
|
26
|
+
!.env.example
|
|
27
|
+
|
|
28
|
+
# OS
|
|
29
|
+
.DS_Store
|
|
30
|
+
|
|
31
|
+
# Node
|
|
32
|
+
node_modules
|
|
33
|
+
|
|
34
|
+
# Yarn
|
|
35
|
+
.pnp.*
|
|
36
|
+
.yarn/*
|
|
37
|
+
!.yarn/patches
|
|
38
|
+
!.yarn/plugins
|
|
39
|
+
!.yarn/releases
|
|
40
|
+
!.yarn/sdks
|
|
41
|
+
!.yarn/versions
|
|
42
|
+
|
|
43
|
+
# Lint
|
|
44
|
+
.eslintcache
|
|
45
|
+
|
|
46
|
+
# Claude Code
|
|
47
|
+
.claude
|
|
48
|
+
CLAUDE.local.md
|
|
49
|
+
|
|
50
|
+
# Claude Code worktrees
|
|
51
|
+
.claude-worktrees
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
## Install
|
|
2
|
+
|
|
3
|
+
Using npm:
|
|
4
|
+
|
|
5
|
+
```sh
|
|
6
|
+
npm install {{name}}
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Using yarn:
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
yarn add {{name}}
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Using pnpm:
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
pnpm add {{name}}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Using bun:
|
|
22
|
+
|
|
23
|
+
```sh
|
|
24
|
+
bun add {{name}}
|
|
25
|
+
```
|