npm update 不执行任何操作

npm update does not do anything

当我在 package.json 所在的应用程序文件夹中执行此代码时:

npm updatenpm update --save-dev 它什么都不做。

但是当我这样做时 npm outdated 显示了许多过时的包。

那么如何更新所有包?

OS: Win 10 x64
nodejs: 6.2.2
npm:3.10.7

package.json

{
  "name": "tgb-frontend",
  "version": "0.0.0",
  "license": "MIT",
  "angular-cli": {},
  "scripts": {
    "start": "ng serve",
    "lint": "tslint \"src/**/*.ts\"",
    "test": "ng test",
    "pree2e": "webdriver-manager update",
    "e2e": "protractor"
  },
  "private": true,
  "dependencies": {
    "@angular/common": "2.0.0",
    "@angular/compiler": "2.0.0",
    "@angular/core": "2.0.0",
    "@angular/forms": "2.0.0",
    "@angular/http": "2.0.0",
    "@angular/platform-browser": "2.0.0",
    "@angular/platform-browser-dynamic": "2.0.0",
    "@angular/router": "3.0.0",
    "core-js": "^2.4.1",
    "rxjs": "5.0.0-beta.12",
    "ts-helpers": "^1.1.1",
    "zone.js": "^0.6.23"
  },
  "devDependencies": {
    "@types/jasmine": "^2.2.30",
    "angular-cli": "1.0.0-beta.14",
    "codelyzer": "~0.0.26",
    "jasmine-core": "2.4.1",
    "jasmine-spec-reporter": "2.5.0",
    "karma": "1.2.0",
    "karma-chrome-launcher": "^2.0.0",
    "karma-cli": "^1.0.1",
    "karma-jasmine": "^1.0.2",
    "karma-remap-istanbul": "^0.2.1",
    "protractor": "4.0.5",
    "ts-node": "1.2.1",
    "tslint": "3.13.0",
    "typescript": "2.0.2"
  }
}

运行 npm update --dd 导致以下提取输出:

