24

有没有办法让 bower 在从 GitHub 克隆后运行包 grunt?

我正在尝试使用 Bower,但我正在使用的包之一是 Bootstrap 扩展,x-editable。问题是,当其他包将完全构建的版本推送到 github 时,当由 Bower 安装时,你有一个构建版本 x-editable 期望你运行一个 grunt 文件来构建包。

这是其他包管理器(如 npm)的常见做法,但我可以找到如何让 Bower 在安装时构建它。这意味着我需要另一种机制来完成包的安装。

4

3 回答 3

23

基于安装构建是一种反模式,强烈建议不要在 Node.js 中使用。像 Node 一样,Bower 包应该是预先构建的。这是因为最终用户不必关心软件包需要什么预处理器或构建系统。

您最好的选择是说服作者预先构建、分叉并自己完成,或者在安装组件后手动构建。

Bower 团队计划添加将包发布到服务器的功能,类似于它在 npm 中的工作方式。这对于需要构建步骤的包来说会更好。

于 2013-06-18T20:20:06.470 回答
4

bower 中有 3 个钩子,如果由于某种原因您不能像 @Sindre Sorhus 指出的那样预先构建,postinstall 可能会解决您的问题。

在 .bowerrc 中:

{
    "scripts": {
        "preinstall": "<your command here>",
        "postinstall": "<your command here>",
        "preuninstall": "<your command here>"
    }
}

来源https://github.com/bower/bower/blob/master/HOOKS.md

于 2014-09-22T16:04:12.763 回答
-2

您可以使用 composer 来处理安装后:

bower.json:

{
    "dependencies": {
        "bootstrap": "*"
    }
}

作曲家.json:

{
    "scripts" : {
        "post-install-cmd" : [
            "bower install --no-color",
            "lessc bower_components/bootstrap/less/bootstrap.less public/script/bootstrap.css"
        ]
    }
}

然后我运行composer install

Loading composer repositories with package information
Installing dependencies (including require-dev)
Nothing to install or update
Generating autoload files
bower warn Package bootstrap is still using the deprecated "component.json" file
bower cloning git://github.com/twitter/bootstrap.git
bower cached git://github.com/twitter/bootstrap.git
bower fetching bootstrap
bower checking out bootstrap#v2.3.2
bower warn Package jquery is still using the deprecated "component.json" file
bower copying C:\Users\renadm\AppData\Roaming\bower\cache\bootstrap\9d49e0aedf207bebd028e26cc86a9e58
bower cloning git://github.com/components/jquery.git
bower cached git://github.com/components/jquery.git
bower fetching jquery
bower checking out jquery#1.8.3
bower copying C:\Users\renadm\AppData\Roaming\bower\cache\jquery\29cb4373d29144ca260ac7c3997f4381
bower installing bootstrap#2.3.2
bower installing jquery#1.8.3

Bower 完成安装后,LESS 编译器会处理 .less 文件并将 nicebootstrap.css放入我的公用文件夹中。可以使用 Closure Compiler 对 JavaScript 文件执行类似的操作。

于 2013-07-12T09:23:22.797 回答