如何部署 Bower 安装的包?

How to deploy packages installed by Bower?

我已经使用 Bower 安装了一些包,但我不知道如何部署它们。

例如,我的第一个想法是创建一个 Gulp 任务来连接它们 - 我用我的 angular 包做到了这一点:

gulp.task('libs', function () {
    'use strict';
    return gulp
        .src([
            './public/assets/libs/angular/angular.min.js',
            './public/assets/libs/angular-animate/angular-animate.min.js',
            './public/assets/libs/angular-routes/angular-route.min.js'
        ])
        .pipe(concat('libs.js'))
        .pipe(uglify())
        .pipe(gulp.dest('public/dist'));
});

然而,虽然上面的这些包非常简单,但其他一些包(准确地说是 Bootstrap 和 jQuery)附带了我不需要的源代码。我应该只将 bootstrap.min.cssjquery.min.js 复制到我的 dist 文件夹吗?

坦率地说,我可以只包含来自 CDN 的所有这些文件,我还不明白为什么我会使用 Bower(我一直在学习使用 Bower 的教程)。

感谢您的帮助!

首先,在我看来,这是使用 Bower 的原因。

在 "the old days" 中,在您的应用程序中包含特定 JavaScript 库(比方说 jQuery)的方法是转到 jQuery 网站,单击下载 link,并将下载的 .zip 文件移动到您的项目目录中并解压缩。然后您将添加一个包含库的 script 标签。

包含 JavaScript 库的 "modern" 方法(仍然以 jQuery 为例)是简单地 运行 bower install jquery --save,这将是一个) 将 jQuery 添加到您的 bower.json 文件,该文件列出了您的所有应用程序的依赖项,并且 b) 获取 jQuery 文件并将它们放在适当的位置。如果您正在使用称为注入的东西,您可能已经遇到也可能没有遇到过,您甚至不必担心 script 标记,因为这由您的构建系统处理。

(顺便说一下,我认为 Bower 的灵感来自其他语言的包管理工具,例如 RubyGems for Ruby,我知道它在 JavaScript 世界。您也可以看看类似的工具。)

其次,我会回答你关于部署的问题。

这取决于您的部署位置。我个人在所有生产环境中都使用 Heroku。我没有将我的 JavaScript 供应商库检查到 Git 中,因为在版本控制中保留构建工件不是一个好主意。相反,我只是检查 Heroku 能够检测到的 bower.json。 Heroku 运行 在生产环境中 bower install 引入了所有合适的库文件。这就是我的部署方式,尽管这不是唯一的方式。

如果您想知道如何部署到特定平台,最好编辑此问题或创建一个包含有关您的部署环境的更多详细信息的单独问题。