Core: Replace fs-extra with the native APIs#29126
Core: Replace fs-extra with the native APIs#29126JReinhold merged 31 commits intostorybookjs:nextfrom
fs-extra with the native APIs#29126Conversation
VS Code complains about not being able to find Node types, but building the package works. Need to investigate.
VS Code complains about not being able to find Node types, but building the package works. Need to investigate.
There was a problem hiding this comment.
30 file(s) reviewed, 10 comment(s)
Edit PR Review Bot Settings
| mockFiles = newMockFiles; | ||
| } | ||
|
|
||
| export const readFileSync = (filePath = '') => mockFiles[filePath]; |
There was a problem hiding this comment.
logic: Default parameter value '' might cause unexpected behavior if undefined is passed
code/builders/builder-vite/src/plugins/external-globals-plugin.ts
Outdated
Show resolved
Hide resolved
| const { dependencies = {}, peerDependencies = {} } = JSON.parse( | ||
| await readFile(path, { encoding: 'utf-8' }) | ||
| ); |
There was a problem hiding this comment.
style: Consider wrapping JSON.parse in a try-catch block to handle potential JSON parsing errors
|
EDIT: They were related to my PR. 😄 |
☁️ Nx Cloud ReportCI is running/has finished running commands for commit 8115974. As they complete they will appear below. Click to see the status, the terminal output, and the build insights. 📂 See all runs for this CI Pipeline Execution ✅ Successfully ran 1 targetSent with 💌 from NxCloud. |
JReinhold
left a comment
There was a problem hiding this comment.
Fantastic job!
Just to make sure, have you ensured all of these APIs are available in Node 18, which we currently support?
Yup, everything I've used was introduced before Node 18. The only concern could be As for the failing |
|
Yes it looks flaky, don't worry about it. |
fs-extra with the native APIsfs-extra with the native APIs
Closes #29104. Works on #29038.
What I did
This PR replaces
fs-extrawith the native APIs in allcode/**/*packages. Now it's only included inscripts/and as a transitive dependency.Checklist for Contributors
Testing
I've confirmed that the unit tests pass locally in the packages I've made the changes to. Please advise on which integration/E2E tests I should run (if any).
The changes in this PR are covered in the following automated tests:
Manual testing
Here's what I did for most changes (in packages that have had the unit tests):
npx vitestin the package directory before making any changes.npx vitestafter every change (for smaller packages) or utilize Vitest's watching capabilities (for bigger packages).As above, please advise if I should do some more testing here.
Documentation
MIGRATION.MD
Checklist for Maintainers
When this PR is ready for testing, make sure to add
ci:normal,ci:mergedorci:dailyGH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found incode/lib/cli/src/sandbox-templates.tsMake sure this PR contains one of the labels below:
Available labels
bug: Internal changes that fixes incorrect behavior.maintenance: User-facing maintenance tasks.dependencies: Upgrading (sometimes downgrading) dependencies.build: Internal-facing build tooling & test updates. Will not show up in release changelog.cleanup: Minor cleanup style change. Will not show up in release changelog.documentation: Documentation only changes. Will not show up in release changelog.feature request: Introducing a new feature.BREAKING CHANGE: Changes that break compatibility in some way with current major version.other: Changes that don't fit in the above categories.🦋 Canary release
This PR does not have a canary release associated. You can request a canary release of this pull request by mentioning the
@storybookjs/coreteam here.core team members can create a canary release here or locally with
gh workflow run --repo storybookjs/storybook canary-release-pr.yml --field pr=<PR_NUMBER>Greptile Summary
This PR replaces the
fs-extrapackage with native Node.jsfsandfs/promisesAPIs across multiple files in the Storybook codebase, aiming to reduce dependencies and use built-in functionality.fs-extrawithnode:fsandnode:fs/promisesin core packages and buildersreadFile,writeFile,cp, andrmfs-extrafrom package.json files in affected packagesfsPromises.cpusage in Node 16-21fs-extra'sensureFilefunctionality