一尘不染

Bower 和 npm 有什么区别?

javascript

bower和之间的根本区别是什么npm?只想要简单明了的东西。我见过我的一些同事在他们的项目中使用bowernpm互换。


阅读 156

收藏
2022-02-15

共1个答案

一尘不染

所有包管理器都有很多缺点。你只需要选择你可以忍受的。

历史

npm开始管理 node.js 模块(这就是默认情况下包进入的原因),但是当与Browserifywebpacknode_modules结合使用时,它也适用于前端。

Bower是专门为前端创建的,并为此进行了优化。

回购规模

npm 比 bower 大得多,包括通用 JavaScript(例如country-data用于国家信息或sorts可用于前端或后端的排序功能)。

Bower 的包裹数量要少得多。

样式处理等

Bower 包括样式等。

npm 专注于 JavaScript。样式可以单独下载,也可以通过类似npm-sasssass-npm.

依赖处理

最大的不同是 npm 做了嵌套依赖(但默认是扁平的),而 Bower 需要扁平的依赖树(将依赖解析的负担放在用户身上)

嵌套的依赖树意味着你的依赖可以有自己的依赖,也可以有自己的依赖,依此类推。这允许两个模块需要相同依赖项的不同版本并且仍然可以工作。注意,从 npm v3 开始,依赖树默认是扁平的(节省空间)并且只在需要的地方嵌套,例如,如果两个依赖项需要它们自己的 Underscore 版本。

一些项目同时使用两者:他们使用 Bower 作为前端包,使用 npm 作为开发工具,如 Yeoman、Grunt、Gulp、JSHint、CoffeeScript 等。

2022-02-15