七度&光
2012-09-18 14:07
采纳率: 22.2%
浏览 682

Npm 安装 vs 更新-有什么区别?

What is the practical difference between npm install and npm update? When should I use which?

转载于:https://stackoverflow.com/questions/12478679/npm-install-vs-update-whats-the-difference

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • lrony* 2013-11-06 22:26
    已采纳

    The difference between npm install and npm update handling of package versions specified in package.json:

    {
      "name":          "my-project",
      "version":       "1.0",                             // install   update
      "dependencies":  {                                  // ------------------
        "already-installed-versionless-module":  "*",     // ignores   "1.0" -> "1.1"
        "already-installed-semver-module":       "^1.4.3" // ignores   "1.4.3" -> "1.5.2"
        "already-installed-versioned-module":    "3.4.1"  // ignores   ignores
        "not-yet-installed-versionless-module":  "*",     // installs  installs
        "not-yet-installed-semver-module":       "^4.2.1" // installs  installs
        "not-yet-installed-versioned-module":    "2.7.8"  // installs  installs
      }
    }
    

    Summary: The only big difference is that an already installed module with fuzzy versioning ...

    • gets ignored by npm install
    • gets updated by npm update

    Additionally: install and update by default handle devDependencies differently

    • npm install will install/update devDependencies unless --production flag is added
    • npm update will ignore devDependencies unless --dev flag is added

    Why use npm install at all?

    Because npm install does more when you look besides handling your dependencies in package.json. As you can see in npm install you can ...

    • manually install node-modules
    • set them as global (which puts them in the shell's PATH) using npm install -g <name>
    • install certain versions described by git tags
    • install from a git url
    • force a reinstall with --force
    点赞 打赏 评论
  • 狐狸.fox 2012-09-18 15:15

    npm install installs all modules that are listed on package.json file and their dependencies.

    npm update updates all packages in the node_modules directory and their dependencies.

    npm install express installs only the express module and its dependencies.

    npm update express updates express module (starting with npm@2.x, it doesn't update its dependencies).

    So updates are for when you already have the module and wish to get the new version.

    点赞 打赏 评论
  • 衫裤跑路 2014-01-15 22:46

    In most cases, this will install the latest version of the module published on npm.

    npm install express --save
    

    or better to upgrade module to latest version use:

    npm install express@latest --save --force
    

    --save: Package will appear in your dependencies.

    More info: npm-install

    点赞 打赏 评论
  • Many distinctions have already been mentioned. Here is one more:

    Running npm install at the top of your source directory will run various scripts: prepublish, preinstall, install, postinstall. Depending on what these scripts do, a npm install may do considerably more work than just installing dependencies.

    I've just had a use case where prepublish would call make and the Makefile was designed to fetch dependencies if the package.json got updated. Calling npm install from within the Makefile would have lead to an infinite recursion, while calling npm update worked just fine, installing all dependencies so that the build could proceed even if make was called directly.

    点赞 打赏 评论

相关推荐 更多相似问题