npm verb headers   'x-timer': 'S1475099110.490813,VS0,VE0',
npm verb headers   vary: 'Accept-Encoding' }
npm verb etag https://registry.npmjs.org/protractor from cache
npm verb get saving protractor to C:\Users\elisabeth\AppData\Roaming\npm-cache\registry.npmjs.org\protractor\.cache.json
npm verb correctMkdir C:\Users\elisabeth\AppData\Roaming\npm-cache correctMkdir already in flight; waiting
npm http 304 https://registry.npmjs.org/zone.js
npm verb headers { date: 'Wed, 28 Sep 2016 21:45:10 GMT',
npm verb headers   via: '1.1 varnish',
npm verb headers   'cache-control': 'max-age=300',
npm verb headers   etag: '"CEIBQS48U3970DBBLVY9BS6AW"',
npm verb headers   age: '128',
npm verb headers   connection: 'keep-alive',
npm verb headers   'x-served-by': 'cache-fra1222-FRA',
npm verb headers   'x-cache': 'HIT',
npm verb headers   'x-cache-hits': '1',
npm verb headers   'x-timer': 'S1475099110.490820,VS0,VE0',
npm verb headers   vary: 'Accept-Encoding' }
npm verb etag https://registry.npmjs.org/zone.js from cache
npm verb get saving zone.js to C:\Users\elisabeth\AppData\Roaming\npm-cache\registry.npmjs.org\zone.js\.cache.json
npm verb correctMkdir C:\Users\elisabeth\AppData\Roaming\npm-cache correctMkdir already in flight; waiting
npm http 304 https://registry.npmjs.org/karma-chrome-launcher
npm verb headers { date: 'Wed, 28 Sep 2016 21:45:10 GMT',
npm verb headers   via: '1.1 varnish',
npm verb headers   'cache-control': 'max-age=300',
npm verb headers   etag: '"4F85C0FZBMRDOTDFPHJMQZBM8"',
npm verb headers   age: '59',
npm verb headers   connection: 'keep-alive',
npm verb headers   'x-served-by': 'cache-fra1231-FRA',
npm verb headers   'x-cache': 'HIT',
npm verb headers   'x-cache-hits': '1',
npm verb headers   'x-timer': 'S1475099110.492537,VS0,VE0',
npm verb headers   vary: 'Accept-Encoding' }
npm verb etag https://registry.npmjs.org/karma-chrome-launcher from cache
npm verb get saving karma-chrome-launcher to C:\Users\elisabeth\AppData\Roaming\npm-cache\registry.npmjs.org\karma-chrome-launcher\.cache.json
npm verb correctMkdir C:\Users\elisabeth\AppData\Roaming\npm-cache correctMkdir already in flight; waiting
npm http 304 https://registry.npmjs.org/karma-remap-istanbul
npm verb headers { date: 'Wed, 28 Sep 2016 21:45:10 GMT',
npm verb headers   via: '1.1 varnish',
npm verb headers   'cache-control': 'max-age=300',
npm verb headers   etag: '"BYUZKVHQIHLVUT104GP509OFK"',
npm verb headers   age: '268',
npm verb headers   connection: 'keep-alive',
npm verb headers   'x-served-by': 'cache-fra1221-FRA',
npm verb headers   'x-cache': 'HIT',
npm verb headers   'x-cache-hits': '1',
npm verb headers   'x-timer': 'S1475099110.490957,VS0,VE0',
npm verb headers   vary: 'Accept-Encoding' }
npm verb etag https://registry.npmjs.org/karma-remap-istanbul from cache
npm verb get saving karma-remap-istanbul to C:\Users\elisabeth\AppData\Roaming\npm-cache\registry.npmjs.org\karma-remap-istanbul\.cache.json
npm verb correctMkdir C:\Users\elisabeth\AppData\Roaming\npm-cache correctMkdir already in flight; waiting
npm http 304 https://registry.npmjs.org/tslint
npm verb headers { date: 'Wed, 28 Sep 2016 21:45:10 GMT',
npm verb headers   via: '1.1 varnish',
npm verb headers   'cache-control': 'max-age=300',
npm verb headers   etag: '"CWO8LZOC4DK34K142T9LWM1RX"',
npm verb headers   age: '10',
npm verb headers   connection: 'keep-alive',
npm verb headers   'x-served-by': 'cache-fra1248-FRA',
npm verb headers   'x-cache': 'HIT',
npm verb headers   'x-cache-hits': '1',
npm verb headers   'x-timer': 'S1475099110.490976,VS0,VE0',
npm verb headers   vary: 'Accept-Encoding' }
npm verb etag https://registry.npmjs.org/tslint from cache
npm verb get saving tslint to C:\Users\elisabeth\AppData\Roaming\npm-cache\registry.npmjs.org\tslint\.cache.json
npm verb correctMkdir C:\Users\elisabeth\AppData\Roaming\npm-cache correctMkdir already in flight; waiting
npm http 304 https://registry.npmjs.org/jasmine-spec-reporter
npm verb headers { date: 'Wed, 28 Sep 2016 21:45:10 GMT',
npm verb headers   via: '1.1 varnish',
npm verb headers   'cache-control': 'max-age=300',
npm verb headers   etag: '"1TKJPMC6QAX7DTKI3RCPOWB33"',
npm verb headers   age: '59',
npm verb headers   connection: 'keep-alive',
npm verb headers   'x-served-by': 'cache-fra1235-FRA',
npm verb headers   'x-cache': 'HIT',
npm verb headers   'x-cache-hits': '1',
npm verb headers   'x-timer': 'S1475099110.496023,VS0,VE0',
npm verb headers   vary: 'Accept-Encoding' }
npm verb etag https://registry.npmjs.org/jasmine-spec-reporter from cache
npm verb get saving jasmine-spec-reporter to C:\Users\elisabeth\AppData\Roaming\npm-cache\registry.npmjs.org\jasmine-spec-reporter\.cache.json
npm verb correctMkdir C:\Users\elisabeth\AppData\Roaming\npm-cache correctMkdir already in flight; waiting
npm http 304 https://registry.npmjs.org/typescript
npm verb headers { date: 'Wed, 28 Sep 2016 21:45:10 GMT',
npm verb headers   via: '1.1 varnish',
npm verb headers   'cache-control': 'max-age=300',
npm verb headers   etag: '"BTWWBQ9R8BXMY0349REWK133W"',
npm verb headers   age: '252',
npm verb headers   connection: 'keep-alive',
npm verb headers   'x-served-by': 'cache-fra1227-FRA',
npm verb headers   'x-cache': 'HIT',
npm verb headers   'x-cache-hits': '9',
npm verb headers   'x-timer': 'S1475099110.501994,VS0,VE0',
npm verb headers   vary: 'Accept-Encoding' }
npm verb etag https://registry.npmjs.org/typescript from cache
npm verb get saving typescript to C:\Users\elisabeth\AppData\Roaming\npm-cache\registry.npmjs.org\typescript\.cache.json
npm verb correctMkdir C:\Users\elisabeth\AppData\Roaming\npm-cache correctMkdir already in flight; waiting
npm http 304 https://registry.npmjs.org/karma-jasmine
npm verb headers { date: 'Wed, 28 Sep 2016 21:45:10 GMT',
npm verb headers   via: '1.1 varnish',
npm verb headers   'cache-control': 'max-age=300',
npm verb headers   etag: '"36V4PLV1VKGDW8C5GXL8K8BVH"',
npm verb headers   age: '211',
npm verb headers   connection: 'keep-alive',
npm verb headers   'x-served-by': 'cache-fra1240-FRA',
npm verb headers   'x-cache': 'HIT',
npm verb headers   'x-cache-hits': '1',
npm verb headers   'x-timer': 'S1475099110.498463,VS0,VE0',
npm verb headers   vary: 'Accept-Encoding' }
npm verb etag https://registry.npmjs.org/karma-jasmine from cache
npm verb get saving karma-jasmine to C:\Users\elisabeth\AppData\Roaming\npm-cache\registry.npmjs.org\karma-jasmine\.cache.json
npm verb correctMkdir C:\Users\elisabeth\AppData\Roaming\npm-cache correctMkdir already in flight; waiting
npm http 304 https://registry.npmjs.org/karma
npm verb headers { date: 'Wed, 28 Sep 2016 21:45:10 GMT',
npm verb headers   via: '1.1 varnish',
npm verb headers   'cache-control': 'max-age=300',
npm verb headers   etag: '"9B0FRZQ5V9W9AIXWF98UVSM6C"',
npm verb headers   age: '97',
npm verb headers   connection: 'keep-alive',
npm verb headers   'x-served-by': 'cache-fra1224-FRA',
npm verb headers   'x-cache': 'HIT',
npm verb headers   'x-cache-hits': '1',
npm verb headers   'x-timer': 'S1475099110.501606,VS0,VE0',
npm verb headers   vary: 'Accept-Encoding' }
npm verb etag https://registry.npmjs.org/karma from cache
npm verb get saving karma to C:\Users\elisabeth\AppData\Roaming\npm-cache\registry.npmjs.org\karma\.cache.json
npm verb correctMkdir C:\Users\elisabeth\AppData\Roaming\npm-cache correctMkdir already in flight; waiting
npm http 200 https://registry.npmjs.org/karma-cli
npm verb headers { server: 'CouchDB/1.5.0 (Erlang OTP/R16B03)',
npm verb headers   etag: '"BZP1VT7P2AOLYBNMO7N10ESCI"',
npm verb headers   'content-type': 'application/json',
npm verb headers   'content-encoding': 'gzip',
npm verb headers   'cache-control': 'max-age=300',
npm verb headers   'content-length': '2902',
npm verb headers   'accept-ranges': 'bytes',
npm verb headers   date: 'Wed, 28 Sep 2016 21:45:10 GMT',
npm verb headers   via: '1.1 varnish',
npm verb headers   age: '56',
npm verb headers   connection: 'keep-alive',
npm verb headers   'x-served-by': 'cache-fra1233-FRA',
npm verb headers   'x-cache': 'HIT',
npm verb headers   'x-cache-hits': '1',
npm verb headers   'x-timer': 'S1475099110.496210,VS0,VE0',
npm verb headers   vary: 'Accept-Encoding' }
npm verb get saving karma-cli to C:\Users\elisabeth\AppData\Roaming\npm-cache\registry.npmjs.org\karma-cli\.cache.json
npm verb correctMkdir C:\Users\elisabeth\AppData\Roaming\npm-cache correctMkdir not in flight; initializing
npm http 304 https://registry.npmjs.org/@angular%2fforms
npm verb headers { date: 'Wed, 28 Sep 2016 21:45:10 GMT',
npm verb headers   via: '1.1 varnish',
npm verb headers   'cache-control': 'max-age=0',
npm verb headers   etag: '"EAEQ3H227F67DKL54RON412OW"',
npm verb headers   age: '0',
npm verb headers   connection: 'keep-alive',
npm verb headers   'x-served-by': 'cache-fra1238-FRA',
npm verb headers   'x-cache': 'MISS',
npm verb headers   'x-cache-hits': '0',
npm verb headers   'x-timer': 'S1475099110.485421,VS0,VE259',
npm verb headers   vary: 'Accept-Encoding' }
npm verb etag https://registry.npmjs.org/@angular%2fforms from cache
npm verb get saving @angular/forms to C:\Users\elisabeth\AppData\Roaming\npm-cache\registry.npmjs.org\_40angular_252fforms\.cache.json
npm verb correctMkdir C:\Users\elisabeth\AppData\Roaming\npm-cache correctMkdir not in flight; initializing
npm http 304 https://registry.npmjs.org/@angular%2fplatform-browser-dynamic
                                                                                            npm verb headers { 'cache-control': 'max-age=0',
npm verb headers   'accept-ranges': 'bytes',
npm verb headers   date: 'Wed, 28 Sep 2016 21:45:10 GMT',
npm verb headers   via: '1.1 varnish',
npm verb headers   connection: 'keep-alive',
npm verb headers   'x-served-by': 'cache-fra1250-FRA',
npm verb headers   'x-cache': 'MISS',
npm verb headers   'x-cache-hits': '0',
npm verb headers   'x-timer': 'S1475099110.475204,VS0,VE419',
npm verb headers   vary: 'Accept-Encoding' }
npm verb etag https://registry.npmjs.org/@angular%2fplatform-browser-dynamic from cache
npm verb get saving @angular/platform-browser-dynamic to C:\Users\elisabeth\AppData\Roaming\npm-cache\registry.npmjs.org\_40angular_252fplatform-browser-dynamic\.cache.json
npm verb correctMkdir C:\Users\elisabeth\AppData\Roaming\npm-cache correctMkdir not in flight; initializing
npm http 304 https://registry.npmjs.org/@angular%2fplatform-browser
                                                                                                          npm verb headers { date: 'Wed, 28 Sep 2016 21:45:10 GMT',
npm verb headers   via: '1.1 varnish',
npm verb headers   'cache-control': 'max-age=0',
                                                                                                                              npm verb headers   etag: '"6KULKVAP2JLLHXUR9G1MKEWBH"',
npm verb headers   age: '0',
npm verb headers   connection: 'keep-alive',
npm verb headers   'x-served-by': 'cache-fra1247-FRA',
npm verb headers   'x-cache': 'MISS',
npm verb headers   'x-cache-hits': '0',
npm verb headers   'x-timer': 'S1475099110.481265,VS0,VE428',
npm verb headers   vary: 'Accept-Encoding' }
npm verb etag https://registry.npmjs.org/@angular%2fplatform-browser from cache
npm verb get saving @angular/platform-browser to C:\Users\elisabeth\AppData\Roaming\npm-cache\registry.npmjs.org\_40angular_252fplatform-browser\.cache.json
npm verb correctMkdir C:\Users\elisabeth\AppData\Roaming\npm-cache correctMkdir not in flight; initializing
                                                                       [..................] | : verb correctMkdir C:\Users\elisabeth\AppData\Roaming\npm-cache correctMkdir not in npm http 304 https://registry.npmjs.org/@angular%2frouter
