@elliemae/pui-cli 9.0.0-alpha.10 → 9.0.0-alpha.12
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/README.md +2 -1
- package/build/docs/404.html +2 -2
- package/build/docs/api/functions/loadRoutes/index.html +2 -2
- package/build/docs/api/index.html +2 -2
- package/build/docs/api/type-aliases/LIB_NAME/index.html +2 -2
- package/build/docs/api/variables/babelConfig/index.html +2 -2
- package/build/docs/api/variables/commitlintConfig/index.html +2 -2
- package/build/docs/api/variables/eslintBaseConfig/index.html +2 -2
- package/build/docs/api/variables/eslintConfig/index.html +2 -2
- package/build/docs/api/variables/eslintFlatBaseConfig/index.html +2 -2
- package/build/docs/api/variables/eslintFlatBaseConfigStrict/index.html +2 -2
- package/build/docs/api/variables/eslintFlatConfig/index.html +2 -2
- package/build/docs/api/variables/eslintFlatConfigStrict/index.html +2 -2
- package/build/docs/api/variables/jestConfig/index.html +2 -2
- package/build/docs/api/variables/jestNodeConfig/index.html +2 -2
- package/build/docs/api/variables/lintStagedConfig/index.html +2 -2
- package/build/docs/api/variables/prettierConfig/index.html +2 -2
- package/build/docs/api/variables/stylelintConfig/index.html +2 -2
- package/build/docs/api/variables/vitestConfig/index.html +2 -2
- package/build/docs/assets/js/04ee7372.2852111b.js +1 -0
- package/build/docs/assets/js/13097d8d.7877421c.js +1 -0
- package/build/docs/assets/js/4fb6949f.69e375e4.js +1 -0
- package/build/docs/assets/js/{main.00e13c37.js → main.d5acb4ca.js} +2 -2
- package/build/docs/assets/js/{runtime~main.cb214d1a.js → runtime~main.4f7cd700.js} +1 -1
- package/build/docs/eslint-rules-migration/index.html +6 -6
- package/build/docs/index.html +2 -2
- package/build/docs/pui-cli-9-migration/index.html +93 -6
- package/build/docs/ssl-certificate-setup/index.html +2 -2
- package/build/docs/stylelint-migration/index.html +2 -2
- package/build/docs/usage-guide/index.html +4 -4
- package/dist/cjs/commands/storybook.js +33 -4
- package/dist/cjs/lint-config/eslint/flat/compat.mjs +5 -5
- package/dist/cjs/skills/migrate-storybook-out-of-cjs/SKILL.md +188 -0
- package/dist/cjs/skills/migrate-to-pui-cli-9/SKILL.md +131 -18
- package/dist/cjs/testing/jest.config.cjs +5 -1
- package/dist/cjs/testing/setup-textencoder.cjs +4 -0
- package/dist/cjs/webpack/webpack.storybook.js +62 -0
- package/dist/esm/commands/storybook.js +22 -4
- package/dist/esm/lint-config/eslint/flat/compat.mjs +5 -5
- package/dist/esm/skills/migrate-storybook-out-of-cjs/SKILL.md +188 -0
- package/dist/esm/skills/migrate-to-pui-cli-9/SKILL.md +131 -18
- package/dist/esm/testing/jest.config.cjs +5 -1
- package/dist/esm/testing/setup-textencoder.cjs +4 -0
- package/dist/esm/webpack/webpack.storybook.js +61 -0
- package/dist/types/lib/commands/storybook.d.ts +1 -0
- package/dist/types/lib/lint-config/eslint/flat/compat.d.mts +1 -1
- package/dist/types/lib/testing/setup-textencoder.d.cts +1 -0
- package/dist/types/lib/webpack/webpack.storybook.d.ts +2 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/lib/lint-config/eslint/flat/compat.mjs +5 -5
- package/lib/skills/migrate-storybook-out-of-cjs/SKILL.md +188 -0
- package/lib/skills/migrate-to-pui-cli-9/SKILL.md +131 -18
- package/package.json +18 -25
- package/build/docs/assets/js/04ee7372.eaa386ed.js +0 -1
- package/build/docs/assets/js/13097d8d.c1821d28.js +0 -1
- package/build/docs/assets/js/4fb6949f.369cc1b9.js +0 -1
- /package/build/docs/assets/js/{main.00e13c37.js.LICENSE.txt → main.d5acb4ca.js.LICENSE.txt} +0 -0
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<meta name="generator" content="Docusaurus v3.10.1">
|
|
6
6
|
<title data-rh="true">pui-cli 9 migration guide | Cli</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://pui.ice.com/cli/pui-cli-9-migration"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="pui-cli 9 migration guide | Cli"><meta data-rh="true" name="description" content="This guide helps PUI consumers upgrade apps and libraries from pui-cli 8 to pui-cli 9."><meta data-rh="true" property="og:description" content="This guide helps PUI consumers upgrade apps and libraries from pui-cli 8 to pui-cli 9."><link data-rh="true" rel="icon" href="/cli/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://pui.ice.com/cli/pui-cli-9-migration"><link data-rh="true" rel="alternate" href="https://pui.ice.com/cli/pui-cli-9-migration" hreflang="en"><link data-rh="true" rel="alternate" href="https://pui.ice.com/cli/pui-cli-9-migration" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"pui-cli 9 migration guide","item":"https://pui.ice.com/cli/pui-cli-9-migration"}]}</script><link rel="stylesheet" href="/cli/assets/css/styles.74603f39.css">
|
|
7
|
-
<script src="/cli/assets/js/runtime~main.
|
|
8
|
-
<script src="/cli/assets/js/main.
|
|
7
|
+
<script src="/cli/assets/js/runtime~main.4f7cd700.js" defer="defer"></script>
|
|
8
|
+
<script src="/cli/assets/js/main.d5acb4ca.js" defer="defer"></script>
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<svg style="display: none;"><defs>
|
|
@@ -16,18 +16,19 @@
|
|
|
16
16
|
For ESLint rule-level detail, see <a class="" href="/cli/eslint-rules-migration">ESLint rules migration guide</a>.</p>
|
|
17
17
|
<hr>
|
|
18
18
|
<h2 class="anchor anchorTargetStickyNavbar_jFbF" id="at-a-glance">At a glance<a href="#at-a-glance" class="hash-link" aria-label="Direct link to At a glance" title="Direct link to At a glance" translate="no"></a></h2>
|
|
19
|
-
<table><thead><tr><th>Topic</th><th>pui-cli 8</th><th>pui-cli 9</th></tr></thead><tbody><tr><td>Node.js</td><td>20</td><td><strong>24</strong></td></tr><tr><td>pnpm</td><td>8–10</td><td><strong>11</strong></td></tr><tr><td>App/library bundler</td><td>Webpack</td><td><strong>Webpack</strong> (unchanged)</td></tr><tr><td>ESLint</td><td>8.x + <code>.eslintrc.cjs</code></td><td><strong>10.x</strong> + <code>eslint.config.mjs</code></td></tr><tr><td>Stylelint</td><td>15.x + <code>stylelint-config-styled-components</code></td><td><strong>17.x</strong> + <code>postcss-styled-syntax</code> (styled-components rules inlined)</td></tr><tr><td>Vitest (via <code>pui-cli vitest</code>)</td><td>1.x</td><td><strong>4.x</strong> (uses Vite internally; not the app bundler)</td></tr><tr><td>TypeScript lint</td><td><code>@typescript-eslint</code> v5</td><td><code>typescript-eslint</code> v8</td></tr><tr><td>Exported tsconfig</td><td><code>moduleResolution: "node"</code></td><td><strong><code>moduleResolution: "bundler"</code></strong></td></tr><tr><td>Shared config import</td><td><code>require('@elliemae/pui-cli').eslintConfig</code></td><td><code>import { eslintFlatConfig } from '@elliemae/pui-cli/eslint'</code></td></tr><tr><td>Stylelint import</td><td><code>require('@elliemae/pui-cli').stylelintConfig</code></td><td><code>import { stylelintConfig } from '@elliemae/pui-cli/stylelint'</code> (or keep CJS re-export)</td></tr><tr><td>semantic-release</td><td>21.x + <code>release.config.cjs</code></td><td><strong>25.x</strong> + <code>release.config.mjs</code> (ESM <code>extends</code> for shareable config)</td></tr><tr><td>Husky</td><td>8.x</td><td><strong>9.x</strong></td></tr><tr><td>Cursor skill</td><td>—</td><td><code>pui-cli skills install migrate-to-pui-cli-9 --target all</code></td></tr></tbody></table>
|
|
19
|
+
<table><thead><tr><th>Topic</th><th>pui-cli 8</th><th>pui-cli 9</th></tr></thead><tbody><tr><td>Node.js</td><td>20</td><td><strong>24</strong></td></tr><tr><td>pnpm</td><td>8–10</td><td><strong>11</strong> (hoist settings in <strong><code>pnpm-workspace.yaml</code></strong>, not <code>.npmrc</code>)</td></tr><tr><td>App/library bundler</td><td>Webpack</td><td><strong>Webpack</strong> (unchanged)</td></tr><tr><td>ESLint</td><td>8.x + <code>.eslintrc.cjs</code></td><td><strong>10.x</strong> + <code>eslint.config.mjs</code></td></tr><tr><td>Stylelint</td><td>15.x + <code>stylelint-config-styled-components</code></td><td><strong>17.x</strong> + <code>postcss-styled-syntax</code> (styled-components rules inlined)</td></tr><tr><td>Vitest (via <code>pui-cli vitest</code>)</td><td>1.x</td><td><strong>4.x</strong> (uses Vite internally; not the app bundler)</td></tr><tr><td>TypeScript lint</td><td><code>@typescript-eslint</code> v5</td><td><code>typescript-eslint</code> v8</td></tr><tr><td>Exported tsconfig</td><td><code>moduleResolution: "node"</code></td><td><strong><code>moduleResolution: "bundler"</code></strong></td></tr><tr><td>Shared config import</td><td><code>require('@elliemae/pui-cli').eslintConfig</code></td><td><code>import { eslintFlatConfig } from '@elliemae/pui-cli/eslint'</code></td></tr><tr><td>Stylelint import</td><td><code>require('@elliemae/pui-cli').stylelintConfig</code></td><td><code>import { stylelintConfig } from '@elliemae/pui-cli/stylelint'</code> (or keep CJS re-export)</td></tr><tr><td>semantic-release</td><td>21.x + <code>release.config.cjs</code></td><td><strong>25.x</strong> + <code>release.config.mjs</code> (ESM <code>extends</code> for shareable config)</td></tr><tr><td>Husky</td><td>8.x</td><td><strong>9.x</strong></td></tr><tr><td>Lerna (monorepos)</td><td>6.x</td><td><strong>9.x</strong> (via pui-cli; <code>bootstrap</code>/<code>add</code>/<code>link</code> removed)</td></tr><tr><td>Nx (monorepos)</td><td>15.x (<code>@nrwl/*</code>)</td><td><strong>22.x</strong> (<code>nx</code> + <code>@nx/workspace</code>; modern <code>nx.json</code>)</td></tr><tr><td>Cursor skill</td><td>—</td><td><code>pui-cli skills install migrate-to-pui-cli-9 --target all</code></td></tr><tr><td>Storybook CJS → ESM skill</td><td>—</td><td><code>pui-cli skills install migrate-storybook-out-of-cjs --target all</code></td></tr></tbody></table>
|
|
20
20
|
<hr>
|
|
21
21
|
<h2 class="anchor anchorTargetStickyNavbar_jFbF" id="recommended-rollout">Recommended rollout<a href="#recommended-rollout" class="hash-link" aria-label="Direct link to Recommended rollout" title="Direct link to Recommended rollout" translate="no"></a></h2>
|
|
22
22
|
<p>Ship in <strong>small PRs</strong> to reduce regression risk:</p>
|
|
23
23
|
<ol>
|
|
24
|
-
<li class=""><strong>Toolchain</strong> — Node 24 + pnpm 11 + CI image updates</li>
|
|
24
|
+
<li class=""><strong>Toolchain</strong> — Node 24 + pnpm 11 + CI image updates + <strong>hoisting in <code>pnpm-workspace.yaml</code></strong></li>
|
|
25
25
|
<li class=""><strong>Dependency bump</strong> — <code>@elliemae/pui-cli@9</code> without ESLint config change</li>
|
|
26
26
|
<li class=""><strong>ESLint flat config</strong> — add <code>eslint.config.mjs</code>, delete legacy ESLint files, fix lint</li>
|
|
27
27
|
<li class=""><strong>Stylelint 17</strong> — simplify <code>stylelint.config.cjs</code> (remove <code>stylelint-config-styled-components</code> overrides); optional <code>stylelint.config.mjs</code></li>
|
|
28
28
|
<li class=""><strong>Husky 9</strong> — update <code>prepare</code> script and hook files (if <code>.husky/</code> exists)</li>
|
|
29
29
|
<li class=""><strong>Vitest 4</strong> — only if the repo uses <code>pui-cli vitest</code> (see below)</li>
|
|
30
30
|
<li class=""><strong>semantic-release 25</strong> — migrate <code>release.config.cjs</code> → <code>release.config.mjs</code> (libraries that publish to npm)</li>
|
|
31
|
+
<li class=""><strong>Lerna 9 + Nx 22</strong> — monorepos only: update <code>nx.json</code>, remove <code>@nrwl/*</code> pins, verify <code>pui-cli version</code> / <code>nx run-many</code></li>
|
|
31
32
|
<li class=""><strong>Debt (optional)</strong> — remove temporary rule overrides, adopt strict config</li>
|
|
32
33
|
</ol>
|
|
33
34
|
<p>Each PR should pass: <code>lint</code>, <code>tscheck</code>, <code>test</code>, <code>build</code>.</p>
|
|
@@ -35,8 +36,33 @@ For ESLint rule-level detail, see <a class="" href="/cli/eslint-rules-migration"
|
|
|
35
36
|
<h2 class="anchor anchorTargetStickyNavbar_jFbF" id="step-by-step">Step-by-step<a href="#step-by-step" class="hash-link" aria-label="Direct link to Step-by-step" title="Direct link to Step-by-step" translate="no"></a></h2>
|
|
36
37
|
<h3 class="anchor anchorTargetStickyNavbar_jFbF" id="1-upgrade-toolchain">1. Upgrade toolchain<a href="#1-upgrade-toolchain" class="hash-link" aria-label="Direct link to 1. Upgrade toolchain" title="Direct link to 1. Upgrade toolchain" translate="no"></a></h3>
|
|
37
38
|
<div class="language-bash codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-bash codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token plain"># .node-version</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">24</span><br></div></code></pre></div></div>
|
|
38
|
-
<div class="language-json codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-json codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// package.json (root
|
|
39
|
+
<div class="language-json codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-json codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// package.json (root)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token property" style="color:#36acaa">"engines"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"pnpm"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">">=11"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"node"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">">=24"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
|
|
40
|
+
<p>Do <strong>not</strong> pin an exact pnpm version in <code>packageManager</code> — Corepack requires an exact semver there, which forces every customer onto the same patch. Use <code>engines.pnpm</code> so teams can run any pnpm 11 minor or patch. Omit <code>packageManager</code> unless you intentionally want Corepack to lock one version for your own CI.</p>
|
|
39
41
|
<p>Update Jenkins/docker Node images before merging.</p>
|
|
42
|
+
<h3 class="anchor anchorTargetStickyNavbar_jFbF" id="1b-migrate-pnpm-hoisting-to-pnpm-workspaceyaml-pnpm-11">1b. Migrate pnpm hoisting to <code>pnpm-workspace.yaml</code> (pnpm 11)<a href="#1b-migrate-pnpm-hoisting-to-pnpm-workspaceyaml-pnpm-11" class="hash-link" aria-label="Direct link to 1b-migrate-pnpm-hoisting-to-pnpm-workspaceyaml-pnpm-11" title="Direct link to 1b-migrate-pnpm-hoisting-to-pnpm-workspaceyaml-pnpm-11" translate="no"></a></h3>
|
|
43
|
+
<p><strong>Do this in every repo</strong> that upgrades to pnpm 11 — single-package apps, libraries, and monorepos.</p>
|
|
44
|
+
<h4 class="anchor anchorTargetStickyNavbar_jFbF" id="why">Why<a href="#why" class="hash-link" aria-label="Direct link to Why" title="Direct link to Why" translate="no"></a></h4>
|
|
45
|
+
<p>pnpm 11 only reads <strong>auth and registry</strong> from <code>.npmrc</code>. Every other pnpm setting — including hoisting — must live in <strong><code>pnpm-workspace.yaml</code></strong> (camelCase keys). See <a href="https://pnpm.io/next/migration" target="_blank" rel="noopener noreferrer" class="">pnpm v11 migration</a>.</p>
|
|
46
|
+
<p>If hoisting stays only in <code>.npmrc</code>, pnpm <strong>silently ignores it</strong>. Symptom: <code>node_modules/.modules.yaml</code> shows <code>"publicHoistPattern": []</code> even when <code>.npmrc</code> has <code>shamefully-hoist=true</code>. Webpack builds then fail with <code>Can't resolve 'esbuild-loader'</code>, <code>styled-components</code>, or <code>@elliemae/pui-theme</code> because <strong>pui-cli webpack aliases</strong> resolve packages from the <strong>repo root</strong> <code>node_modules/</code>.</p>
|
|
47
|
+
<p>PUI org policy keeps <strong><code>shamefullyHoist: true</code></strong> (same as pnpm 8 <code>shamefully-hoist=true</code>) for compatibility with <code>@elliemae/app-react-dependencies</code> and pui-cli tooling. <strong>Do not remove hoisting</strong> during the cli 9 migration.</p>
|
|
48
|
+
<h4 class="anchor anchorTargetStickyNavbar_jFbF" id="settings-to-move">Settings to move<a href="#settings-to-move" class="hash-link" aria-label="Direct link to Settings to move" title="Direct link to Settings to move" translate="no"></a></h4>
|
|
49
|
+
<table><thead><tr><th>pnpm 8–10 (<code>.npmrc</code> or <code>package.json#pnpm</code>)</th><th>pnpm 11 (<code>pnpm-workspace.yaml</code>)</th></tr></thead><tbody><tr><td><code>shamefully-hoist=true</code></td><td><code>shamefullyHoist: true</code></td></tr><tr><td><code>public-hoist-pattern[]=…</code></td><td><code>publicHoistPattern: [ "…" ]</code></td></tr><tr><td><code>strict-peer-dependencies=false</code></td><td><code>strictPeerDependencies: false</code></td></tr><tr><td><code>auto-install-peers=false</code></td><td><code>autoInstallPeers: false</code></td></tr><tr><td><code>git-checks=false</code></td><td><code>gitChecks: false</code></td></tr><tr><td><code>enable-pre-post-scripts=true</code></td><td><code>enablePrePostScripts: true</code></td></tr><tr><td><code>package.json</code> → <code>"pnpm": { "overrides": … }</code></td><td>top-level <code>overrides:</code></td></tr><tr><td><code>onlyBuiltDependencies</code> / <code>neverBuiltDependencies</code></td><td><code>allowBuilds:</code> (<code>true</code> / <code>false</code> per package)</td></tr></tbody></table>
|
|
50
|
+
<p>Leave <strong>only</strong> auth/registry lines in <code>.npmrc</code> (for example <code>legacy-peer-deps=true</code> if your registry workflow needs it).</p>
|
|
51
|
+
<h4 class="anchor anchorTargetStickyNavbar_jFbF" id="single-package-app-or-library">Single-package app or library<a href="#single-package-app-or-library" class="hash-link" aria-label="Direct link to Single-package app or library" title="Direct link to Single-package app or library" translate="no"></a></h4>
|
|
52
|
+
<p>Create or update <code>pnpm-workspace.yaml</code> at the repo root:</p>
|
|
53
|
+
<div class="language-yaml codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-yaml codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">packages</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'.'</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">shamefullyHoist</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">strictPeerDependencies</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">false</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">autoInstallPeers</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">false</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">allowBuilds</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">'@swc/core'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">esbuild</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">nx</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic"># …approve other packages that run install scripts (see pnpm approve-builds)</span><br></div></code></pre></div></div>
|
|
54
|
+
<p>Reference: <code>pui-react-boilerplate/pnpm-workspace.yaml</code>, <code>pui-lib-boilerplate/pnpm-workspace.yaml</code>.</p>
|
|
55
|
+
<h4 class="anchor anchorTargetStickyNavbar_jFbF" id="monorepo-libs-apps">Monorepo (<code>libs/*</code>, <code>apps/*</code>)<a href="#monorepo-libs-apps" class="hash-link" aria-label="Direct link to monorepo-libs-apps" title="Direct link to monorepo-libs-apps" translate="no"></a></h4>
|
|
56
|
+
<div class="language-yaml codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-yaml codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">packages</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"libs/*"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"apps/*"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">shamefullyHoist</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Optional explicit patterns (shamefullyHoist already hoists all deps to root)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">publicHoistPattern</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"esbuild-loader"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"@elliemae/*"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"styled-components"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"history"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"lodash"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">strictPeerDependencies</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">false</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">autoInstallPeers</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">false</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">gitChecks</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">false</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">enablePrePostScripts</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">overrides</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">esbuild-loader</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"4.4.3"</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic"># if webpack hits esbuild-loader@3.x useSourceMap crash</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">allowBuilds</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">'@swc/core'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">esbuild</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">nx</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic"># …set true for each package that must run postinstall scripts</span><br></div></code></pre></div></div>
|
|
57
|
+
<p>Reference: <code>pui-microfe/pnpm-workspace.yaml</code>, <code>pui-mono-repo-boilerplate/pnpm-workspace.yaml</code>.</p>
|
|
58
|
+
<p>Move any <code>package.json</code> <code>"pnpm": { "overrides": … }</code> block into this file and delete the <code>pnpm</code> key from <code>package.json</code>.</p>
|
|
59
|
+
<h4 class="anchor anchorTargetStickyNavbar_jFbF" id="reinstall-and-verify">Reinstall and verify<a href="#reinstall-and-verify" class="hash-link" aria-label="Direct link to Reinstall and verify" title="Direct link to Reinstall and verify" translate="no"></a></h4>
|
|
60
|
+
<div class="language-bash codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-bash codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token plain">rm -rf node_modules libs/*/node_modules # monorepos; apps/libs only if present</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">SKIP_POST_INSTALL_BUILD=1 pnpm install --no-frozen-lockfile</span><br></div></code></pre></div></div>
|
|
61
|
+
<p>Check hoisting took effect:</p>
|
|
62
|
+
<div class="language-bash codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-bash codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token plain"># Should list patterns (shamefullyHoist => ["*"]) — not []</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">grep publicHoistPattern node_modules/.modules.yaml</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"># Webpack / pui-cli alias targets should exist at repo root</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">ls node_modules/esbuild-loader node_modules/styled-components 2>/dev/null</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm run build</span><br></div></code></pre></div></div>
|
|
63
|
+
<h4 class="anchor anchorTargetStickyNavbar_jFbF" id="common-failures">Common failures<a href="#common-failures" class="hash-link" aria-label="Direct link to Common failures" title="Direct link to Common failures" translate="no"></a></h4>
|
|
64
|
+
<table><thead><tr><th>Symptom</th><th>Fix</th></tr></thead><tbody><tr><td><code>Can't resolve 'esbuild-loader'</code> during <code>pui-cli pack</code> / webpack</td><td>Add <code>shamefullyHoist: true</code> to <code>pnpm-workspace.yaml</code>; clean reinstall</td></tr><tr><td><code>Can't resolve '@elliemae/pui-theme'</code> or <code>styled-components</code></td><td>Same — hoisting must be in workspace yaml, not <code>.npmrc</code></td></tr><tr><td><code>husky: command not found</code> on <code>pnpm prepare</code></td><td><code>shamefullyHoist</code> + optional <code>publicHoistPattern: [husky]</code>; or keep <code>husky</code> as a direct root <code>devDependency</code></td></tr><tr><td><code>ERR_PNPM_IGNORED_BUILDS</code></td><td>Replace placeholder <code>allowBuilds</code> values with <code>true</code> or run <code>pnpm approve-builds</code></td></tr><tr><td><code>publicHoistPattern: []</code> in <code>.modules.yaml</code></td><td>Hoist settings still in <code>.npmrc</code> only — migrate to <code>pnpm-workspace.yaml</code></td></tr></tbody></table>
|
|
65
|
+
<p><strong>Long-term platform fix:</strong> pui-cli should resolve webpack loaders from its own install path and make <code>getAlias()</code> fall back beyond root <code>node_modules</code>. Until then, hoisting in <code>pnpm-workspace.yaml</code> is required for pnpm 11 consumers.</p>
|
|
40
66
|
<h3 class="anchor anchorTargetStickyNavbar_jFbF" id="2-upgrade-pui-cli">2. Upgrade pui-cli<a href="#2-upgrade-pui-cli" class="hash-link" aria-label="Direct link to 2. Upgrade pui-cli" title="Direct link to 2. Upgrade pui-cli" translate="no"></a></h3>
|
|
41
67
|
<div class="language-bash codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-bash codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token plain">pnpm add -D @elliemae/pui-cli@9</span><br></div></code></pre></div></div>
|
|
42
68
|
<h3 class="anchor anchorTargetStickyNavbar_jFbF" id="3-add-flat-eslint-config">3. Add flat ESLint config<a href="#3-add-flat-eslint-config" class="hash-link" aria-label="Direct link to 3. Add flat ESLint config" title="Direct link to 3. Add flat ESLint config" translate="no"></a></h3>
|
|
@@ -91,6 +117,14 @@ For ESLint rule-level detail, see <a class="" href="/cli/eslint-rules-migration"
|
|
|
91
117
|
</ol>
|
|
92
118
|
<p><strong>Environment variable changes:</strong> <code>HUSKY_SKIP_HOOKS</code> / <code>HUSKY_SKIP_INSTALL</code> → <code>HUSKY=0</code>; <code>HUSKY_GIT_PARAMS</code> → use <code>$1</code> in hook scripts.</p>
|
|
93
119
|
<hr>
|
|
120
|
+
<h2 class="anchor anchorTargetStickyNavbar_jFbF" id="jest-pui-cli-test">Jest (<code>pui-cli test</code>)<a href="#jest-pui-cli-test" class="hash-link" aria-label="Direct link to jest-pui-cli-test" title="Direct link to jest-pui-cli-test" translate="no"></a></h2>
|
|
121
|
+
<p>pui-cli's default <code>jestConfig</code> runs <code>lib/testing/setup-textencoder.cjs</code> before other <code>setupFiles</code>. It polyfills <code>TextEncoder</code> / <code>TextDecoder</code> on <code>globalThis</code> from <code>node:util</code> so <strong>jsdom</strong> tests can import packages (for example <code>@elliemae/pui-diagnostics</code> HTTP transport) that expect those APIs at module load time.</p>
|
|
122
|
+
<p><strong>Repos do not need a local <code>jest-textencoder-setup.cjs</code>.</strong> Delete it if you added one during migration.</p>
|
|
123
|
+
<p>Typical <code>jest.config.cjs</code> when testing against the real diagnostics package (not the pui-cli mock):</p>
|
|
124
|
+
<div class="language-javascript codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-javascript codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> jestConfig </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">require</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'@elliemae/pui-cli'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">delete</span><span class="token plain"> jestConfig</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">moduleNameMapper</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">'@elliemae/pui-diagnostics'</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">module</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">exports</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> jestConfig</span><span class="token punctuation" style="color:#393A34">;</span><br></div></code></pre></div></div>
|
|
125
|
+
<p>Do <strong>not</strong> replace <code>setupFiles</code> unless you must prepend repo-specific setup; spread the defaults instead:</p>
|
|
126
|
+
<div class="language-javascript codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-javascript codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token plain">jestConfig</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">setupFiles</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> path</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">resolve</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">__dirname</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'./my-extra-setup.cjs'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token spread operator" style="color:#393A34">...</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">jestConfig</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">setupFiles</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><br></div></code></pre></div></div>
|
|
127
|
+
<hr>
|
|
94
128
|
<h2 class="anchor anchorTargetStickyNavbar_jFbF" id="vitest-4">Vitest 4<a href="#vitest-4" class="hash-link" aria-label="Direct link to Vitest 4" title="Direct link to Vitest 4" translate="no"></a></h2>
|
|
95
129
|
<p>Skip this section if the repo uses Jest (<code>pui-cli test</code>) only. <strong>pui-cli 9 still builds apps and libraries with Webpack</strong>; Vite is used by Vitest (and optional <code>pui-cli buildCDN</code>), not for production bundling.</p>
|
|
96
130
|
<p>After bumping <code>@elliemae/pui-cli@9</code>, align local test dependencies with the versions pui-cli ships:</p>
|
|
@@ -127,16 +161,69 @@ For ESLint rule-level detail, see <a class="" href="/cli/eslint-rules-migration"
|
|
|
127
161
|
<div class="language-bash codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-bash codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec pui-cli skills install migrate-to-pui-cli-9 --target all</span><br></div></code></pre></div></div>
|
|
128
162
|
<p>Then ask the agent to migrate configuration files for pui-cli 9.</p>
|
|
129
163
|
<hr>
|
|
164
|
+
<h2 class="anchor anchorTargetStickyNavbar_jFbF" id="lerna-9-and-nx-22-monorepos-only">Lerna 9 and Nx 22 (monorepos only)<a href="#lerna-9-and-nx-22-monorepos-only" class="hash-link" aria-label="Direct link to Lerna 9 and Nx 22 (monorepos only)" title="Direct link to Lerna 9 and Nx 22 (monorepos only)" translate="no"></a></h2>
|
|
165
|
+
<p>Skip this section for single-package apps and libraries. PUI monorepos (for example <code>pui-microfe</code>, <code>pui-websocket</code>, <code>pui-mono-repo-boilerplate</code>) use <strong>Nx</strong> for task orchestration and <strong>Lerna</strong> (via <code>pui-cli version</code>) for independent package versioning.</p>
|
|
166
|
+
<p>pui-cli 9 ships <strong>lerna 9</strong> and <strong>nx 22</strong> (<code>nx</code> + <code>@nx/workspace</code>). After bumping <code>@elliemae/pui-cli@9</code>, reinstall so the workspace picks up the new CLIs:</p>
|
|
167
|
+
<div class="language-bash codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-bash codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token plain">pnpm install</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec nx --version # expect 22.x</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec lerna --version # expect 9.x</span><br></div></code></pre></div></div>
|
|
168
|
+
<h3 class="anchor anchorTargetStickyNavbar_jFbF" id="1-remove-legacy-nx-package-pins">1. Remove legacy Nx package pins<a href="#1-remove-legacy-nx-package-pins" class="hash-link" aria-label="Direct link to 1. Remove legacy Nx package pins" title="Direct link to 1. Remove legacy Nx package pins" translate="no"></a></h3>
|
|
169
|
+
<p>Most monorepos inherit Nx and Lerna from pui-cli and do <strong>not</strong> pin them locally. If your root <code>package.json</code> still lists <code>@nrwl/cli</code>, <code>@nrwl/tao</code>, or <code>@nrwl/workspace</code>, remove those entries and any direct <code>lerna</code> / <code>nx</code> pins — pui-cli 9 provides them.</p>
|
|
170
|
+
<div class="language-bash codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-bash codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token plain">pnpm remove @nrwl/cli @nrwl/tao @nrwl/workspace lerna nx # only if explicitly pinned</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm install</span><br></div></code></pre></div></div>
|
|
171
|
+
<h3 class="anchor anchorTargetStickyNavbar_jFbF" id="2-migrate-nxjson">2. Migrate <code>nx.json</code><a href="#2-migrate-nxjson" class="hash-link" aria-label="Direct link to 2-migrate-nxjson" title="Direct link to 2-migrate-nxjson" translate="no"></a></h3>
|
|
172
|
+
<p>Nx 15 configs use deprecated <code>@nrwl/workspace</code> presets, <code>tasksRunnerOptions</code>, and <code>targetDependencies</code>. Nx 22 uses <code>nx/presets/npm.json</code> (or <code>@nx/workspace/presets/npm.json</code>) and <code>targetDefaults.dependsOn</code>.</p>
|
|
173
|
+
<p><strong>Before (pui-cli 8 / Nx 15):</strong></p>
|
|
174
|
+
<div class="language-json codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-json codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"extends"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"@nrwl/workspace/presets/npm.json"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"tasksRunnerOptions"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"default"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"runner"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"@nrwl/workspace/tasks-runners/default"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"options"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"cacheableOperations"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"build"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"lint"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"targetDependencies"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"build"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"target"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"build"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"projects"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"dependencies"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"test"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"target"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"build"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"projects"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"dependencies"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
|
|
175
|
+
<p><strong>After (pui-cli 9 / Nx 22):</strong></p>
|
|
176
|
+
<div class="language-json codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-json codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"$schema"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"./node_modules/nx/schemas/nx-schema.json"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"extends"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"nx/presets/npm.json"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"targetDefaults"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"build"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"dependsOn"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"^build"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"cache"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"test"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"dependsOn"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"^build"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"cache"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"dts"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"dependsOn"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"^dts"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"cache"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"lint"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"dependsOn"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"^dts"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"cache"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"dev"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"dependsOn"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"^dev"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"cache"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"storybook:start"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"dependsOn"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"^build"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"cache"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"storybook:build"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"dependsOn"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"^build"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"cache"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"prepare"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"dependsOn"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"^prepare"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"cache"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"package"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"dependsOn"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"^package"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"cache"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"postinstall"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"cache"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"compile:scss"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"cache"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
|
|
177
|
+
<p>Map each legacy <code>targetDependencies</code> entry to <code>"dependsOn": ["^<target>"]</code> on the same target name. Targets that were only listed under <code>cacheableOperations</code> get <code>"cache": true</code> in <code>targetDefaults</code>.</p>
|
|
178
|
+
<p><strong>Automated migration (optional):</strong> from the monorepo root after installing pui-cli 9:</p>
|
|
179
|
+
<div class="language-bash codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-bash codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec nx migrate latest</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec nx migrate --run-migrations</span><br></div></code></pre></div></div>
|
|
180
|
+
<p>Review the generated migrations; they may simplify <code>nx.json</code> further. Commit the result with your pui-cli 9 bump.</p>
|
|
181
|
+
<h3 class="anchor anchorTargetStickyNavbar_jFbF" id="3-lerna-9-notes">3. Lerna 9 notes<a href="#3-lerna-9-notes" class="hash-link" aria-label="Direct link to 3. Lerna 9 notes" title="Direct link to 3. Lerna 9 notes" translate="no"></a></h3>
|
|
182
|
+
<ul>
|
|
183
|
+
<li class=""><strong>Removed commands:</strong> <code>lerna bootstrap</code>, <code>lerna add</code>, and <code>lerna link</code> are gone. Use pnpm workspaces (<code>pnpm add <pkg> --filter <lib></code>) for linking and dependency management.</li>
|
|
184
|
+
<li class=""><strong><code>lerna.json</code>:</strong> existing PUI repos can keep <code>npmClient: "pnpm"</code> and <code>useWorkspaces: true</code>. No change required unless you relied on removed commands.</li>
|
|
185
|
+
<li class=""><strong><code>pui-cli version</code>:</strong> unchanged — still wraps <code>lerna version --conventional-commits --exact --create-release github --force-publish --yes</code>.</li>
|
|
186
|
+
<li class=""><strong>Dry-run override:</strong> <code>semantic-version:dryrun:override</code> scripts that call <code>lerna version</code> directly continue to work with lerna 9.</li>
|
|
187
|
+
</ul>
|
|
188
|
+
<h3 class="anchor anchorTargetStickyNavbar_jFbF" id="4-verify-monorepo-workflows">4. Verify monorepo workflows<a href="#4-verify-monorepo-workflows" class="hash-link" aria-label="Direct link to 4. Verify monorepo workflows" title="Direct link to 4. Verify monorepo workflows" translate="no"></a></h3>
|
|
189
|
+
<div class="language-bash codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-bash codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec nx run-many --target=build --all --parallel</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec nx affected --target=test --uncommitted</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec pui-cli lint</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec pui-cli version --help # confirms pui-cli can invoke lerna 9</span><br></div></code></pre></div></div>
|
|
190
|
+
<hr>
|
|
191
|
+
<h2 class="anchor anchorTargetStickyNavbar_jFbF" id="storybook-10-pui-cli-9">Storybook 10 (pui-cli 9)<a href="#storybook-10-pui-cli-9" class="hash-link" aria-label="Direct link to Storybook 10 (pui-cli 9)" title="Direct link to Storybook 10 (pui-cli 9)" translate="no"></a></h2>
|
|
192
|
+
<p>Applies to repos that run <code>pui-cli storybook</code>. Upgrade <strong>pui-cli 9</strong> and <strong>pui-app-sdk</strong> together — shared Storybook config lives in pui-app-sdk.</p>
|
|
193
|
+
<p><strong>Agent skill:</strong> install the bundled playbook for CJS → ESM migration:</p>
|
|
194
|
+
<div class="language-bash codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-bash codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec pui-cli skills install migrate-storybook-out-of-cjs --target all</span><br></div></code></pre></div></div>
|
|
195
|
+
<h3 class="anchor anchorTargetStickyNavbar_jFbF" id="what-changed">What changed<a href="#what-changed" class="hash-link" aria-label="Direct link to What changed" title="Direct link to What changed" translate="no"></a></h3>
|
|
196
|
+
<table><thead><tr><th>Topic</th><th>Before (Storybook 6)</th><th>After (Storybook 10)</th></tr></thead><tbody><tr><td>CLI</td><td><code>start-storybook</code> / <code>build-storybook</code></td><td><code>storybook dev</code> / <code>storybook build</code></td></tr><tr><td>Config format</td><td><code>.storybook/main.js</code> (CJS)</td><td><code>.storybook/main.mjs</code> (ESM, required)</td></tr><tr><td>Shared config import</td><td><code>@elliemae/pui-app-sdk/storybook/cjs/main</code> (removed)</td><td><code>@elliemae/pui-app-sdk/storybook/main</code></td></tr><tr><td>Framework</td><td><code>@storybook/react</code> + <code>core.builder: webpack5</code></td><td><code>@storybook/react-webpack5</code></td></tr><tr><td>Default port</td><td>11000 (pui-cli)</td><td>11000 (unchanged)</td></tr><tr><td>Story globs</td><td><code>../lib</code> only (webpack)</td><td><code>../lib</code> and <code>../app</code></td></tr><tr><td>API middleware</td><td><code>.storybook/middleware.js</code></td><td>Built into pui-cli <code>webpackFinal</code> dev server</td></tr><tr><td>Removed addons</td><td>—</td><td><code>addon-essentials</code>, <code>addon-interactions</code>, <code>addon-links</code> (moved into Storybook core in v9+), <code>addon-events</code>, <code>addon-storysource</code>, <code>storybook-addon-turbo-build</code>, <code>storybook-react-router</code></td></tr><tr><td>JS compiler</td><td>SWC (default in some setups)</td><td><code>@storybook/addon-webpack5-compiler-babel</code> (bundled in pui-cli; resolves via pui-app-sdk)</td></tr><tr><td>Lib-only packages</td><td>N/A</td><td>Story globs skip <code>../app/**</code> when no <code>app/</code> directory exists</td></tr></tbody></table>
|
|
197
|
+
<h3 class="anchor anchorTargetStickyNavbar_jFbF" id="consumer-migration">Consumer migration<a href="#consumer-migration" class="hash-link" aria-label="Direct link to Consumer migration" title="Direct link to Consumer migration" translate="no"></a></h3>
|
|
198
|
+
<ol>
|
|
199
|
+
<li class="">Bump <code>@elliemae/pui-cli@9</code> and <code>@elliemae/pui-app-sdk@*</code> (same release train).</li>
|
|
200
|
+
<li class="">Rename <code>.storybook/main.js</code> → <code>.storybook/main.mjs</code>:</li>
|
|
201
|
+
</ol>
|
|
202
|
+
<div class="language-javascript codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-javascript codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#393A34">{</span><span class="token imports"> getStorybookConfig </span><span class="token imports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'@elliemae/pui-app-sdk/storybook/main'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">default</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">getStorybookConfig</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></div></code></pre></div></div>
|
|
203
|
+
<ol start="3">
|
|
204
|
+
<li class="">Convert other <code>.storybook/*.js</code> wrappers to <code>.mjs</code> where they use <code>import</code>/<code>export</code> (e.g. <code>preview.mjs</code>, <code>manager.js</code> can stay if ESM).</li>
|
|
205
|
+
<li class="">Delete <code>.storybook/middleware.js</code> — mock API routes are registered by pui-cli during <code>storybook dev</code>. Legacy middleware is still exported as <code>@elliemae/pui-app-sdk/storybook/middleware</code> (deprecated) for repos not yet on pui-cli 9 Storybook.</li>
|
|
206
|
+
<li class="">Update story imports to CSF3 / <code>@storybook/react-webpack5</code> as needed (CSF2 may still work for simple stories).</li>
|
|
207
|
+
<li class="">Remove Storybook 6 webpack alias workarounds (MDX pinning, react-select hacks) unless a specific component still fails after upgrade.</li>
|
|
208
|
+
</ol>
|
|
209
|
+
<h3 class="anchor anchorTargetStickyNavbar_jFbF" id="verify">Verify<a href="#verify" class="hash-link" aria-label="Direct link to Verify" title="Direct link to Verify" translate="no"></a></h3>
|
|
210
|
+
<div class="language-bash codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-bash codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec pui-cli storybook # dev on port 11000</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec pui-cli storybook -b # static build to demo/</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec pui-cli storybook -b --docs # docs build</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec pui-cli lint # stories + .storybook/</span><br></div></code></pre></div></div>
|
|
211
|
+
<p>Pilot reference: <code>pui-mono-repo-boilerplate/libs/foo</code>, <code>pui-react-boilerplate</code>.</p>
|
|
212
|
+
<hr>
|
|
130
213
|
<h2 class="anchor anchorTargetStickyNavbar_jFbF" id="ci-checklist">CI checklist<a href="#ci-checklist" class="hash-link" aria-label="Direct link to CI checklist" title="Direct link to CI checklist" translate="no"></a></h2>
|
|
131
214
|
<ul class="contains-task-list containsTaskList_nAax">
|
|
132
215
|
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Node 24 in pipeline</li>
|
|
133
216
|
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->pnpm 11 in pipeline</li>
|
|
217
|
+
<li class="task-list-item"><input type="checkbox" disabled=""> <code>shamefullyHoist</code> (and related settings) in <code>pnpm-workspace.yaml</code>, not <code>.npmrc</code></li>
|
|
218
|
+
<li class="task-list-item"><input type="checkbox" disabled=""> <code>pnpm run build</code> after clean install (webpack resolves hoisted deps)</li>
|
|
134
219
|
<li class="task-list-item"><input type="checkbox" disabled=""> <code>pui-cli lint</code> (0 errors)</li>
|
|
135
220
|
<li class="task-list-item"><input type="checkbox" disabled=""> <code>pui-cli tscheck --files</code></li>
|
|
136
221
|
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Unit tests</li>
|
|
137
222
|
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Production build</li>
|
|
138
223
|
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->lint-staged / husky hooks pass locally</li>
|
|
139
224
|
<li class="task-list-item"><input type="checkbox" disabled=""> <code>semantic-release --dry-run</code> (libraries that publish to npm)</li>
|
|
225
|
+
<li class="task-list-item"><input type="checkbox" disabled=""> <code>nx run-many --target=build --all</code> (monorepos)</li>
|
|
226
|
+
<li class="task-list-item"><input type="checkbox" disabled=""> <code>pui-cli version --help</code> or dry-run versioning (monorepos that publish packages)</li>
|
|
140
227
|
</ul>
|
|
141
228
|
<hr>
|
|
142
229
|
<h2 class="anchor anchorTargetStickyNavbar_jFbF" id="getting-help">Getting help<a href="#getting-help" class="hash-link" aria-label="Direct link to Getting help" title="Direct link to Getting help" translate="no"></a></h2>
|
|
@@ -145,6 +232,6 @@ For ESLint rule-level detail, see <a class="" href="/cli/eslint-rules-migration"
|
|
|
145
232
|
<li class=""><strong>Stylelint changes:</strong> <a class="" href="/cli/stylelint-migration">stylelint-migration.md</a></li>
|
|
146
233
|
<li class=""><strong>Commands:</strong> <a class="" href="/cli/usage-guide">usage guide</a></li>
|
|
147
234
|
<li class=""><strong>Platform team:</strong> <code>#pui-platform</code> or your team's platform-ui channel</li>
|
|
148
|
-
</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_sn50"><a href="https://git.elliemae.io/platform-ui/pui-cli.git/docs/pui-cli-9-migration.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_sbI6" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_n07i"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/cli/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">PUI CLI Documentation</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/cli/ssl-certificate-setup"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Trust SSL Certificate Guide</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_gGRX thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#at-a-glance" class="table-of-contents__link toc-highlight">At a glance</a></li><li><a href="#recommended-rollout" class="table-of-contents__link toc-highlight">Recommended rollout</a></li><li><a href="#step-by-step" class="table-of-contents__link toc-highlight">Step-by-step</a><ul><li><a href="#1-upgrade-toolchain" class="table-of-contents__link toc-highlight">1. Upgrade toolchain</a></li><li><a href="#2-upgrade-pui-cli" class="table-of-contents__link toc-highlight">2. Upgrade pui-cli</a></li><li><a href="#3-add-flat-eslint-config" class="table-of-contents__link toc-highlight">3. Add flat ESLint config</a></li><li><a href="#4-update-stylelint-config" class="table-of-contents__link toc-highlight">4. Update Stylelint config</a></li><li><a href="#5-fix-lint" class="table-of-contents__link toc-highlight">5. Fix lint</a></li><li><a href="#6-install-the-migration-skill-optional" class="table-of-contents__link toc-highlight">6. Install the migration skill (optional)</a></li></ul></li><li><a href="#temporary-overrides" class="table-of-contents__link toc-highlight">Temporary overrides</a></li><li><a href="#strict-config-after-cleanup" class="table-of-contents__link toc-highlight">Strict config (after cleanup)</a></li><li><a href="#husky-9" class="table-of-contents__link toc-highlight">Husky 9</a></li><li><a href="#vitest-4" class="table-of-contents__link toc-highlight">Vitest 4</a></li><li><a href="#semantic-release-25" class="table-of-contents__link toc-highlight">semantic-release 25</a><ul><li><a href="#1-upgrade-semantic-release-if-pinned-locally" class="table-of-contents__link toc-highlight">1. Upgrade semantic-release (if pinned locally)</a></li><li><a href="#2-migrate-release-config-to-esm" class="table-of-contents__link toc-highlight">2. Migrate release config to ESM</a></li><li><a href="#3-custom-plugins-or-overrides" class="table-of-contents__link toc-highlight">3. Custom plugins or overrides</a></li><li><a href="#4-verify-locally" class="table-of-contents__link toc-highlight">4. Verify locally</a></li><li><a href="#agent-assisted-migration" class="table-of-contents__link toc-highlight">Agent-assisted migration</a></li></ul></li><li><a href="#ci-checklist" class="table-of-contents__link toc-highlight">CI checklist</a></li><li><a href="#getting-help" class="table-of-contents__link toc-highlight">Getting help</a></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/cli/">Getting Started</a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://icemortgagetechnology.slack.com/archives/C01M49EGP6Z" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink__EWc"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://git.elliemae.io/platform-ui/pui-cli.git" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink__EWc"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2026 ICE.</div></div></div></footer></div>
|
|
235
|
+
</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_sn50"><a href="https://git.elliemae.io/platform-ui/pui-cli.git/docs/pui-cli-9-migration.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_sbI6" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_n07i"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/cli/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">PUI CLI Documentation</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/cli/ssl-certificate-setup"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Trust SSL Certificate Guide</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_gGRX thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#at-a-glance" class="table-of-contents__link toc-highlight">At a glance</a></li><li><a href="#recommended-rollout" class="table-of-contents__link toc-highlight">Recommended rollout</a></li><li><a href="#step-by-step" class="table-of-contents__link toc-highlight">Step-by-step</a><ul><li><a href="#1-upgrade-toolchain" class="table-of-contents__link toc-highlight">1. Upgrade toolchain</a></li><li><a href="#1b-migrate-pnpm-hoisting-to-pnpm-workspaceyaml-pnpm-11" class="table-of-contents__link toc-highlight">1b. Migrate pnpm hoisting to <code>pnpm-workspace.yaml</code> (pnpm 11)</a></li><li><a href="#2-upgrade-pui-cli" class="table-of-contents__link toc-highlight">2. Upgrade pui-cli</a></li><li><a href="#3-add-flat-eslint-config" class="table-of-contents__link toc-highlight">3. Add flat ESLint config</a></li><li><a href="#4-update-stylelint-config" class="table-of-contents__link toc-highlight">4. Update Stylelint config</a></li><li><a href="#5-fix-lint" class="table-of-contents__link toc-highlight">5. Fix lint</a></li><li><a href="#6-install-the-migration-skill-optional" class="table-of-contents__link toc-highlight">6. Install the migration skill (optional)</a></li></ul></li><li><a href="#temporary-overrides" class="table-of-contents__link toc-highlight">Temporary overrides</a></li><li><a href="#strict-config-after-cleanup" class="table-of-contents__link toc-highlight">Strict config (after cleanup)</a></li><li><a href="#husky-9" class="table-of-contents__link toc-highlight">Husky 9</a></li><li><a href="#jest-pui-cli-test" class="table-of-contents__link toc-highlight">Jest (<code>pui-cli test</code>)</a></li><li><a href="#vitest-4" class="table-of-contents__link toc-highlight">Vitest 4</a></li><li><a href="#semantic-release-25" class="table-of-contents__link toc-highlight">semantic-release 25</a><ul><li><a href="#1-upgrade-semantic-release-if-pinned-locally" class="table-of-contents__link toc-highlight">1. Upgrade semantic-release (if pinned locally)</a></li><li><a href="#2-migrate-release-config-to-esm" class="table-of-contents__link toc-highlight">2. Migrate release config to ESM</a></li><li><a href="#3-custom-plugins-or-overrides" class="table-of-contents__link toc-highlight">3. Custom plugins or overrides</a></li><li><a href="#4-verify-locally" class="table-of-contents__link toc-highlight">4. Verify locally</a></li><li><a href="#agent-assisted-migration" class="table-of-contents__link toc-highlight">Agent-assisted migration</a></li></ul></li><li><a href="#lerna-9-and-nx-22-monorepos-only" class="table-of-contents__link toc-highlight">Lerna 9 and Nx 22 (monorepos only)</a><ul><li><a href="#1-remove-legacy-nx-package-pins" class="table-of-contents__link toc-highlight">1. Remove legacy Nx package pins</a></li><li><a href="#2-migrate-nxjson" class="table-of-contents__link toc-highlight">2. Migrate <code>nx.json</code></a></li><li><a href="#3-lerna-9-notes" class="table-of-contents__link toc-highlight">3. Lerna 9 notes</a></li><li><a href="#4-verify-monorepo-workflows" class="table-of-contents__link toc-highlight">4. Verify monorepo workflows</a></li></ul></li><li><a href="#storybook-10-pui-cli-9" class="table-of-contents__link toc-highlight">Storybook 10 (pui-cli 9)</a><ul><li><a href="#what-changed" class="table-of-contents__link toc-highlight">What changed</a></li><li><a href="#consumer-migration" class="table-of-contents__link toc-highlight">Consumer migration</a></li><li><a href="#verify" class="table-of-contents__link toc-highlight">Verify</a></li></ul></li><li><a href="#ci-checklist" class="table-of-contents__link toc-highlight">CI checklist</a></li><li><a href="#getting-help" class="table-of-contents__link toc-highlight">Getting help</a></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/cli/">Getting Started</a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://icemortgagetechnology.slack.com/archives/C01M49EGP6Z" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink__EWc"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://git.elliemae.io/platform-ui/pui-cli.git" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink__EWc"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2026 ICE.</div></div></div></footer></div>
|
|
149
236
|
</body>
|
|
150
237
|
</html>
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<meta name="generator" content="Docusaurus v3.10.1">
|
|
6
6
|
<title data-rh="true">Trust SSL Certificate Guide | Cli</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://pui.ice.com/cli/ssl-certificate-setup"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Trust SSL Certificate Guide | Cli"><meta data-rh="true" name="description" content="This guide explains how to trust the self-signed CA certificate on different operating systems and browsers so your HTTPS connection works without warnings."><meta data-rh="true" property="og:description" content="This guide explains how to trust the self-signed CA certificate on different operating systems and browsers so your HTTPS connection works without warnings."><link data-rh="true" rel="icon" href="/cli/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://pui.ice.com/cli/ssl-certificate-setup"><link data-rh="true" rel="alternate" href="https://pui.ice.com/cli/ssl-certificate-setup" hreflang="en"><link data-rh="true" rel="alternate" href="https://pui.ice.com/cli/ssl-certificate-setup" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Trust SSL Certificate Guide","item":"https://pui.ice.com/cli/ssl-certificate-setup"}]}</script><link rel="stylesheet" href="/cli/assets/css/styles.74603f39.css">
|
|
7
|
-
<script src="/cli/assets/js/runtime~main.
|
|
8
|
-
<script src="/cli/assets/js/main.
|
|
7
|
+
<script src="/cli/assets/js/runtime~main.4f7cd700.js" defer="defer"></script>
|
|
8
|
+
<script src="/cli/assets/js/main.d5acb4ca.js" defer="defer"></script>
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<svg style="display: none;"><defs>
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<meta name="generator" content="Docusaurus v3.10.1">
|
|
6
6
|
<title data-rh="true">Stylelint migration guide (pui-cli 8 → 9 / Stylelint 17) | Cli</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://pui.ice.com/cli/stylelint-migration"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Stylelint migration guide (pui-cli 8 → 9 / Stylelint 17) | Cli"><meta data-rh="true" name="description" content="This document covers Stylelint changes shipped with pui-cli 9 (Stylelint 17.x)."><meta data-rh="true" property="og:description" content="This document covers Stylelint changes shipped with pui-cli 9 (Stylelint 17.x)."><link data-rh="true" rel="icon" href="/cli/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://pui.ice.com/cli/stylelint-migration"><link data-rh="true" rel="alternate" href="https://pui.ice.com/cli/stylelint-migration" hreflang="en"><link data-rh="true" rel="alternate" href="https://pui.ice.com/cli/stylelint-migration" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Stylelint migration guide (pui-cli 8 → 9 / Stylelint 17)","item":"https://pui.ice.com/cli/stylelint-migration"}]}</script><link rel="stylesheet" href="/cli/assets/css/styles.74603f39.css">
|
|
7
|
-
<script src="/cli/assets/js/runtime~main.
|
|
8
|
-
<script src="/cli/assets/js/main.
|
|
7
|
+
<script src="/cli/assets/js/runtime~main.4f7cd700.js" defer="defer"></script>
|
|
8
|
+
<script src="/cli/assets/js/main.d5acb4ca.js" defer="defer"></script>
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<svg style="display: none;"><defs>
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<meta name="generator" content="Docusaurus v3.10.1">
|
|
6
6
|
<title data-rh="true">Usage Guide | Cli</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://pui.ice.com/cli/usage-guide"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Usage Guide | Cli"><meta data-rh="true" name="description" content="This guide provides detailed documentation for all available commands in @elliemae/pui-cli."><meta data-rh="true" property="og:description" content="This guide provides detailed documentation for all available commands in @elliemae/pui-cli."><link data-rh="true" rel="icon" href="/cli/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://pui.ice.com/cli/usage-guide"><link data-rh="true" rel="alternate" href="https://pui.ice.com/cli/usage-guide" hreflang="en"><link data-rh="true" rel="alternate" href="https://pui.ice.com/cli/usage-guide" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Usage Guide","item":"https://pui.ice.com/cli/usage-guide"}]}</script><link rel="stylesheet" href="/cli/assets/css/styles.74603f39.css">
|
|
7
|
-
<script src="/cli/assets/js/runtime~main.
|
|
8
|
-
<script src="/cli/assets/js/main.
|
|
7
|
+
<script src="/cli/assets/js/runtime~main.4f7cd700.js" defer="defer"></script>
|
|
8
|
+
<script src="/cli/assets/js/main.d5acb4ca.js" defer="defer"></script>
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<svg style="display: none;"><defs>
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
<ul>
|
|
126
126
|
<li class=""><code>-b, --build</code> - Build static storybook</li>
|
|
127
127
|
<li class=""><code>--docs</code> - Run in documentation mode</li>
|
|
128
|
-
<li class=""><code>--port <number></code> - Specify port (default:
|
|
128
|
+
<li class=""><code>--port <number></code> - Specify port (default: 11000)</li>
|
|
129
129
|
</ul>
|
|
130
130
|
<p><strong>Examples:</strong></p>
|
|
131
131
|
<div class="language-bash codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-bash codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token plain"># Start Storybook dev server</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pui-cli storybook</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"># Start with documentation mode</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pui-cli storybook --docs</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"># Build static Storybook</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pui-cli storybook -b</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"># Build with documentation mode</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pui-cli storybook -b --docs</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"># Run on custom port</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pui-cli storybook --port 9000</span><br></div></code></pre></div></div>
|
|
@@ -305,7 +305,7 @@
|
|
|
305
305
|
</li>
|
|
306
306
|
</ul>
|
|
307
307
|
<p><strong>Examples:</strong></p>
|
|
308
|
-
<div class="language-bash codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-bash codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token plain"># List bundled skills shipped with this pui-cli version</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec pui-cli skills list</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"># Install for Cursor, Claude Code, and GitHub Copilot</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec pui-cli skills install migrate-to-pui-cli-9 --target all</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"># Install for Cursor only (default)</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec pui-cli skills install migrate-to-pui-cli-9</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"># Install for Claude Code only</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec pui-cli skills install migrate-to-pui-cli-9 --target claude</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"># Overwrite an existing skill directory</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec pui-cli skills install migrate-to-pui-cli-9 --target all --force</span><br></div></code></pre></div></div>
|
|
308
|
+
<div class="language-bash codeBlockContainer_uLrG theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_yDoo"><pre tabindex="0" class="prism-code language-bash codeBlock_whMN thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_r5mI"><div class="token-line" style="color:#393A34"><span class="token plain"># List bundled skills shipped with this pui-cli version</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec pui-cli skills list</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"># Install for Cursor, Claude Code, and GitHub Copilot</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec pui-cli skills install migrate-to-pui-cli-9 --target all</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"># Storybook CJS → ESM (Storybook 10 / pui-app-sdk storybook/cjs removal)</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec pui-cli skills install migrate-storybook-out-of-cjs --target all</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"># Install for Cursor only (default)</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec pui-cli skills install migrate-to-pui-cli-9</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"># Install for Claude Code only</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec pui-cli skills install migrate-to-pui-cli-9 --target claude</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"># Overwrite an existing skill directory</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">pnpm exec pui-cli skills install migrate-to-pui-cli-9 --target all --force</span><br></div></code></pre></div></div>
|
|
309
309
|
<p><strong>What it does:</strong></p>
|
|
310
310
|
<ul>
|
|
311
311
|
<li class="">Copies <code>lib/skills/<name>/</code> from the installed package into the target skill directories</li>
|