首页 > 解决方案 > 在 package.json 中使用“*”而不是某个版本的“~”、“^”库是一个好习惯吗?

问题描述

我通过了一门关于 Node.js 和 Angular 的学习课程。那里的老师在 package.json 中使用

很多星号而不是特定版本的库。

"dependencies": {
    "bcrypt": "*",
    "bcryptjs": "^2.4.3",
    "body-parser": "*",
    "cors": "*",
    "express": "*",
    "jsonwebtoken": "*",
    "mongoose": "*",
    "morgan": "^1.10.0",
    "passport": "*",
    "passport-jwt": "*"
  },
  "devDependencies": {
    "nodemon": "^2.0.7"
  }

使用它们是好还是坏?

标签: javascriptnpmversionpackage.json

解决方案


通配符是个坏主意。它说无论如何都要加载最新版本。听起来是个好主意,因此您不必不断更新。在他们将重大更改引入 api 之前,这很好。

如果他们从 v1.5 更新到 v2.0 并更改了他们的 api,那么如果它不向后兼容,则依赖于 1.5 语法的代码将不再适用于 v2.0。用多个包来做这件事,你手上会弄得一团糟。

有些人会允许次要版本为通配符,但大多数人将其锁定并手动升级,以便对其进行全面测试。

https://docs.npmjs.com/about-semantic-versioning


推荐阅读