你如何比较npm
,bower
和volo
?
这三个都可以用于为UI项目安装JavaScript依赖项。我了解npm
是特定于节点的。
那么,什么时候使用什么呢?
npm
依然屹立遥远,但bower
并volo
似乎正好解决同样的问题,虽然我不是能画之间的线路npm
和bower-volo
。
你如何比较npm
,bower
和volo
?
这三个都可以用于为UI项目安装JavaScript依赖项。我了解npm
是特定于节点的。
那么,什么时候使用什么呢?
npm
依然屹立遥远,但bower
并volo
似乎正好解决同样的问题,虽然我不是能画之间的线路npm
和bower-volo
。
Bower与NPM相比,最大的优势是其依赖关系管理使用组件的单个版本来实施(而NPM通过将不同的副本/版本作为不同模块的子依赖项来工作)。这是一件非常好的事情,因为它可以防止需要包含多个不同版本组件的副本的客户端javascript变得肿。包含模块的多个副本是NPM依赖性管理工作方式的核心,因此NPM完全不适合客户端软件包管理。
上面的结果是,bower软件包的维护者和消费者必须更加谨慎地维护其依赖版本号以避免冲突,但这是值得付出的代价。而且我发现NPM模块在发行主要版本,次要版本和修补程序版本时通常都很草率,因此NPM依赖性管理也不是一件容易的事。
最能描述npm和bower区别的描述是:npm管理称为包的JavaScript模块,而Bower管理称为组件的前端组件(即css,html和JavaScript)。npm也用于安装凉亭。这是有关npm和bower(不涵盖volo)的广泛文章,其中涉及很多细节。
他们似乎正在解决相同的问题,但适用于不同的环境/世界。NPM用于nodejs和volo,用于浏览器的bower。
事实是,您还可以使用NPM来管理浏览器的javascript和CSS。没有什么可以阻止您这样做。从这种意义上说,使用NPM对我而言比必须为同一目的管理两个不同的工具更为自然。
看来凉亭有更多可用的软件包,至少对于更流行的软件包而言。但是很快jQuery也将直接在NPM中可用,可能所有其他库都将遵循相同的趋势。
在我看来,因为有一样的工具browserify和webmake在那里,在浏览器的帮助使用节点模块,没有了一个真正的需要凉亭或VOLO,除非他们提供的东西别人为你(一个特定的模块只存在于他们的注册表)。
Volo和Bower两者也都很好,但是从我的角度来看,如果您已经在使用NPM,则最好坚持使用它。
请注意,即使不使用browserify或webmake,也可以使用NPM来管理客户端依赖性。在我正在从事的大多数项目中,安装npm模块后,我会运行脚本将其部署到客户端应用程序使用它们的位置。有时我会用grunt将该文件与其他js文件连接起来,有时我会直接从Web应用程序的模板文件中引用它。无论如何,这是个人喜好。其他人可能会发现Bower或Volo更易于使用,因为它们更自然地适合其工作流程。
我知道这不在问题范围内,但还有另一种选择。Jam JS- http://jamjs.org/有趣的一件事是,它在jam中具有强大的功能:
Someone should make yet another package manager and name it: yapm :)