Use npm to manage tool dependencies #22
Merged
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.
This is a sync of a change made in the upstream assets, validated there and already in use in other Arduino Tooling projects: arduino/tooling-project-assets#240
Some of the project infrastructure use tools sourced from the npm software registry.
Previously, the version of the tools used was not controlled. This was problematic because:
An example of the latter is seen here, where a new release of a transitive dependency cause spurious failure of the "Check Markdown" workflow:
https://github.com/arduino/serial-monitor/runs/8159584293?check_suite_focus=true
These tools were installed via either of the following methods:
npx <pkg>
This approach has the following behaviors of interest:
https://docs.npmjs.com/cli/v8/commands/npx#description
This means that the version used was:
npm install --global <pkg>
The latest available version of the package is used.
The new approach is to specify the version of the tools via the standard npm metadata files (
package.json
+package-lock.json
). This approach was chosen over thenpx <pkg>@<version>
alternative for the following reasons:pyproject.toml
+poetry.lock
)