Ожидается ли, что вызов "npm install" для пакета указанной c (более старой) версии останется неизменным со временем? - PullRequest
0 голосов
/ 24 марта 2020

Я использую более старую версию узла (6.17.1) и явно установил eslint@5.16.0, так как более новые версии eslint не работают с узлом 6. Это некоторое время работало без проблем.

Недавно при установке eslint@5.16.0 из пакета. json использование npm install больше не работает - теперь существует несовместимая зависимость, которая, как я полагаю, находится где-то в дереве зависимостей eslint.

У меня такой вопрос: ожидалось ли, что npm install на определенной c версии eslint будет работать вечно таким же образом? Или это нормально для npm пакетов (определенной версии c), когда какой-то пакет находится в глубине изменения дерева зависимостей, а затем нарушает эту указанную c версию первого пакета?

И Если это не может быть предотвращено, есть ли способ легко исправить это, как только сломается зависимость? Для этого предназначена пакетная блокировка? 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"}

Заранее спасибо!

1 Ответ

0 голосов
/ 24 марта 2020

Как вы уже заметили, для этого предназначен файл блокировки (package-lock.json для npm и yarn.lock для yarn). В противном случае npm будет искать последнюю версию пакета, которая удовлетворяет ограничениям, как для указанного вами пакета, так и для его зависимостей и их зависимостей и т. Д.

Однако package-lock.json был только представлен в npm v5 , и поэтому ваша текущая версия npm (v3.10.10) не будет иметь package-lock.json. Вместо этого вам нужно будет использовать npm shrinkwrap. Я бы посоветовал вам использовать yarn в будущем, если вы не сможете обновить свою версию Node.js.

По результатам вывода об ошибке кажется, что esquery требует движка версия 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 определяет зависимость от esquery с использованием диапазона каретки ^1.0.1, что означает, что он будет использовать последнюю версию esquery, при условии, что основной версией все еще будет 1. Это было хорошо до esquery v1.1.0, так как он поддерживал Node.js v0.6 и выше ; но в v1.2.0 это было изменено на v8 и выше .

Поскольку это, очевидно, серьезное изменение, если авторы придерживались Semanti c Версионирование 2.0.0 , им следовало бы увеличить номер версии до v2.0.0 вместо v1.2.0, но нигде в README.md не говорится, что он следует за semver.

Правильное исправление было бы создайте PR в репозитории eslint, предлагая изменить диапазон версий с ^1.0.1 на 1.1.x (или ~1.1), но сейчас вы можете попробовать использовать npm-shrinkwrap.json, который указывает версию 1.1.0 эсквери.

{
  "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
...
...