npm verb headers { date: 'Wed, 28 Sep 2016 21:45:10 GMT',
npm verb headers   via: '1.1 varnish',
npm verb headers   'cache-control': 'max-age=0',
npm verb headers   etag: '"E37EYJC1EI89JHFLMFG79P1B1"',
npm verb headers   age: '0',
npm verb headers   connection: 'keep-alive',
npm verb headers   'x-served-by': 'cache-fra1247-FRA',
npm verb headers   'x-cache': 'MISS',
npm verb headers   'x-cache-hits': '0',
npm verb headers   'x-timer': 'S1475099110.481239,VS0,VE452',
npm verb headers   vary: 'Accept-Encoding' }
npm verb etag https://registry.npmjs.org/@angular%2frouter from cache
npm verb get saving @angular/router to C:\Users\elisabeth\AppData\Roaming\npm-cache\registry.npmjs.org\_40angular_252frouter\.cache.json
npm verb correctMkdir C:\Users\elisabeth\AppData\Roaming\npm-cache correctMkdir not in flight; initializing
npm http 304 https://registry.npmjs.org/@types%2fjasmine
npm verb headers { date: 'Wed, 28 Sep 2016 21:45:10 GMT',
npm verb headers   via: '1.1 varnish',
npm verb headers   'cache-control': 'max-age=0',
npm verb headers   etag: '"5970JWNJE5EMJ1LQCUJLDE51A"',
npm verb headers   age: '0',
npm verb headers   connection: 'keep-alive',
npm verb headers   'x-served-by': 'cache-fra1249-FRA',
npm verb headers   'x-cache': 'MISS',
npm verb headers   'x-cache-hits': '0',
npm verb headers   'x-timer': 'S1475099110.480305,VS0,VE717',
npm verb headers   vary: 'Accept-Encoding' }
npm verb etag https://registry.npmjs.org/@types%2fjasmine from cache
npm verb get saving @types/jasmine to C:\Users\elisabeth\AppData\Roaming\npm-cache\registry.npmjs.org\_40types_252fjasmine\.cache.json
npm verb correctMkdir C:\Users\elisabeth\AppData\Roaming\npm-cache correctMkdir not in flight; initializing
npm http 304 https://registry.npmjs.org/@angular%2fcommon
npm verb headers { date: 'Wed, 28 Sep 2016 21:45:10 GMT',
npm verb headers   via: '1.1 varnish',
npm verb headers   'cache-control': 'max-age=0',
npm verb headers   etag: '"5T3TIRLH7GIKTLAUE8ASZODQP"',
npm verb headers   age: '0',
npm verb headers   connection: 'keep-alive',
npm verb headers   'x-served-by': 'cache-fra1237-FRA',
npm verb headers   'x-cache': 'MISS',
npm verb headers   'x-cache-hits': '0',
npm verb headers   'x-timer': 'S1475099110.478583,VS0,VE741',
npm verb headers   vary: 'Accept-Encoding' }
npm verb etag https://registry.npmjs.org/@angular%2fcommon from cache
npm verb get saving @angular/common to C:\Users\elisabeth\AppData\Roaming\npm-cache\registry.npmjs.org\_40angular_252fcommon\.cache.json
npm verb correctMkdir C:\Users\elisabeth\AppData\Roaming\npm-cache correctMkdir not in flight; initializing
npm http 304 https://registry.npmjs.org/@angular%2fcompiler
npm verb headers { date: 'Wed, 28 Sep 2016 21:45:10 GMT',
npm verb headers   via: '1.1 varnish',
npm verb headers   'cache-control': 'max-age=0',
npm verb headers   etag: '"7SNBRHEXD0EH21E7G01GBSPZ0"',
npm verb headers   age: '0',
npm verb headers   connection: 'keep-alive',
npm verb headers   'x-served-by': 'cache-fra1232-FRA',
npm verb headers   'x-cache': 'MISS',
npm verb headers   'x-cache-hits': '0',
npm verb headers   'x-timer': 'S1475099110.485587,VS0,VE764',
npm verb headers   vary: 'Accept-Encoding' }
npm verb etag https://registry.npmjs.org/@angular%2fcompiler from cache
npm verb get saving @angular/compiler to C:\Users\elisabeth\AppData\Roaming\npm-cache\registry.npmjs.org\_40angular_252fcompiler\.cache.json
npm verb correctMkdir C:\Users\elisabeth\AppData\Roaming\npm-cache correctMkdir not in flight; initializing
npm http 304 https://registry.npmjs.org/@angular%2fcore
npm verb headers { date: 'Wed, 28 Sep 2016 21:45:10 GMT',
npm verb headers   via: '1.1 varnish',
npm verb headers   'cache-control': 'max-age=0',
npm verb headers   etag: '"4J1XWC967WZ1FEYDRY04JS2DN"',
npm verb headers   age: '0',
npm verb headers   connection: 'keep-alive',
npm verb headers   'x-served-by': 'cache-fra1245-FRA',
npm verb headers   'x-cache': 'MISS',
npm verb headers   'x-cache-hits': '0',
npm verb headers   'x-timer': 'S1475099110.482388,VS0,VE783',
npm verb headers   vary: 'Accept-Encoding' }
npm verb etag https://registry.npmjs.org/@angular%2fcore from cache
npm verb get saving @angular/core to C:\Users\elisabeth\AppData\Roaming\npm-cache\registry.npmjs.org\_40angular_252fcore\.cache.json
npm verb correctMkdir C:\Users\elisabeth\AppData\Roaming\npm-cache correctMkdir not in flight; initializing
npm http 304 https://registry.npmjs.org/@angular%2fhttp
npm verb headers { 'cache-control': 'max-age=0',
npm verb headers   'accept-ranges': 'bytes',
npm verb headers   date: 'Wed, 28 Sep 2016 21:45:11 GMT',
npm verb headers   via: '1.1 varnish',
npm verb headers   connection: 'keep-alive',
npm verb headers   'x-served-by': 'cache-fra1230-FRA',
npm verb headers   'x-cache': 'MISS',
npm verb headers   'x-cache-hits': '0',
npm verb headers   'x-timer': 'S1475099110.484580,VS0,VE784',
npm verb headers   vary: 'Accept-Encoding' }
npm verb etag https://registry.npmjs.org/@angular%2fhttp from cache
npm verb get saving @angular/http to C:\Users\elisabeth\AppData\Roaming\npm-cache\registry.npmjs.org\_40angular_252fhttp\.cache.json
npm verb correctMkdir C:\Users\elisabeth\AppData\Roaming\npm-cache correctMkdir not in flight; initializing
npm verb outdated not updating @angular/common because it's currently at the maximum version that matches its specified semver range
npm verb outdated not updating @angular/compiler because it's currently at the maximum version that matches its specified semver range
npm verb outdated not updating @angular/core because it's currently at the maximum version that matches its specified semver range
npm verb outdated not updating @angular/forms because it's currently at the maximum version that matches its specified semver range
npm verb outdated not updating @angular/http because it's currently at the maximum version that matches its specified semver range
npm verb outdated not updating @angular/platform-browser because it's currently at the maximum version that matches its specified semver range
npm verb outdated not updating @angular/platform-browser-dynamic because it's currently at the maximum version that matches its specified semver range
npm verb outdated not updating @angular/router because it's currently at the maximum version that matches its specified semver range
npm verb outdated not updating angular-cli because it's currently at the maximum version that matches its specified semver range
npm verb outdated not updating codelyzer because it's currently at the maximum version that matches its specified semver range
npm verb outdated not updating jasmine-core because it's currently at the maximum version that matches its specified semver range
npm verb outdated not updating jasmine-spec-reporter because it's currently at the maximum version that matches its specified semver range
npm verb outdated not updating karma because it's currently at the maximum version that matches its specified semver range
npm verb outdated not updating protractor because it's currently at the maximum version that matches its specified semver range
npm verb outdated not updating ts-node because it's currently at the maximum version that matches its specified semver range
npm verb outdated not updating tslint because it's currently at the maximum version that matches its specified semver range
npm verb outdated not updating typescript because it's currently at the maximum version that matches its specified semver range
npm verb exit [ 0, true ]
npm info ok

