6

Java 有mavenivy可以从各种公共存储库中检索依赖的 jar。

Ruby 有更好的依赖检索工具:gem 和 bundle。

Javascript 社区是否有任何等效工具?我找到了许多工具来管理将依赖项动态加载到浏览器中。我不是在寻找那些工具。

具体来说,我正在寻找一个新开发人员用来检索他们需要的 javascript 文件的工具。开发人员运行此工具并:

  1. 它查看项目依赖描述文件
  2. 发现项目需要jquery-ui-1.8.7、tiny_mce-3.4.3.2和prettyLoader-1.0.1
  3. 从网络检索 jquery-ui-1.8.7.min.js、prettyLoader-1.0.1.js、tiny_mce-3.4.3.2
  4. 将 .js 和 .css 安装到本地存储库中
  5. 意识到 jquery-ui 依赖 jquery-1.6.1 并下载/安装 jquery
  6. 确定 tiny_mce 需要 jquery 插件,并下载并安装它。

毕竟,开发人员拥有所需的所有 js/css 文件的本地副本。

如果出现新的 tiny_mce 或 jquery,项目文件会更新,开发人员只需返回工具即可获得所有新文件。

如果没有指定 js 库的版本,则检索最新的发布版本。


我刚才描述的是 maven/ivy/gem 在 java/ruby 空间中所做的事情。

显然,我可以使用 maven 来满足我自己的需要,但是 javascript 社区是否已经准备好了任何东西?

更新:

Raynos 提到了npm 。Npm 以 node.js 为中心(没关系)。但是,公共存储库中的已发布库和元数据有限(版本、作者、项目 url 因容易发现而丢失)。

但是,看起来 npm 是今天的解决方案。不幸的是,这对我们来说还不够,但这就是生活。

我实际上很惊讶 jquery 或 google-closure 没有项目管理工具。(如果我错了,请告诉我!)

更新:现在流星已经与陨石一起访问和更新大气库。厉害了。

4

4 回答 4

5

看起来 twitter 提供了一个答案:

参看。https://github.com/twitter/bower#readme

Bower(使用 Node 和 npm)是 web 的包管理器。Bower 可让您轻松安装图像、CSS 和 JavaScript 等资产,并为您管理依赖项。

Bower 是一个通用工具,它将解决依赖关系并将包锁定到一个版本。它在 Git 上运行,并且与包无关。一个包可能包含 JavaScript、CSS、图像等,并且不依赖于任何特定的传输(AMD、CommonJS 等)。

Bower 然后提供了一个简单的编程 API,它公开了包依赖模型,以便现有的构建工具(如 Sprockets、LoadBuilder、curls.js、Ender 等)可以使用它并相应地构建文件。

于 2012-09-12T08:53:58.680 回答
3

这取决于您的服务器端堆栈。服务器端堆栈的大多数依赖项/包管理器也处理基于 javascript 的依赖项。

npm是 node.js 依赖管理器。它很受欢迎。

它基于 CommonJS package.json格式。

有一些动作可以将其移植到客户端,例如:

你不能单独使用 JavaScript 来做到这一点,因为它没有 IO。甚至 ender 的命令行工具也依赖于安装的 npm。您应该只使用服务器端堆栈附带的任何工具

于 2011-07-27T18:40:09.863 回答
0

Maven Javascript 工具项目自动折叠在 Maven Javascript 导入插件中。后一个插件为 JavaScript 带来了 Maven 依赖管理的世界。

http://mojo.codehaus.org/javascript-maven-tools/

于 2012-03-31T04:14:33.933 回答
0

一个结合 npm 和 maven 的新项目是:https ://blogs.mulesoft.com/dev/mule-dev/introducing-the-npm-maven-plugin/

一个非常干净的集成:

<plugin>
    <groupId>org.mule.tools.javascript</groupId>
    <artifactId>npm-maven-plugin</artifactId>
    <version>1.0</version>
    <executions>
         <execution>
             <phase>generate-sources</phase>
             <goals>
                 <goal>fetch-modules</goal>
             </goals>
             <configuration>
                 <packages>
                     <package>colors:0.5.1</package>
                     <package>jshint:0.8.1</package>
                 </packages>
             </configuration>
         </execution>
    </executions>
</plugin>
于 2013-09-26T21:37:15.283 回答