Repository navigation
tools: update-eslint.sh does not work with npm@7 #37560
Copy link
Copy link
Closed
Labels
npmIssues and PRs related to the npm client dependency or the npm registry.Issues and PRs related to the npm client dependency or the npm registry.toolsIssues and PRs related to the tools directory.Issues and PRs related to the tools directory.
Description
- Version: v15.10.0, npm version 7.5.3
- Platform: Darwin imac.local 20.3.0 Darwin Kernel Version 20.3.0: Thu Jan 21 00:07:06 PST 2021; root:xnu-7195.81.3~1/RELEASE_X86_64 x86_64
- Subsystem: tools
What steps will reproduce the bug?
Running the tools/update-eslint.sh with npm@7 fails with the following error:
npm ERR! code ERESOLVE
npm ERR! Cannot destructure property 'name' of 'node' as it is null.
How often does it reproduce? Is there a required condition?
Always. No required condition.
What is the expected behavior?
The script works without errors.
What do you see instead?
See above.
Additional information
Using the --legacy-peer-deps flag to install eslint-plugin-markdown does not help as it produces a new issue where the eslint-tmp/node_modules/eslint folder is removed.
I can only make it work with something like this
diff --git a/tools/update-eslint.sh b/tools/update-eslint.sh
index d0320ab8f8..69dab66a2c 100755
--- a/tools/update-eslint.sh
+++ b/tools/update-eslint.sh
@@ -8,20 +8,14 @@
# $BASH_SOURCE[0] to determine directories to work in.
cd "$( dirname "$0" )" || exit
-rm -rf node_modules/eslint
+rm -rf node_modules/eslint node_modules/eslint-plugin-markdown
(
mkdir eslint-tmp
cd eslint-tmp || exit
npm init --yes
npm install --global-style --no-bin-links --production --no-package-lock eslint@latest
-
- (
- cd node_modules/eslint || exit
-
- npm install --no-bin-links --production --no-package-lock eslint-plugin-markdown@latest
- )
-
+ npm install --global-style --no-bin-links --production --no-package-lock eslint-plugin-markdown@latest
# Use dmn to remove some unneeded files.
npx dmn@2.2.2 -f clean
@@ -31,4 +25,6 @@ rm -rf node_modules/eslint
)
mv eslint-tmp/node_modules/eslint node_modules/eslint
+mv eslint-tmp/node_modules/eslint-plugin-markdown node_modules/eslint-plugin-markdown
+
rm -rf eslint-tmp/but that means adding a new folder and some dependencies are probably not deduplicated.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
npmIssues and PRs related to the npm client dependency or the npm registry.Issues and PRs related to the npm client dependency or the npm registry.toolsIssues and PRs related to the tools directory.Issues and PRs related to the tools directory.
Activity
lpinca commentedon Mar 1, 2021
cc: @nodejs/npm
ruyadorno commentedon Mar 1, 2021
ruyadorno commentedon Mar 1, 2021
@lpinca I'm just trying to reproduce it here and now I realize the current script is
cding into anode_modulesfolder? That's not a supported use case as far as I'm aware.What is the end goal here? I'm thinking that your proposed change (from the attached patch diff) might actually be a much better way to handle it - but again I don't have the full context here.
lpinca commentedon Mar 1, 2021
Yes current script is adding
eslint-plugin-markdownas a dependency ofeslintafter installing it. I don't know what are the motivations to do that. Perhaps moving only one directory and reduce dependencies?Refs: #13895
cc: @Trott
I'm fine with the above patch if there is consensus.
aduh95 commentedon Mar 1, 2021
How does the git diff looks with this patch? Do you see a bunch of added files or does it just move them?
Trott commentedon Mar 2, 2021
IIRC, the reason we
cdinto thenode_modules/eslintis so thateslintcan have its ownnode_modulesso that we can move theeslintdirectory to a different location later and still have everything work.tools: make update-eslint.sh work with npm@7
tools: make update-eslint.sh work with npm@7
tools: make update-eslint.sh work with npm@7
tools: make update-eslint.sh work with npm@7
tools: make update-eslint.sh work with npm@7
tools: make update-eslint.sh work with npm@7