npm update --dd 输出在最后说明原因:

...not updating @angular/common because it's currently at the maximum version that matches its specified semver range

看看这个具体的包,angular/common。您将其设置为 2.0.0,这意味着 npm 将始终获取该特定版本 。如果要更新包,则需要使用 semver 范围。您可以查看完整的 semver 范围列表 here,但最常用的可能是 ~^

~表示补丁版本会更新。所以如果你有版本 ~1.2.1,它会更新到任何 1.2.x,但永远不会更新到 1.3.0.

^ 更新次要版本,因此如果您有 ^1.2.1,它将更新到任何 1.x.x 版本,但永远不会更新到 2.0.0.

如果 npm [-g] outdated 显示 semver 范围 之外 的过时包(例如重大更新),update 命令 不能 用于更新这些包。

要安装最新版本,请明确指定包

npm install [-g] <package>

需要检查的另一件事是您的 .npmrc 文件,它可能会影响您安装软件包的方式并最终导致此问题。检查它是否有这样一行:

save-exact=true

如果是,则将其删除或将其设置为 false。当它设置为 true 时,您会得到以下行为:

Dependencies saved to package.json using --save, --save-dev or --save-optional will be configured with an exact version rather than using npm’s default semver range operator.

.npmrc and save-exact

当我刚接触 Node.js 时,我不知道以下内容。如果对你有帮助,我会分享。

