javascript - 在 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"
}
使用它们是好还是坏?
解决方案
通配符是个坏主意。它说无论如何都要加载最新版本。听起来是个好主意,因此您不必不断更新。在他们将重大更改引入 api 之前,这很好。
如果他们从 v1.5 更新到 v2.0 并更改了他们的 api,那么如果它不向后兼容,则依赖于 1.5 语法的代码将不再适用于 v2.0。用多个包来做这件事,你手上会弄得一团糟。
有些人会允许次要版本为通配符,但大多数人将其锁定并手动升级,以便对其进行全面测试。
推荐阅读
- c# - .Net Core 应用程序使用错误的凭据连接到 SQL 服务器
- db2 - 为什么`FOR ALL ENTRIES` 会降低 DB6 上 CDS 视图的性能?
- firebase - Perl 中的推送通知
- angular-dart - Angular-dart:库页面加载器总是会破坏项目中的依赖关系。如何解决?
- mysql - 如何加入和生成按名称搜索的表
- php - php while循环中的动态div关闭
- web-services - 如何在 Tomcat 8 中部署 HTML 文件和 Web 应用程序?
- python - 鼠标 X 、 Y 坐标和该坐标处的持续时间
- python - 使用 Boto3 将 Amazon Translate 输出保存到 .txt 文件
- c# - 如何提高在两个窗口中完成的 wpf GUI 主线程的性能