Php 如何将gulp.js这样的构建系统与bower这样的依赖关系管理器一起使用

Php 如何将gulp.js这样的构建系统与bower这样的依赖关系管理器一起使用,php,gruntjs,composer-php,bower,gulp,Php,Gruntjs,Composer Php,Bower,Gulp,多年来,我一直是一名差劲的普通PHP开发人员,后来我决定提高自己的水平,学习更多关于开发web应用程序的现代工作流和最佳实践的知识 我已经研究了任务运行器、依赖关系管理器、git和云服务器。我在一台个人电脑上工作,我已经决定解决这个问题 用于前端工作的PHP和Bootstrap 3 MYSQL(对于我所需要的东西,NoSQL似乎有些过头了) AppFog用于云托管,git用于存储库控制 用于任务自动化的gulp.js——它似乎比用于PHP项目的grunt简单得多 依赖项管理的bower或com

多年来,我一直是一名差劲的普通PHP开发人员,后来我决定提高自己的水平,学习更多关于开发web应用程序的现代工作流和最佳实践的知识

我已经研究了任务运行器、依赖关系管理器、git和云服务器。我在一台个人电脑上工作,我已经决定解决这个问题

  • 用于前端工作的PHP和Bootstrap 3
  • MYSQL(对于我所需要的东西,NoSQL似乎有些过头了)
  • AppFog用于云托管,git用于存储库控制
  • 用于任务自动化的gulp.js——它似乎比用于PHP项目的grunt简单得多
  • 依赖项管理的bower或composer(仍然无法决定)
我使用了这里的一些答案来解决如何更改位置bower,例如,放置它下载的文件,但我很难理解当您使用依赖关系管理器(似乎下载了整个git repo)和任务运行器时,最佳做法是什么

例如,我可以告诉bower将jquery或bootstrap下载到src/vendor文件夹中,但下载的是javascript、css和其他文件的混合。我可以把它们放在那里,并在代码中引用它们,但是运行一个吞咽过程会涉及到挑选单个文件并逐个最小化或连接,避免文件夹中我不需要的所有其他内容


这是处理这个问题的最佳实践,还是我在错误的球场。我是否应该将任务运行程序与依赖项管理器一起使用?

看看globbing in Gulp。您应该能够分别使用
gulp.src('src/vendor/***.CSS')
gulp.src('src/vendor/***.JS')
来选择CSS和JS


或者,快速搜索NPM会返回一些有用的信息:

好的,首先,我们来谈谈作曲家和鲍尔。这并不是一种或另一种东西——更重要的是你会把它们一起使用。您可以使用composer来管理PHP依赖项(例如),使用bower来管理客户端依赖项,例如,或者类似的东西

就bower依赖项和拉入依赖项而言,一种方法是结合使用。这将读取您的
bower.json
文件,并基于此将bower依赖项拉入脚本。如果某些bower依赖项在
bower.json
中没有
main
属性(有些没有),那么
bower主文件在默认情况下将不会拾取它们…但是-您可以通过在自己的
bower.json
文件中提供覆盖来解决此问题,如下所示:

{
  "name": "My Project",
  "version": "1.0.0",
  "dependencies": {
    "autogrow": "https://github.com/ultimatedelman/autogrow.git#master",
    "jquery": "1.12.2",
    "jquery-slimscroll": "^1.3.7"
  },
  "overrides": {
    "jquery-slimscroll": {
      "main": [
        "./jquery.slimscroll.js"
      ]
    }
  }
}
正如您可能已经注意到的,您也可以将鲍尔指向github回购和分支机构

然后,您可以使用实际的
主bower文件
包本身来执行以下任务:

var gulp = require("gulp"),
    reload = require("browser-sync").reload,
    mainBowerFiles = require("main-bower-files")
    $ = require("gulp-load-plugins")({
        camelize: true
    });
gulp.task("vendorScripts", function() {
    return gulp.src(mainBowerFiles({filter: '*.js'}))
        .pipe($.plumber({
            errorHandler: c.onError
        }))
        .pipe($.concat(c.concatVendorCSSFile))
        .pipe(gulp.dest('assets/styles'))
        .pipe(reload({stream: true, once: true}))
        .pipe($.size({title: "vendorScripts"}));
});

如果您感兴趣,我有一个完整的项目,包括所有这些设置

谢谢Daryll。我现在做的是开发web应用程序的常见做法吗?奇怪的是,这个解决方案并不明显,或者在我遵循的任何教程中都不明显?这在最近似乎相当普遍。就个人而言,我不使用依赖性管理器,但我确实使用Gulp、PHP、MySQL和Bitbucket进行版本控制。由于没有真正了解Bower,我无法在如何安排一切方面帮助太多,下面的两个链接可能会有所帮助:@thatguy-接下来说,您现在可能应该使用Webpack和npm。这比你我用大口大口喝能做的任何事都要好得多。。