This repository has been archived by the owner on May 22, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 35
fix: detect native bindings and change extension priority #353
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
eduardoboucas
added
bug
Something isn't working
type: bug
code to address defects in shipped code
and removed
bug
Something isn't working
labels
Mar 1, 2021
eduardoboucas
changed the title
fix: add esbuild plugin for node-fetch
fix: detect native bindings and change extension priority
Mar 2, 2021
ehmicky
reviewed
Mar 2, 2021
@@ -35,6 +44,8 @@ const bundleJsFile = async function ({ | |||
outfile: bundlePath, | |||
nodePaths: additionalModulePaths, | |||
platform: 'node', | |||
plugins, | |||
resolveExtensions: ['.js', '.jsx', '.mjs', '.cjs', '.json'], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should .es6
be added? This is an old extension that was used in the past when ES6 became a thing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure! I'll make a note to do some testing and add that in a subsequent PR.
ehmicky
approved these changes
Mar 2, 2021
Skn0tt
pushed a commit
to netlify/build
that referenced
this pull request
May 21, 2024
…p-it-and-ship-it#353) * fix: remove externalModules optimisation * fix: add esbuild plugin for node-fetch * chore: skip esbuild plugins in Node 8 * feat: add plugin for native bindings * chore: fix ESLint warning * chore: pass populated context to plugins * chore: fix tests
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
- Summary
This PR changes the order of
resolveExtensions
to prefer.js
files over.mjs
. This fixes an issue with thenode-fetch
module. More information at evanw/esbuild#363 (comment).Additionally, it removes an optimisation for external modules which, as @erezrokah pointed out, can introduce problems with different versions of the same module. It feels dangerous to be risking problems that are difficult to troubleshoot due to what may well be a premature optimisation.
Finally, it adds an esbuild plugin that detects Node bindings (via a direct
require
call to a.node
file) and adds the corresponding file to the zip, avoiding a fallback to ZISI.- Test plan
Added a test specifically for
node-fetch
and amended the test for modules with native bindings.- Description for the changelog
fix: detect native bindings and change extension priority
- A picture of a cute animal (not mandatory but encouraged)