npm 版本:

npm --version

请注意,以下还会检查 npm 版本:

npm --version <packagename> // package name argument is simply ignored

包版本:

npm list // at local directory to check local package versions
npm list -g // to check global package versions

更新步骤如下:

  1. 运行 npm outdated 将允许您检查所有需要更新的包。该列表将显示每个包的当前想要最新版本。

  2. 接下来,运行 npm update 将所有包更新到最新的 可能 版本,如 package.json.例如,如果 package.json 中的某个软件包的版本为 ^2.3.1,则此软件包将不会更新到 2.x.x[=53 之后=],如果包的版本为 ~5.3.2,那么它将不会更新到 5.3.x 之后。 (要理解语义版本控制,read this

  3. 但是,如果您想更新到最新版本,而 package.json 中的软件包版本阻止您按照上述步骤 2 进行更新怎么办?那么有两种解决方案。

    a) 您可以通过将软件包版本更改为您希望的最新值来手动更新 package.json 中的软件包版本。虽然这可能有效,但非常乏味且容易出错。 所以不推荐

    b) 您可以在 package.json 中自动更新软件包的版本。为此,您需要使用此命令安装 npm-check-updates 包(我通常在全局安装此包):npm i -g npm-check-updates。完成此操作后,您必须 运行 ncu -u。这只会将 package.json 中的软件包版本更新到最新版本。 我推荐这个方法。

  4. 现在,在 package.json、运行 npm update 中更新您的软件包版本后,您的软件包将更新到最新版本。

在 bash

上用一个 liner 将所有过时的软件包更新到最新版本
npm outdated | cut -d" " -f1 | tail -n +2 | sed 's/$/@latest/' | xargs npm i

如果您正在使用 ^~ 或在您的版本之前,那么您 cannot 将使用 npm update <package-name> 获得该软件包的下一个主要版本。 您可以使用 npm outdated 和 运行 npm install <package-name>@latest 检查过时的包裹,上面的一个班轮将为您完成所有这些工作

您可以强制更新所有包即使它使用现有包破坏语义版本控制

在重要项目中谨慎使用,在生产中绝对避免使用。

我发现这个快捷方式对个人项目很有用。

此包将更新 package.json 中的所有依赖版本,并使用以下安装命令安装它们。

npx npm-check-updates -u && npm i