如何更改一个组件的 bower-installer 路径

How to change bower-installer path for one component

我正在使用 bower-installer 将我需要的文件从 bower_components 文件夹复制到 bower_dist 文件夹。这是 bower.json 文件的相关部分:

"install": {
    "path": "bower_dist"
},
"dependencies": {
    "jquery": "~2.1.4",
    "bootstrap": "~3.3.4",
    "slick.js": "~1.5.5"
},

现在正在创建 bower_dist 文件夹,并在其中为每个组件创建文件夹。问题是,在 slick.js 组件中,我需要在 /slick.js/fonts 文件夹(而不仅仅是 /slick.js/ 文件夹)中包含的文件(eot、svg、ttf、woff)很少。

我该怎么做?我已经尝试为 eot、svg、ttf 和 woff 指定特殊情况,但随后会应用于所有组件。另外,我不想介绍需要指定所有文件类型(js、css 等)...而只想为 slick.js 配置特殊字体类型。这可能吗?

这里的问题似乎是 slick.js 在他们的 bower.json main file array which is not supported...

中使用了 glob 模式

Globs like js/*.js are not allowed.

您应该执行以下操作...

  1. 在您的 bower.json 文件中覆盖 slick.js 所需的文件(参见 Install multiple main files and Configurable paths

    "install": {
        "base": "bower_dist",
        "path": {
            "js": "{name}",
            "css": "{name}",
            "eot": "{name}/fonts",
            "svg": "{name}/fonts",
            "ttf": "{name}/fonts",
            "woff": "{name}/fonts"
        },
        "sources": {
            "slick.js": [
                "bower_components/slick.js/slick/slick.min.js",
                "bower_components/slick.js/slick/slick.css",
                "bower_components/slick.js/slick/slick-theme.css",
                "bower_components/slick.js/slick/fonts/slick.eot",
                "bower_components/slick.js/slick/fonts/slick.svg",
                "bower_components/slick.js/slick/fonts/slick.ttf",
                "bower_components/slick.js/slick/fonts/slick.woff"
            ]
        }
    }
    

    bower_components 代替你的 bower 安装目录。

  2. 关注this pull request.

事实证明这比我想象的要难:

"install": {
    "path": "bower_dist",
    "sources": {
        "slick-carousel": {
            "mapping": [
                { "bower_components/slick-carousel/slick/slick.min.js": "slick.min.js" },
                { "bower_components/slick-carousel/slick/slick.css": "slick.css" },
                { "bower_components/slick-carousel/slick/slick-theme.css": "slick-theme.css" },
                { "bower_components/slick-carousel/slick/ajax-loader.gif": "ajax-loader.gif" },
                { "bower_components/slick-carousel/slick/fonts/slick.eot": "fonts/slick.eot" },
                { "bower_components/slick-carousel/slick/fonts/slick.svg": "fonts/slick.svg" },
                { "bower_components/slick-carousel/slick/fonts/slick.ttf": "fonts/slick.ttf" },
                { "bower_components/slick-carousel/slick/fonts/slick.woff": "fonts/slick.woff" }
            ]
        }
    }
},

我已经升级到 slick.js 的新版本,现在它在 bower 中称为 slick-carousel - 只是为了解释包名称的差异。