在特定(旧)版本的包上调用 "npm install" 是否会随着时间的推移保持不变?
Is calling "npm install" on a package of a specific (older) version expected to stay the same over time?
我使用的是旧版本的节点 (6.17.1) 并且已经明确安装了 eslint@5.16.0,因为新版本的 eslint 不适用于节点 6。这一直没有任何问题一会儿。
最近,当使用 npm install
从 package.json 安装 eslint@5.16.0 时不再有效——现在有一个不兼容的依赖项,我认为它位于 eslint 的依赖项树中。
我的问题是,在特定版本的 eslint 上 npm install
是否期望以相同的方式永远继续工作?或者 npm 包(特定版本)在依赖树的深处更改某些包,然后破坏第一个包的特定版本,这是否正常?
如果无法避免这种情况,一旦依赖关系中断,是否有任何方法可以轻松解决此问题?这是 package-lock.json 的用途吗?
npm 的错误输出如下:
npm ERR! Darwin 18.5.0
npm ERR! argv "/Users/~/.nvm/versions/node/v6.17.1/bin/node" "/Users/~/.nvm/versions/node/v6.17.1/bin/npm" "install" "eslint@5.16.0"
npm ERR! node v6.17.1
npm ERR! npm v3.10.10
npm ERR! code ENOTSUP
npm ERR! notsup Unsupported engine for esquery@1.2.0: wanted: {"node":">=8.0"} (current: {"node":"6.17.1","npm":"3.10.10"})
npm ERR! notsup Not compatible with your version of node/npm: esquery@1.2.0
npm ERR! notsup Not compatible with your version of node/npm: esquery@1.2.0
npm ERR! notsup Required: {"node":">=8.0"}
npm ERR! notsup Actual: {"npm":"3.10.10","node":"6.17.1"}
提前致谢!
正如您提到的,这就是锁定文件(package-lock.json
对应 npm
和 yarn.lock
对应 yarn
)的用途。否则,npm
将为您指定的包及其依赖项及其依赖项等寻找满足约束的最新包版本。
然而,package-lock.json
仅在 npm v5, and so your current version of npm
(v3.10.10) won't have a package-lock.json
. You'd instead need to use npm shrinkwrap
中引入。如果您无法更新 Node.js.
的版本,我建议您将来使用 yarn
从您的错误输出来看,esquery
似乎需要 engine 版本的 Node.js v8 或更高版本。通过使用较新版本的 Node.js 和 运行 yarn why esquery
来了解为什么需要它,它似乎直接依赖于 eslint
.
$ yarn why esquery
yarn why v1.22.4
[1/4] Why do we have the module "esquery"...?
[2/4] Initialising dependency graph...
[3/4] Finding dependency...
[4/4] Calculating file sizes...
=> Found "esquery@1.2.0"
info Reasons this module exists
- "eslint" depends on it
- Hoisted from "eslint#esquery"
info Disk size without dependencies: "744KB"
info Disk size with unique dependencies: "796KB"
info Disk size with transitive dependencies: "796KB"
info Number of shared dependencies: 1
Done in 0.12s.
ESLint v5.16.0 使用 caret range ^1.0.1
which means it will use the latest version of esquery
provided the major version is still 1
. This was fine until esquery v1.1.0, since it supported Node.js v0.6 and above; but in v1.2.0, this was changed to v8 and above.
指定对 esquery
的依赖
由于这显然是一个重大更改,如果作者遵守 Semantic Versioning 2.0.0,他们应该将版本号提高到 v2.0.0 而不是 v1.2.0,但 README.md
是否表示它遵循 semver。
正确的解决方法是在 eslint
存储库上创建一个 PR,建议将版本范围从 ^1.0.1
更改为 1.1.x
(或 ~1.1
),但是现在,您可以尝试使用此 npm-shrinkwrap.json
,它指定了 1.1.0
版本的 esquery。
{
"name": "sonpminstall",
"version": "1.0.0",
"dependencies": {
"@babel/code-frame": {
"version": "7.8.3",
"from": "@babel/code-frame@>=7.0.0 <8.0.0",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz"
},
"@babel/helper-validator-identifier": {
"version": "7.9.0",
"from": "@babel/helper-validator-identifier@>=7.9.0 <8.0.0",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz"
},
"@babel/highlight": {
"version": "7.9.0",
"from": "@babel/highlight@>=7.8.3 <8.0.0",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz"
},
"acorn": {
"version": "6.4.1",
"from": "acorn@>=6.0.7 <7.0.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz"
},
"acorn-jsx": {
"version": "5.2.0",
"from": "acorn-jsx@>=5.0.0 <6.0.0",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz"
},
"ajv": {
"version": "6.12.0",
"from": "ajv@>=6.9.1 <7.0.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz"
},
"ansi-escapes": {
"version": "3.2.0",
"from": "ansi-escapes@>=3.2.0 <4.0.0",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz"
},
"ansi-regex": {
"version": "3.0.0",
"from": "ansi-regex@>=3.0.0 <4.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz"
},
"ansi-styles": {
"version": "3.2.1",
"from": "ansi-styles@>=3.2.1 <4.0.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz"
},
"argparse": {
"version": "1.0.10",
"from": "argparse@>=1.0.7 <2.0.0",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz"
},
"astral-regex": {
"version": "1.0.0",
"from": "astral-regex@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz"
},
"balanced-match": {
"version": "1.0.0",
"from": "balanced-match@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz"
},
"brace-expansion": {
"version": "1.1.11",
"from": "brace-expansion@>=1.1.7 <2.0.0",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
},
"callsites": {
"version": "3.1.0",
"from": "callsites@>=3.0.0 <4.0.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"
},
"chalk": {
"version": "2.4.2",
"from": "chalk@>=2.1.0 <3.0.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
},
"chardet": {
"version": "0.7.0",
"from": "chardet@>=0.7.0 <0.8.0",
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz"
},
"cli-cursor": {
"version": "2.1.0",
"from": "cli-cursor@>=2.1.0 <3.0.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz"
},
"cli-width": {
"version": "2.2.0",
"from": "cli-width@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz"
},
"color-convert": {
"version": "1.9.3",
"from": "color-convert@>=1.9.0 <2.0.0",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz"
},
"color-name": {
"version": "1.1.3",
"from": "color-name@1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
},
"concat-map": {
"version": "0.0.1",
"from": "concat-map@0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
},
"cross-spawn": {
"version": "6.0.5",
"from": "cross-spawn@>=6.0.5 <7.0.0",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz"
},
"debug": {
"version": "4.1.1",
"from": "debug@>=4.0.1 <5.0.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz"
},
"deep-is": {
"version": "0.1.3",
"from": "deep-is@>=0.1.3 <0.2.0",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz"
},
"doctrine": {
"version": "3.0.0",
"from": "doctrine@>=3.0.0 <4.0.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz"
},
"emoji-regex": {
"version": "7.0.3",
"from": "emoji-regex@>=7.0.1 <8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz"
},
"escape-string-regexp": {
"version": "1.0.5",
"from": "escape-string-regexp@>=1.0.5 <2.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
},
"eslint": {
"version": "5.16.0",
"from": "eslint@>=5.16.0 <6.0.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz"
},
"eslint-scope": {
"version": "4.0.3",
"from": "eslint-scope@>=4.0.3 <5.0.0",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz"
},
"eslint-utils": {
"version": "1.4.3",
"from": "eslint-utils@>=1.3.1 <2.0.0",
"resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz"
},
"eslint-visitor-keys": {
"version": "1.1.0",
"from": "eslint-visitor-keys@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz"
},
"espree": {
"version": "5.0.1",
"from": "espree@>=5.0.1 <6.0.0",
"resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz"
},
"esprima": {
"version": "4.0.1",
"from": "esprima@>=4.0.0 <5.0.0",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz"
},
"esquery": {
"version": "1.1.0",
"from": "esquery@>=1.0.1 <1.2.0",
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz",
"dependencies": {
"estraverse": {
"version": "4.0.0",
"from": "estraverse@>=4.0.0 <5.0.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.0.0.tgz"
}
}
},
"esrecurse": {
"version": "4.2.1",
"from": "esrecurse@>=4.1.0 <5.0.0",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz"
},
"estraverse": {
"version": "4.3.0",
"from": "estraverse@>=4.1.1 <5.0.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz"
},
"esutils": {
"version": "2.0.3",
"from": "esutils@>=2.0.2 <3.0.0",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
},
"external-editor": {
"version": "3.1.0",
"from": "external-editor@>=3.0.3 <4.0.0",
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz"
},
"fast-deep-equal": {
"version": "3.1.1",
"from": "fast-deep-equal@>=3.1.1 <4.0.0",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz"
},
"fast-json-stable-stringify": {
"version": "2.1.0",
"from": "fast-json-stable-stringify@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
},
"fast-levenshtein": {
"version": "2.0.6",
"from": "fast-levenshtein@>=2.0.6 <2.1.0",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
},
"figures": {
"version": "2.0.0",
"from": "figures@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz"
},
"file-entry-cache": {
"version": "5.0.1",
"from": "file-entry-cache@>=5.0.1 <6.0.0",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz"
},
"flat-cache": {
"version": "2.0.1",
"from": "flat-cache@>=2.0.1 <3.0.0",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz"
},
"flatted": {
"version": "2.0.1",
"from": "flatted@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz"
},
"fs.realpath": {
"version": "1.0.0",
"from": "fs.realpath@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
},
"functional-red-black-tree": {
"version": "1.0.1",
"from": "functional-red-black-tree@>=1.0.1 <2.0.0",
"resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz"
},
"glob": {
"version": "7.1.6",
"from": "glob@>=7.1.2 <8.0.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz"
},
"globals": {
"version": "11.12.0",
"from": "globals@>=11.7.0 <12.0.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz"
},
"has-flag": {
"version": "3.0.0",
"from": "has-flag@>=3.0.0 <4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz"
},
"iconv-lite": {
"version": "0.4.24",
"from": "iconv-lite@>=0.4.24 <0.5.0",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"
},
"ignore": {
"version": "4.0.6",
"from": "ignore@>=4.0.6 <5.0.0",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz"
},
"import-fresh": {
"version": "3.2.1",
"from": "import-fresh@>=3.0.0 <4.0.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz"
},
"imurmurhash": {
"version": "0.1.4",
"from": "imurmurhash@>=0.1.4 <0.2.0",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"
},
"inflight": {
"version": "1.0.6",
"from": "inflight@>=1.0.4 <2.0.0",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
},
"inherits": {
"version": "2.0.4",
"from": "inherits@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
},
"inquirer": {
"version": "6.5.2",
"from": "inquirer@>=6.2.2 <7.0.0",
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
"dependencies": {
"ansi-regex": {
"version": "4.1.0",
"from": "ansi-regex@>=4.1.0 <5.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz"
},
"strip-ansi": {
"version": "5.2.0",
"from": "strip-ansi@>=5.1.0 <6.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz"
}
}
},
"is-fullwidth-code-point": {
"version": "2.0.0",
"from": "is-fullwidth-code-point@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz"
},
"is-promise": {
"version": "2.1.0",
"from": "is-promise@>=2.1.0 <3.0.0",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz"
},
"isexe": {
"version": "2.0.0",
"from": "isexe@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
},
"js-tokens": {
"version": "4.0.0",
"from": "js-tokens@>=4.0.0 <5.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
},
"js-yaml": {
"version": "3.13.1",
"from": "js-yaml@>=3.13.0 <4.0.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz"
},
"json-schema-traverse": {
"version": "0.4.1",
"from": "json-schema-traverse@>=0.4.1 <0.5.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
},
"json-stable-stringify-without-jsonify": {
"version": "1.0.1",
"from": "json-stable-stringify-without-jsonify@>=1.0.1 <2.0.0",
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
},
"levn": {
"version": "0.3.0",
"from": "levn@>=0.3.0 <0.4.0",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz"
},
"lodash": {
"version": "4.17.15",
"from": "lodash@>=4.17.11 <5.0.0",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz"
},
"mimic-fn": {
"version": "1.2.0",
"from": "mimic-fn@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz"
},
"minimatch": {
"version": "3.0.4",
"from": "minimatch@>=3.0.4 <4.0.0",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz"
},
"minimist": {
"version": "1.2.5",
"from": "minimist@>=1.2.5 <2.0.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz"
},
"mkdirp": {
"version": "0.5.4",
"from": "mkdirp@>=0.5.1 <0.6.0",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz"
},
"ms": {
"version": "2.1.2",
"from": "ms@>=2.1.1 <3.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
},
"mute-stream": {
"version": "0.0.7",
"from": "mute-stream@0.0.7",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz"
},
"natural-compare": {
"version": "1.4.0",
"from": "natural-compare@>=1.4.0 <2.0.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
},
"nice-try": {
"version": "1.0.5",
"from": "nice-try@>=1.0.4 <2.0.0",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz"
},
"once": {
"version": "1.4.0",
"from": "once@>=1.3.0 <2.0.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
},
"onetime": {
"version": "2.0.1",
"from": "onetime@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz"
},
"optionator": {
"version": "0.8.3",
"from": "optionator@>=0.8.2 <0.9.0",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz"
},
"os-tmpdir": {
"version": "1.0.2",
"from": "os-tmpdir@>=1.0.2 <1.1.0",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz"
},
"parent-module": {
"version": "1.0.1",
"from": "parent-module@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
},
"path-is-absolute": {
"version": "1.0.1",
"from": "path-is-absolute@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
},
"path-is-inside": {
"version": "1.0.2",
"from": "path-is-inside@>=1.0.2 <2.0.0",
"resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz"
},
"path-key": {
"version": "2.0.1",
"from": "path-key@>=2.0.1 <3.0.0",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz"
},
"prelude-ls": {
"version": "1.1.2",
"from": "prelude-ls@>=1.1.2 <1.2.0",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz"
},
"progress": {
"version": "2.0.3",
"from": "progress@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz"
},
"punycode": {
"version": "2.1.1",
"from": "punycode@>=2.1.0 <3.0.0",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz"
},
"regexpp": {
"version": "2.0.1",
"from": "regexpp@>=2.0.1 <3.0.0",
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz"
},
"resolve-from": {
"version": "4.0.0",
"from": "resolve-from@>=4.0.0 <5.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
},
"restore-cursor": {
"version": "2.0.0",
"from": "restore-cursor@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz"
},
"rimraf": {
"version": "2.6.3",
"from": "rimraf@2.6.3",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz"
},
"run-async": {
"version": "2.4.0",
"from": "run-async@>=2.2.0 <3.0.0",
"resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz"
},
"rxjs": {
"version": "6.5.4",
"from": "rxjs@>=6.4.0 <7.0.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz"
},
"safer-buffer": {
"version": "2.1.2",
"from": "safer-buffer@>=2.1.2 <3.0.0",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
},
"semver": {
"version": "5.7.1",
"from": "semver@>=5.5.1 <6.0.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz"
},
"shebang-command": {
"version": "1.2.0",
"from": "shebang-command@>=1.2.0 <2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz"
},
"shebang-regex": {
"version": "1.0.0",
"from": "shebang-regex@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz"
},
"signal-exit": {
"version": "3.0.2",
"from": "signal-exit@>=3.0.2 <4.0.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz"
},
"slice-ansi": {
"version": "2.1.0",
"from": "slice-ansi@>=2.1.0 <3.0.0",
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz"
},
"sprintf-js": {
"version": "1.0.3",
"from": "sprintf-js@>=1.0.2 <1.1.0",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz"
},
"string-width": {
"version": "2.1.1",
"from": "string-width@>=2.1.0 <3.0.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz"
},
"strip-ansi": {
"version": "4.0.0",
"from": "strip-ansi@>=4.0.0 <5.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz"
},
"strip-json-comments": {
"version": "2.0.1",
"from": "strip-json-comments@>=2.0.1 <3.0.0",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz"
},
"supports-color": {
"version": "5.5.0",
"from": "supports-color@>=5.3.0 <6.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz"
},
"table": {
"version": "5.4.6",
"from": "table@>=5.2.3 <6.0.0",
"resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
"dependencies": {
"ansi-regex": {
"version": "4.1.0",
"from": "ansi-regex@>=4.1.0 <5.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz"
},
"string-width": {
"version": "3.1.0",
"from": "string-width@>=3.0.0 <4.0.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz"
},
"strip-ansi": {
"version": "5.2.0",
"from": "strip-ansi@>=5.1.0 <6.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz"
}
}
},
"text-table": {
"version": "0.2.0",
"from": "text-table@>=0.2.0 <0.3.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
},
"through": {
"version": "2.3.8",
"from": "through@>=2.3.6 <3.0.0",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz"
},
"tmp": {
"version": "0.0.33",
"from": "tmp@>=0.0.33 <0.0.34",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz"
},
"tslib": {
"version": "1.11.1",
"from": "tslib@>=1.9.0 <2.0.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz"
},
"type-check": {
"version": "0.3.2",
"from": "type-check@>=0.3.2 <0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz"
},
"uri-js": {
"version": "4.2.2",
"from": "uri-js@>=4.2.2 <5.0.0",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz"
},
"which": {
"version": "1.3.1",
"from": "which@>=1.2.9 <2.0.0",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz"
},
"word-wrap": {
"version": "1.2.3",
"from": "word-wrap@>=1.2.3 <1.3.0",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz"
},
"wrappy": {
"version": "1.0.2",
"from": "wrappy@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
},
"write": {
"version": "1.0.3",
"from": "write@1.0.3",
"resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz"
}
}
}
$ node -v
v6.17.1
$ npm -v
3.10.10
$ ls
npm-shrinkwrap.json package.json
$ npm install
...
我使用的是旧版本的节点 (6.17.1) 并且已经明确安装了 eslint@5.16.0,因为新版本的 eslint 不适用于节点 6。这一直没有任何问题一会儿。
最近,当使用 npm install
从 package.json 安装 eslint@5.16.0 时不再有效——现在有一个不兼容的依赖项,我认为它位于 eslint 的依赖项树中。
我的问题是,在特定版本的 eslint 上 npm install
是否期望以相同的方式永远继续工作?或者 npm 包(特定版本)在依赖树的深处更改某些包,然后破坏第一个包的特定版本,这是否正常?
如果无法避免这种情况,一旦依赖关系中断,是否有任何方法可以轻松解决此问题?这是 package-lock.json 的用途吗?
npm 的错误输出如下:
npm ERR! Darwin 18.5.0
npm ERR! argv "/Users/~/.nvm/versions/node/v6.17.1/bin/node" "/Users/~/.nvm/versions/node/v6.17.1/bin/npm" "install" "eslint@5.16.0"
npm ERR! node v6.17.1
npm ERR! npm v3.10.10
npm ERR! code ENOTSUP
npm ERR! notsup Unsupported engine for esquery@1.2.0: wanted: {"node":">=8.0"} (current: {"node":"6.17.1","npm":"3.10.10"})
npm ERR! notsup Not compatible with your version of node/npm: esquery@1.2.0
npm ERR! notsup Not compatible with your version of node/npm: esquery@1.2.0
npm ERR! notsup Required: {"node":">=8.0"}
npm ERR! notsup Actual: {"npm":"3.10.10","node":"6.17.1"}
提前致谢!
正如您提到的,这就是锁定文件(package-lock.json
对应 npm
和 yarn.lock
对应 yarn
)的用途。否则,npm
将为您指定的包及其依赖项及其依赖项等寻找满足约束的最新包版本。
然而,package-lock.json
仅在 npm v5, and so your current version of npm
(v3.10.10) won't have a package-lock.json
. You'd instead need to use npm shrinkwrap
中引入。如果您无法更新 Node.js.
yarn
从您的错误输出来看,esquery
似乎需要 engine 版本的 Node.js v8 或更高版本。通过使用较新版本的 Node.js 和 运行 yarn why esquery
来了解为什么需要它,它似乎直接依赖于 eslint
.
$ yarn why esquery
yarn why v1.22.4
[1/4] Why do we have the module "esquery"...?
[2/4] Initialising dependency graph...
[3/4] Finding dependency...
[4/4] Calculating file sizes...
=> Found "esquery@1.2.0"
info Reasons this module exists
- "eslint" depends on it
- Hoisted from "eslint#esquery"
info Disk size without dependencies: "744KB"
info Disk size with unique dependencies: "796KB"
info Disk size with transitive dependencies: "796KB"
info Number of shared dependencies: 1
Done in 0.12s.
ESLint v5.16.0 使用 caret range ^1.0.1
which means it will use the latest version of esquery
provided the major version is still 1
. This was fine until esquery v1.1.0, since it supported Node.js v0.6 and above; but in v1.2.0, this was changed to v8 and above.
esquery
的依赖
由于这显然是一个重大更改,如果作者遵守 Semantic Versioning 2.0.0,他们应该将版本号提高到 v2.0.0 而不是 v1.2.0,但 README.md
是否表示它遵循 semver。
正确的解决方法是在 eslint
存储库上创建一个 PR,建议将版本范围从 ^1.0.1
更改为 1.1.x
(或 ~1.1
),但是现在,您可以尝试使用此 npm-shrinkwrap.json
,它指定了 1.1.0
版本的 esquery。
{
"name": "sonpminstall",
"version": "1.0.0",
"dependencies": {
"@babel/code-frame": {
"version": "7.8.3",
"from": "@babel/code-frame@>=7.0.0 <8.0.0",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz"
},
"@babel/helper-validator-identifier": {
"version": "7.9.0",
"from": "@babel/helper-validator-identifier@>=7.9.0 <8.0.0",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz"
},
"@babel/highlight": {
"version": "7.9.0",
"from": "@babel/highlight@>=7.8.3 <8.0.0",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz"
},
"acorn": {
"version": "6.4.1",
"from": "acorn@>=6.0.7 <7.0.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz"
},
"acorn-jsx": {
"version": "5.2.0",
"from": "acorn-jsx@>=5.0.0 <6.0.0",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz"
},
"ajv": {
"version": "6.12.0",
"from": "ajv@>=6.9.1 <7.0.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz"
},
"ansi-escapes": {
"version": "3.2.0",
"from": "ansi-escapes@>=3.2.0 <4.0.0",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz"
},
"ansi-regex": {
"version": "3.0.0",
"from": "ansi-regex@>=3.0.0 <4.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz"
},
"ansi-styles": {
"version": "3.2.1",
"from": "ansi-styles@>=3.2.1 <4.0.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz"
},
"argparse": {
"version": "1.0.10",
"from": "argparse@>=1.0.7 <2.0.0",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz"
},
"astral-regex": {
"version": "1.0.0",
"from": "astral-regex@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz"
},
"balanced-match": {
"version": "1.0.0",
"from": "balanced-match@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz"
},
"brace-expansion": {
"version": "1.1.11",
"from": "brace-expansion@>=1.1.7 <2.0.0",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
},
"callsites": {
"version": "3.1.0",
"from": "callsites@>=3.0.0 <4.0.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"
},
"chalk": {
"version": "2.4.2",
"from": "chalk@>=2.1.0 <3.0.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
},
"chardet": {
"version": "0.7.0",
"from": "chardet@>=0.7.0 <0.8.0",
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz"
},
"cli-cursor": {
"version": "2.1.0",
"from": "cli-cursor@>=2.1.0 <3.0.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz"
},
"cli-width": {
"version": "2.2.0",
"from": "cli-width@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz"
},
"color-convert": {
"version": "1.9.3",
"from": "color-convert@>=1.9.0 <2.0.0",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz"
},
"color-name": {
"version": "1.1.3",
"from": "color-name@1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
},
"concat-map": {
"version": "0.0.1",
"from": "concat-map@0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
},
"cross-spawn": {
"version": "6.0.5",
"from": "cross-spawn@>=6.0.5 <7.0.0",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz"
},
"debug": {
"version": "4.1.1",
"from": "debug@>=4.0.1 <5.0.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz"
},
"deep-is": {
"version": "0.1.3",
"from": "deep-is@>=0.1.3 <0.2.0",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz"
},
"doctrine": {
"version": "3.0.0",
"from": "doctrine@>=3.0.0 <4.0.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz"
},
"emoji-regex": {
"version": "7.0.3",
"from": "emoji-regex@>=7.0.1 <8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz"
},
"escape-string-regexp": {
"version": "1.0.5",
"from": "escape-string-regexp@>=1.0.5 <2.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
},
"eslint": {
"version": "5.16.0",
"from": "eslint@>=5.16.0 <6.0.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz"
},
"eslint-scope": {
"version": "4.0.3",
"from": "eslint-scope@>=4.0.3 <5.0.0",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz"
},
"eslint-utils": {
"version": "1.4.3",
"from": "eslint-utils@>=1.3.1 <2.0.0",
"resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz"
},
"eslint-visitor-keys": {
"version": "1.1.0",
"from": "eslint-visitor-keys@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz"
},
"espree": {
"version": "5.0.1",
"from": "espree@>=5.0.1 <6.0.0",
"resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz"
},
"esprima": {
"version": "4.0.1",
"from": "esprima@>=4.0.0 <5.0.0",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz"
},
"esquery": {
"version": "1.1.0",
"from": "esquery@>=1.0.1 <1.2.0",
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz",
"dependencies": {
"estraverse": {
"version": "4.0.0",
"from": "estraverse@>=4.0.0 <5.0.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.0.0.tgz"
}
}
},
"esrecurse": {
"version": "4.2.1",
"from": "esrecurse@>=4.1.0 <5.0.0",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz"
},
"estraverse": {
"version": "4.3.0",
"from": "estraverse@>=4.1.1 <5.0.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz"
},
"esutils": {
"version": "2.0.3",
"from": "esutils@>=2.0.2 <3.0.0",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
},
"external-editor": {
"version": "3.1.0",
"from": "external-editor@>=3.0.3 <4.0.0",
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz"
},
"fast-deep-equal": {
"version": "3.1.1",
"from": "fast-deep-equal@>=3.1.1 <4.0.0",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz"
},
"fast-json-stable-stringify": {
"version": "2.1.0",
"from": "fast-json-stable-stringify@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
},
"fast-levenshtein": {
"version": "2.0.6",
"from": "fast-levenshtein@>=2.0.6 <2.1.0",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
},
"figures": {
"version": "2.0.0",
"from": "figures@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz"
},
"file-entry-cache": {
"version": "5.0.1",
"from": "file-entry-cache@>=5.0.1 <6.0.0",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz"
},
"flat-cache": {
"version": "2.0.1",
"from": "flat-cache@>=2.0.1 <3.0.0",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz"
},
"flatted": {
"version": "2.0.1",
"from": "flatted@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz"
},
"fs.realpath": {
"version": "1.0.0",
"from": "fs.realpath@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
},
"functional-red-black-tree": {
"version": "1.0.1",
"from": "functional-red-black-tree@>=1.0.1 <2.0.0",
"resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz"
},
"glob": {
"version": "7.1.6",
"from": "glob@>=7.1.2 <8.0.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz"
},
"globals": {
"version": "11.12.0",
"from": "globals@>=11.7.0 <12.0.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz"
},
"has-flag": {
"version": "3.0.0",
"from": "has-flag@>=3.0.0 <4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz"
},
"iconv-lite": {
"version": "0.4.24",
"from": "iconv-lite@>=0.4.24 <0.5.0",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"
},
"ignore": {
"version": "4.0.6",
"from": "ignore@>=4.0.6 <5.0.0",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz"
},
"import-fresh": {
"version": "3.2.1",
"from": "import-fresh@>=3.0.0 <4.0.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz"
},
"imurmurhash": {
"version": "0.1.4",
"from": "imurmurhash@>=0.1.4 <0.2.0",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"
},
"inflight": {
"version": "1.0.6",
"from": "inflight@>=1.0.4 <2.0.0",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
},
"inherits": {
"version": "2.0.4",
"from": "inherits@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
},
"inquirer": {
"version": "6.5.2",
"from": "inquirer@>=6.2.2 <7.0.0",
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
"dependencies": {
"ansi-regex": {
"version": "4.1.0",
"from": "ansi-regex@>=4.1.0 <5.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz"
},
"strip-ansi": {
"version": "5.2.0",
"from": "strip-ansi@>=5.1.0 <6.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz"
}
}
},
"is-fullwidth-code-point": {
"version": "2.0.0",
"from": "is-fullwidth-code-point@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz"
},
"is-promise": {
"version": "2.1.0",
"from": "is-promise@>=2.1.0 <3.0.0",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz"
},
"isexe": {
"version": "2.0.0",
"from": "isexe@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
},
"js-tokens": {
"version": "4.0.0",
"from": "js-tokens@>=4.0.0 <5.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
},
"js-yaml": {
"version": "3.13.1",
"from": "js-yaml@>=3.13.0 <4.0.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz"
},
"json-schema-traverse": {
"version": "0.4.1",
"from": "json-schema-traverse@>=0.4.1 <0.5.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
},
"json-stable-stringify-without-jsonify": {
"version": "1.0.1",
"from": "json-stable-stringify-without-jsonify@>=1.0.1 <2.0.0",
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
},
"levn": {
"version": "0.3.0",
"from": "levn@>=0.3.0 <0.4.0",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz"
},
"lodash": {
"version": "4.17.15",
"from": "lodash@>=4.17.11 <5.0.0",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz"
},
"mimic-fn": {
"version": "1.2.0",
"from": "mimic-fn@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz"
},
"minimatch": {
"version": "3.0.4",
"from": "minimatch@>=3.0.4 <4.0.0",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz"
},
"minimist": {
"version": "1.2.5",
"from": "minimist@>=1.2.5 <2.0.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz"
},
"mkdirp": {
"version": "0.5.4",
"from": "mkdirp@>=0.5.1 <0.6.0",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz"
},
"ms": {
"version": "2.1.2",
"from": "ms@>=2.1.1 <3.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
},
"mute-stream": {
"version": "0.0.7",
"from": "mute-stream@0.0.7",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz"
},
"natural-compare": {
"version": "1.4.0",
"from": "natural-compare@>=1.4.0 <2.0.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
},
"nice-try": {
"version": "1.0.5",
"from": "nice-try@>=1.0.4 <2.0.0",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz"
},
"once": {
"version": "1.4.0",
"from": "once@>=1.3.0 <2.0.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
},
"onetime": {
"version": "2.0.1",
"from": "onetime@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz"
},
"optionator": {
"version": "0.8.3",
"from": "optionator@>=0.8.2 <0.9.0",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz"
},
"os-tmpdir": {
"version": "1.0.2",
"from": "os-tmpdir@>=1.0.2 <1.1.0",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz"
},
"parent-module": {
"version": "1.0.1",
"from": "parent-module@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
},
"path-is-absolute": {
"version": "1.0.1",
"from": "path-is-absolute@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
},
"path-is-inside": {
"version": "1.0.2",
"from": "path-is-inside@>=1.0.2 <2.0.0",
"resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz"
},
"path-key": {
"version": "2.0.1",
"from": "path-key@>=2.0.1 <3.0.0",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz"
},
"prelude-ls": {
"version": "1.1.2",
"from": "prelude-ls@>=1.1.2 <1.2.0",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz"
},
"progress": {
"version": "2.0.3",
"from": "progress@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz"
},
"punycode": {
"version": "2.1.1",
"from": "punycode@>=2.1.0 <3.0.0",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz"
},
"regexpp": {
"version": "2.0.1",
"from": "regexpp@>=2.0.1 <3.0.0",
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz"
},
"resolve-from": {
"version": "4.0.0",
"from": "resolve-from@>=4.0.0 <5.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
},
"restore-cursor": {
"version": "2.0.0",
"from": "restore-cursor@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz"
},
"rimraf": {
"version": "2.6.3",
"from": "rimraf@2.6.3",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz"
},
"run-async": {
"version": "2.4.0",
"from": "run-async@>=2.2.0 <3.0.0",
"resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz"
},
"rxjs": {
"version": "6.5.4",
"from": "rxjs@>=6.4.0 <7.0.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz"
},
"safer-buffer": {
"version": "2.1.2",
"from": "safer-buffer@>=2.1.2 <3.0.0",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
},
"semver": {
"version": "5.7.1",
"from": "semver@>=5.5.1 <6.0.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz"
},
"shebang-command": {
"version": "1.2.0",
"from": "shebang-command@>=1.2.0 <2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz"
},
"shebang-regex": {
"version": "1.0.0",
"from": "shebang-regex@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz"
},
"signal-exit": {
"version": "3.0.2",
"from": "signal-exit@>=3.0.2 <4.0.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz"
},
"slice-ansi": {
"version": "2.1.0",
"from": "slice-ansi@>=2.1.0 <3.0.0",
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz"
},
"sprintf-js": {
"version": "1.0.3",
"from": "sprintf-js@>=1.0.2 <1.1.0",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz"
},
"string-width": {
"version": "2.1.1",
"from": "string-width@>=2.1.0 <3.0.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz"
},
"strip-ansi": {
"version": "4.0.0",
"from": "strip-ansi@>=4.0.0 <5.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz"
},
"strip-json-comments": {
"version": "2.0.1",
"from": "strip-json-comments@>=2.0.1 <3.0.0",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz"
},
"supports-color": {
"version": "5.5.0",
"from": "supports-color@>=5.3.0 <6.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz"
},
"table": {
"version": "5.4.6",
"from": "table@>=5.2.3 <6.0.0",
"resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
"dependencies": {
"ansi-regex": {
"version": "4.1.0",
"from": "ansi-regex@>=4.1.0 <5.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz"
},
"string-width": {
"version": "3.1.0",
"from": "string-width@>=3.0.0 <4.0.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz"
},
"strip-ansi": {
"version": "5.2.0",
"from": "strip-ansi@>=5.1.0 <6.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz"
}
}
},
"text-table": {
"version": "0.2.0",
"from": "text-table@>=0.2.0 <0.3.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
},
"through": {
"version": "2.3.8",
"from": "through@>=2.3.6 <3.0.0",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz"
},
"tmp": {
"version": "0.0.33",
"from": "tmp@>=0.0.33 <0.0.34",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz"
},
"tslib": {
"version": "1.11.1",
"from": "tslib@>=1.9.0 <2.0.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz"
},
"type-check": {
"version": "0.3.2",
"from": "type-check@>=0.3.2 <0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz"
},
"uri-js": {
"version": "4.2.2",
"from": "uri-js@>=4.2.2 <5.0.0",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz"
},
"which": {
"version": "1.3.1",
"from": "which@>=1.2.9 <2.0.0",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz"
},
"word-wrap": {
"version": "1.2.3",
"from": "word-wrap@>=1.2.3 <1.3.0",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz"
},
"wrappy": {
"version": "1.0.2",
"from": "wrappy@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
},
"write": {
"version": "1.0.3",
"from": "write@1.0.3",
"resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz"
}
}
}
$ node -v
v6.17.1
$ npm -v
3.10.10
$ ls
npm-shrinkwrap.json package.json
$ npm install
...