Как изменить путь установки Bower для одного компонента

Я использую 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 у меня есть несколько файлов (eot, svg, ttf, woff), которые мне нужно иметь в папке /slick.js/fonts (а не только в папке /slick.js/).

Как мне это сделать? Я пытался указать специальный регистр для eot, svg, ttf и woff, но тогда это применяется ко всем компонентам. Кроме того, я не хочу вводить необходимость указывать все типы файлов (js, css и т. д.)... скорее хочу просто настроить специальный тип шрифта для slick.js. Возможно ли это сделать?


person nikib3ro    schedule 10.07.2015    source источник


Ответы (2)


Проблема заключается в том, что slick.js использует шаблон glob в своих bower.json main файловый массив, который не поддерживается...

Шарики типа js/*.js не допускаются.

Вы должны сделать следующее...

  1. Переопределите необходимые файлы для slick.js в файле bower.json (см. < em>Установка нескольких основных файлов и Настраиваемые пути)

    "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. Выполните этот запрос на включение.

person Phil    schedule 13.07.2015
comment
Как только я добавлю исходники: { slick.js: ... command bower-installer прекращает публикацию slick.js. Вы уверены, что это правильный формат? Я также пытался изменить bower.json из slick.js так, как вы сделали это в запросе на вытягивание, но все равно это не работает - он не создает правильную структуру папок. - person nikib3ro; 19.07.2015
comment
@ kape123 Я просто следил за документацией по установке Bower ~ github.com/ blittle/bower-installer#install-multiple-main-files. Похоже, вам нужно префикс пути к файлу с вашим каталогом установки Bower. Я обновлю свой ответ примером - person Phil; 20.07.2015
comment
да, когда я так ставлю, он копирует файлы. Но он снова помещает их все в один и тот же каталог - /bower_dist/slick.js/... он не создает каталог шрифтов для шрифтов. ;( - person nikib3ro; 20.07.2015
comment
@ kape123, тогда я думаю, вам нужно использовать настраиваемые пути - person Phil; 20.07.2015
comment
Это испортит все компоненты, чего я не хотел, как я объяснил в вопросе. Я даю вам награду, так как вы помогли, но я добавляю правильный ответ самостоятельно. Спасибо за вашу помощь! - person nikib3ro; 20.07.2015
comment
@ kape123 рад, что ты разобрался. Я не был уверен, что сопоставление путей файлового типа сработает для вас, но оно того стоило. Последним средством было бы сопоставление отдельных файлов, которое, похоже, вам нужно. - person Phil; 21.07.2015

Это оказалось сложнее, чем я думал:

"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, и теперь она называется slick-carousel в беседке — просто чтобы объяснить разницу в имени пакета.

person nikib3ro    schedule 20.07.2015