Update dependencies, build, and testing for Ink.
Review Request #14645 — Created Oct. 20, 2025 and updated — Latest diff uploaded
This change accomplishes several tasks towards unifying our JavaScript
build infrastructure and supported more modern node.js environments:
- Replace many specific dependencies with a new dependency on
@beanbag/js-buildkit. - Eliminate unused or obsolete dependencies.
- Base
tsconfig.jsonon our shared config. - Copy our customized
@types/backboneinto this source tree, rather
than referencing it fromnode_modules. I'm working on upstreaming
these changes so we don't have to ship our own at all. - Ship types as both
index.d.tsandindex.d.mts. - Update to Storybook 10.
- Update to ESLint 9.
This includes a few changes specifically related to Storybook:
- We no longer need to manually inject axe-playwright into the page,
since the a11y tests are now handled automatically. - Fixed the text-color assignment in theme.css, since there's actually
nothing called--ink-p-text-color. - Pinned the version of
@types/reactbecause@types/mdxuses older
names for things even when@mdx/reactseems fine.
Plus a few changes relating to fixing unit tests:
- Use
@babel/registerfor transpiling during jasmine testing rather
thants-node. It seems like thets-nodeone was broken on modern
node environments, and using babel instead keeps our unit tests
running in a much closer mode to how the code is built for packaging.
This required some massaging of our babel configuration to allow
slightly different plugin configurations between dev and test. - Import
MenuItemsRadioGroupastype MenuItemsRadioGroupin
menuItemModel.ts in order to prevent a circular dependency. - Use
this.constructorfor static member access insideMenuView, so
unit tests and the class itself aren't looking at different versions
of static members.
- Did a build.
- Ran unit tests.
- Ran storybook.
- Used this is a workspace with other packages that depend on it.