I used NPM workspaces because I saw NX documentation mention support for it.
documentedcore-components
configuredcore-components
addedvite-plugin-lib-inject-css dependency
Testing
New Build Command
npm ci
npx nx build core-components
No error.
Log
```log
$ npm ci
npm WARN deprecated @types/browserslist@4.15.0: This is a stub types definition. browserslist provides its own type definitions, so you do not need this installed.
npm WARN deprecated stable@0.1.8: Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility
npm WARN deprecated abab@2.0.6: Use your platform's native atob() and btoa() methods instead
npm WARN deprecated @vitest/coverage-c8@0.31.4: v8 coverage is moved to @vitest/coverage-v8 package
npm WARN deprecated domexception@4.0.0: Use your platform's native DOMException instead
npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1
added 1725 packages, and audited 1727 packages in 35s
276 packages are looking for funding
run `npm fund` for details
14 vulnerabilities (13 moderate, 1 high)
To address issues that do not require attention, run:
npm audit fix
To address all issues possible (including breaking changes), run:
npm audit fix --force
Some issues need review, and may require choosing
a different dependency.
Run `npm audit` for details.
```
```log
$ npx nx build core-components
> nx run core-components:build:production [local cache]
vite v5.0.11 building for production...
✓ 436 modules transformed.
dist/assets/Section.css 0.03 kB │ gzip: 0.05 kB
dist/assets/Button.css 0.15 kB │ gzip: 0.13 kB
dist/assets/FormField.css 0.16 kB │ gzip: 0.13 kB
dist/assets/SectionTableWrapper.css 0.25 kB │ gzip: 0.16 kB
dist/assets/Collapse.css 0.29 kB │ gzip: 0.19 kB
dist/assets/SectionHeader.css 0.45 kB │ gzip: 0.26 kB
dist/assets/ShowMore.css 0.50 kB │ gzip: 0.27 kB
dist/assets/DescriptionList.css 1.23 kB │ gzip: 0.47 kB
dist/assets/LoadingSpinner.css 1.26 kB │ gzip: 0.50 kB
dist/assets/SectionContent.css 1.30 kB │ gzip: 0.39 kB
dist/assets/Paginator.css 1.40 kB │ gzip: 0.56 kB
dist/assets/InfiniteScrollTable.css 1.52 kB │ gzip: 0.59 kB
dist/assets/HistoryBadge.css 1.83 kB │ gzip: 0.55 kB
dist/assets/Checkbox.css 1.92 kB │ gzip: 0.57 kB
dist/assets/TextCopyField.css 1.98 kB │ gzip: 0.54 kB
dist/assets/Pill.css 2.28 kB │ gzip: 0.69 kB
dist/assets/Sidebar.css 2.34 kB │ gzip: 0.73 kB
dist/assets/DropdownSelector.css 3.15 kB │ gzip: 1.06 kB
dist/assets/Message.css 4.81 kB │ gzip: 1.06 kB
dist/lib/Icon/index.js 0.05 kB │ gzip: 0.07 kB
dist/lib/Pill/index.js 0.05 kB │ gzip: 0.07 kB
dist/lib/Button/index.js 0.06 kB │ gzip: 0.07 kB
dist/lib/Message/index.js 0.06 kB │ gzip: 0.07 kB
dist/lib/Sidebar/index.js 0.06 kB │ gzip: 0.07 kB
dist/lib/Checkbox/index.js 0.06 kB │ gzip: 0.08 kB
dist/lib/Collapse/index.js 0.06 kB │ gzip: 0.08 kB
dist/lib/ShowMore/index.js 0.06 kB │ gzip: 0.08 kB
dist/lib/Paginator/index.js 0.06 kB │ gzip: 0.08 kB
dist/lib/InlineMessage/index.js 0.06 kB │ gzip: 0.08 kB
dist/lib/TextCopyField/index.js 0.06 kB │ gzip: 0.08 kB
dist/lib/LoadingSpinner/index.js 0.06 kB │ gzip: 0.08 kB
dist/lib/SectionMessage/index.js 0.06 kB │ gzip: 0.08 kB
dist/lib/DescriptionList/index.js 0.07 kB │ gzip: 0.08 kB
dist/lib/DropdownSelector/index.js 0.07 kB │ gzip: 0.08 kB
dist/lib/InfiniteScrollTable/index.js 0.07 kB │ gzip: 0.09 kB
dist/lib/Section/index.js 0.07 kB │ gzip: 0.08 kB
dist/lib/Form/index.js 0.08 kB │ gzip: 0.08 kB
dist/lib/HistoryBadge/index.js 0.08 kB │ gzip: 0.09 kB
dist/lib/SectionHeader/index.js 0.08 kB │ gzip: 0.09 kB
dist/lib/SectionTableWrapper/index.js 0.08 kB │ gzip: 0.09 kB
dist/lib/SectionContent/index.js 0.20 kB │ gzip: 0.15 kB
dist/lib/InlineMessage/InlineMessage.js 0.34 kB │ gzip: 0.23 kB
dist/lib/Icon/Icon.js 0.39 kB │ gzip: 0.27 kB
dist/lib/HistoryBadge/HistoryBadge.js 0.58 kB │ gzip: 0.37 kB
dist/lib/SectionMessage/SectionMessage.js 0.62 kB │ gzip: 0.33 kB
dist/lib/Pill/Pill.js 0.94 kB │ gzip: 0.49 kB
dist/lib/DropdownSelector/DropdownSelector.js 1.01 kB │ gzip: 0.58 kB
dist/lib/Checkbox/Checkbox.js 1.23 kB │ gzip: 0.62 kB
dist/lib/TextCopyField/TextCopyField.js 1.26 kB │ gzip: 0.64 kB
dist/lib/SectionHeader/SectionHeader.js 1.41 kB │ gzip: 0.67 kB
dist/index.js 1.70 kB │ gzip: 0.46 kB
dist/Badge-W4AS3xw2.mjs 1.92 kB │ gzip: 0.93 kB
dist/lib/Button/Button.js 1.99 kB │ gzip: 0.81 kB
dist/lib/SectionContent/SectionContent.js 2.09 kB │ gzip: 0.93 kB
dist/lib/LoadingSpinner/LoadingSpinner.js 2.47 kB │ gzip: 1.12 kB
dist/lib/Paginator/Paginator.js 2.57 kB │ gzip: 0.97 kB
dist/lib/Section/Section.js 3.35 kB │ gzip: 1.23 kB
dist/lib/SectionTableWrapper/SectionTableWrapper.js 3.37 kB │ gzip: 1.33 kB
dist/utils-OW3A2J3p.mjs 3.39 kB │ gzip: 1.50 kB
dist/lib/DescriptionList/DescriptionList.js 3.50 kB │ gzip: 1.57 kB
dist/Input-HVmkVBHZ.mjs 5.49 kB │ gzip: 2.11 kB
dist/lib/Message/Message.js 7.56 kB │ gzip: 2.87 kB
dist/lib/Collapse/Collapse.js 9.04 kB │ gzip: 2.99 kB
dist/lib/ShowMore/ShowMore.js 11.48 kB │ gzip: 4.02 kB
dist/Transition-3X2EcsU0.mjs 12.16 kB │ gzip: 3.76 kB
dist/index-j9GOmHnh.mjs 23.60 kB │ gzip: 6.03 kB
dist/lib/Form/FormField.js 25.86 kB │ gzip: 6.89 kB
dist/lib/Sidebar/Sidebar.js 29.58 kB │ gzip: 8.33 kB
dist/lib/InfiniteScrollTable/InfiniteScrollTable.js 186.22 kB │ gzip: 40.95 kB
dist/index-sjH1LaA_.mjs 668.74 kB │ gzip: 155.83 kB
[vite:dts] Start generate declaration files...
✓ built in 8.16s
[vite:dts] Declaration files built in 3635ms.
——————————————————————————————————————————————————————————————————————————————————————————————————————————————
> NX Successfully ran target build for project core-components (119ms)
Nx read the output from the cache instead of running the command for 1 out of 1 tasks.
```
Regression
Follow Local Dev Setup but with --skip-nx-cache appended to each nx command.
No log errors.
No UI changes compared to main.
UI
Regression Test (Minimal)
https://github.com/TACC/tup-ui/assets/62723358/5aae3989-2402-49fb-acb4-8b73d5c425e6
https://github.com/TACC/tup-ui/assets/62723358/b425b247-c1f4-4116-b9e3-64639afc6e88
https://github.com/TACC/tup-ui/assets/62723358/d82dcfd3-081b-40ea-a5e1-7656964d8ae4
https://github.com/TACC/tup-ui/assets/62723358/4ed57dae-3a0e-4eef-adde-12af33fb1281
https://github.com/TACC/tup-ui/assets/62723358/bbd701ab-d033-40f1-bef1-dbeaddb470d4
Issues
[!NOTE]
Requires opinionated dependencies, like reactstrap and formikSolution:
Report a GitHub Issue, because it affects consumers.
Replace dependencies that are easy to replace with simple code.
Make optional the features that rely on dependencies. Make those dependencies optional (a, b).
I delay using JsDoc to get automatic documentation until v1, because v0 does not need extensive documentation, because it already has familiar users (who copy/pasted the code).
Overview
Create a
@tacc/core-components
Node package.Related
Changes
core-components
core-components
vite-plugin-lib-inject-css
dependencyTesting
New Build Command
npm ci
npx nx build core-components
Log
```log $ npm ci npm WARN deprecated @types/browserslist@4.15.0: This is a stub types definition. browserslist provides its own type definitions, so you do not need this installed. npm WARN deprecated stable@0.1.8: Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility npm WARN deprecated abab@2.0.6: Use your platform's native atob() and btoa() methods instead npm WARN deprecated @vitest/coverage-c8@0.31.4: v8 coverage is moved to @vitest/coverage-v8 package npm WARN deprecated domexception@4.0.0: Use your platform's native DOMException instead npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1 added 1725 packages, and audited 1727 packages in 35s 276 packages are looking for funding run `npm fund` for details 14 vulnerabilities (13 moderate, 1 high) To address issues that do not require attention, run: npm audit fix To address all issues possible (including breaking changes), run: npm audit fix --force Some issues need review, and may require choosing a different dependency. Run `npm audit` for details. ``` ```log $ npx nx build core-components > nx run core-components:build:production [local cache] vite v5.0.11 building for production... ✓ 436 modules transformed. dist/assets/Section.css 0.03 kB │ gzip: 0.05 kB dist/assets/Button.css 0.15 kB │ gzip: 0.13 kB dist/assets/FormField.css 0.16 kB │ gzip: 0.13 kB dist/assets/SectionTableWrapper.css 0.25 kB │ gzip: 0.16 kB dist/assets/Collapse.css 0.29 kB │ gzip: 0.19 kB dist/assets/SectionHeader.css 0.45 kB │ gzip: 0.26 kB dist/assets/ShowMore.css 0.50 kB │ gzip: 0.27 kB dist/assets/DescriptionList.css 1.23 kB │ gzip: 0.47 kB dist/assets/LoadingSpinner.css 1.26 kB │ gzip: 0.50 kB dist/assets/SectionContent.css 1.30 kB │ gzip: 0.39 kB dist/assets/Paginator.css 1.40 kB │ gzip: 0.56 kB dist/assets/InfiniteScrollTable.css 1.52 kB │ gzip: 0.59 kB dist/assets/HistoryBadge.css 1.83 kB │ gzip: 0.55 kB dist/assets/Checkbox.css 1.92 kB │ gzip: 0.57 kB dist/assets/TextCopyField.css 1.98 kB │ gzip: 0.54 kB dist/assets/Pill.css 2.28 kB │ gzip: 0.69 kB dist/assets/Sidebar.css 2.34 kB │ gzip: 0.73 kB dist/assets/DropdownSelector.css 3.15 kB │ gzip: 1.06 kB dist/assets/Message.css 4.81 kB │ gzip: 1.06 kB dist/lib/Icon/index.js 0.05 kB │ gzip: 0.07 kB dist/lib/Pill/index.js 0.05 kB │ gzip: 0.07 kB dist/lib/Button/index.js 0.06 kB │ gzip: 0.07 kB dist/lib/Message/index.js 0.06 kB │ gzip: 0.07 kB dist/lib/Sidebar/index.js 0.06 kB │ gzip: 0.07 kB dist/lib/Checkbox/index.js 0.06 kB │ gzip: 0.08 kB dist/lib/Collapse/index.js 0.06 kB │ gzip: 0.08 kB dist/lib/ShowMore/index.js 0.06 kB │ gzip: 0.08 kB dist/lib/Paginator/index.js 0.06 kB │ gzip: 0.08 kB dist/lib/InlineMessage/index.js 0.06 kB │ gzip: 0.08 kB dist/lib/TextCopyField/index.js 0.06 kB │ gzip: 0.08 kB dist/lib/LoadingSpinner/index.js 0.06 kB │ gzip: 0.08 kB dist/lib/SectionMessage/index.js 0.06 kB │ gzip: 0.08 kB dist/lib/DescriptionList/index.js 0.07 kB │ gzip: 0.08 kB dist/lib/DropdownSelector/index.js 0.07 kB │ gzip: 0.08 kB dist/lib/InfiniteScrollTable/index.js 0.07 kB │ gzip: 0.09 kB dist/lib/Section/index.js 0.07 kB │ gzip: 0.08 kB dist/lib/Form/index.js 0.08 kB │ gzip: 0.08 kB dist/lib/HistoryBadge/index.js 0.08 kB │ gzip: 0.09 kB dist/lib/SectionHeader/index.js 0.08 kB │ gzip: 0.09 kB dist/lib/SectionTableWrapper/index.js 0.08 kB │ gzip: 0.09 kB dist/lib/SectionContent/index.js 0.20 kB │ gzip: 0.15 kB dist/lib/InlineMessage/InlineMessage.js 0.34 kB │ gzip: 0.23 kB dist/lib/Icon/Icon.js 0.39 kB │ gzip: 0.27 kB dist/lib/HistoryBadge/HistoryBadge.js 0.58 kB │ gzip: 0.37 kB dist/lib/SectionMessage/SectionMessage.js 0.62 kB │ gzip: 0.33 kB dist/lib/Pill/Pill.js 0.94 kB │ gzip: 0.49 kB dist/lib/DropdownSelector/DropdownSelector.js 1.01 kB │ gzip: 0.58 kB dist/lib/Checkbox/Checkbox.js 1.23 kB │ gzip: 0.62 kB dist/lib/TextCopyField/TextCopyField.js 1.26 kB │ gzip: 0.64 kB dist/lib/SectionHeader/SectionHeader.js 1.41 kB │ gzip: 0.67 kB dist/index.js 1.70 kB │ gzip: 0.46 kB dist/Badge-W4AS3xw2.mjs 1.92 kB │ gzip: 0.93 kB dist/lib/Button/Button.js 1.99 kB │ gzip: 0.81 kB dist/lib/SectionContent/SectionContent.js 2.09 kB │ gzip: 0.93 kB dist/lib/LoadingSpinner/LoadingSpinner.js 2.47 kB │ gzip: 1.12 kB dist/lib/Paginator/Paginator.js 2.57 kB │ gzip: 0.97 kB dist/lib/Section/Section.js 3.35 kB │ gzip: 1.23 kB dist/lib/SectionTableWrapper/SectionTableWrapper.js 3.37 kB │ gzip: 1.33 kB dist/utils-OW3A2J3p.mjs 3.39 kB │ gzip: 1.50 kB dist/lib/DescriptionList/DescriptionList.js 3.50 kB │ gzip: 1.57 kB dist/Input-HVmkVBHZ.mjs 5.49 kB │ gzip: 2.11 kB dist/lib/Message/Message.js 7.56 kB │ gzip: 2.87 kB dist/lib/Collapse/Collapse.js 9.04 kB │ gzip: 2.99 kB dist/lib/ShowMore/ShowMore.js 11.48 kB │ gzip: 4.02 kB dist/Transition-3X2EcsU0.mjs 12.16 kB │ gzip: 3.76 kB dist/index-j9GOmHnh.mjs 23.60 kB │ gzip: 6.03 kB dist/lib/Form/FormField.js 25.86 kB │ gzip: 6.89 kB dist/lib/Sidebar/Sidebar.js 29.58 kB │ gzip: 8.33 kB dist/lib/InfiniteScrollTable/InfiniteScrollTable.js 186.22 kB │ gzip: 40.95 kB dist/index-sjH1LaA_.mjs 668.74 kB │ gzip: 155.83 kB [vite:dts] Start generate declaration files... ✓ built in 8.16s [vite:dts] Declaration files built in 3635ms. —————————————————————————————————————————————————————————————————————————————————————————————————————————————— > NX Successfully ran target build for project core-components (119ms) Nx read the output from the cache instead of running the command for 1 out of 1 tasks. ```Regression
--skip-nx-cache
appended to eachnx
command.main
.UI
Regression Test (Minimal)
https://github.com/TACC/tup-ui/assets/62723358/5aae3989-2402-49fb-acb4-8b73d5c425e6 https://github.com/TACC/tup-ui/assets/62723358/b425b247-c1f4-4116-b9e3-64639afc6e88 https://github.com/TACC/tup-ui/assets/62723358/d82dcfd3-081b-40ea-a5e1-7656964d8ae4 https://github.com/TACC/tup-ui/assets/62723358/4ed57dae-3a0e-4eef-adde-12af33fb1281 https://github.com/TACC/tup-ui/assets/62723358/bbd701ab-d033-40f1-bef1-dbeaddb470d4Issues