【问题标题】:Include libraries with Composer, NPM or Bower包含 Composer、NPM 或 Bower 的库
【发布时间】:2015-07-26 03:11:44
【问题描述】:

我最近接触了 Composer、NPM 和 Bower。我没有,他们的能力之间有很多重叠,我想知道我的方法是否合理?如果没有,我该怎么办?

我通常通过设置 composer 来加载我的 PHP 库和依赖项来启动我的 PHP 项目。之后我使用 NPM 安装 Gulp 和我使用的所有 gulp 插件。最后我使用 Bower 来获取 JS 和 CSS 库。

其中大部分都可以从 GitHub 加载,所以理论上我可以使用 Composer 安装我的 JS/CSS 或 Bower 来加载我的 PHP。我非常喜欢 Composer 的自动加载功能,所以我想我的问题是我是否应该抛弃 Bower?

目前,当我部署时,我检查我的 repo 并调用 npm install 来安装 Gulp 等。在我的 package.json 中,我使用 "scripts": {"install": "gulp install"} 在我的 install 中启动我的 install 任务gulpfile.js。这会加载到启动 Composer 和 Bower 安装的 gulp-composergulp-bower 插件中。

【问题讨论】:

  • 你可以用composer-asset-plugin替换npm/bower。
  • @TomášVotruba 有趣的选项。我在一个测试项目上尝试过,但我无法让 Gulp 正确安装。我确实使用 Gulp 来自动安装 Composer 和 Bower 依赖项,但我也将它用于图像处理等许多其他事情,所以 Gulp 是必须的。

标签: php npm composer-php gulp bower


【解决方案1】:

它们的作用几乎相同,不同之处在于它们的默认包列表(NPM 纯 NodeJS,Composer 主要是 PHP,Bower 纯 js/css 等)和它们编写的语言。

但是,它们都有一个限制:它们只能在一个位置安装软件包。这意味着您不能在vendor/ 中安装some/php-framework 和在web/ 中安装my-css-framework

位置非常重要:您通常希望您的 PHP 代码/NodeJS 库位于公共根目录之外,但您的资产应该位于公共根目录内。

我认为这是一个非常好的做法,如果你也可以的话,将每个依赖管理器用于它所设计的语言(例如,Composer 还执行一些 PHP 特定的东西,例如自动加载,而 NPM 执行一些 NodeJS 特定的东西)。

【讨论】:

  • 你也不想公开bower_components。这就是为什么我们使用 gulp 或其他工具将组件从该目录中拉出,可能会压缩和连接它们,然后将它们移动到公共目录中。位置根本不是很重要。由于自动加载,他已经选择了 Composer,但你确实提出了一个关于 NPM 的好观点——有时npm install 不仅仅是下载少量文件,它编译特定于平台的库。对于那个 AFAIK,你真的无法摆脱 npm。
猜你喜欢
  • 1970-01-01
  • 2014-05-20
  • 2014-08-07
  • 2018-10-24
  • 2018-02-26
  • 2016-04-24
  • 2014-09-10
  • 2014-10-26
  • 1970-01-01
相关资源
最近更新 更多