如何部署通过Bower安装的包?

4
我已经使用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的教程)。
感谢您的帮助!
1个回答

2
首先,我认为使用Bower的原因如下。
在“旧时代”,将特定的JavaScript库(比如jQuery)包含在应用程序中的方式是去jQuery网站,点击下载链接,然后将下载的.zip文件移动到项目目录中并解压缩。然后,您将添加一个包含该库的script标签。
现代包含JavaScript库的方式(仍以jQuery为例)是简单地运行bower install jquery --save,这将a)将jQuery添加到您的bower.json文件中,该文件列出了所有应用程序的依赖项,并且b)获取jQuery文件并将它们放在适当的位置。如果您正在使用称为injection的东西(您可能已经遇到过,也可能没有),则甚至不必担心script标记,因为这由构建系统处理。
(顺便说一句,我认为Bower受到了其他语言的软件包管理工具的启发,比如Ruby的RubyGems,在JavaScript世界中之前存在多年。您也可以看看这样的工具,这可能很有趣。)
其次,我将回答您有关部署的问题。
这取决于您要部署到哪里。我个人在所有生产环境中都使用Heroku。我不会将JavaScript供应商库检入Git,因为在版本控制中保留构建工件并不是一个好主意。相反,我只检查我的bower.json,Heroku能够检测到它。Heroku在生产中运行bower install,以拉取所有适当的库文件。这就是我的部署方式,尽管它并不是唯一的方式。
如果您想知道如何部署到特定平台,可能最好编辑此问题或创建一个包含有关部署环境的更多详细信息的单独问题。

我认为你回答了我的问题:实质上,整个bower_components结构也会存在于服务器上。顺便说一下,我曾经使用过RubyGems,现在当然也在使用NPM,但是虽然不上传“node_modules”并在服务器上运行“npm install”似乎很简单,但Bower却不是这样。 - zcserei
如果我理解正确的话,那么在包含视图中的某些文件时,我只需要指向我的 bower_components 目录就可以了吗? - zcserei

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接