@amorphine

Как gulp-ом извлечь из node_modules файлы, задекларированные в секции «main» файла bower.json?

Имеется задача подключить bxslider к проекту, причем по чужим идеологическим соображениям я не могу использовать bower.
Через npm install bxslider загружен, js-составляющая подключается через browserify и к вопросу отношения не имеет.
Необходимо через gulp извлечь задекларированные в bower.json некоторые файлы:

"dist/jquery.bxslider.css",
"dist/images/bx_loader.gif",
"dist/images/controls.png"

И положить их в папку assets/dist/bxslider. Наиболее простым решением мне показалось сделать так:
gulp.task('bxslider', function(){
    var bower = mainBowerFiles({
        paths: {
            bowerDirectory: 'node_modules',
            //bowerrc: '.bowerrc',
            bowerJson: 'node_modules/bxslider/bower.json'
        },
        overrides: {
            bxslider: {
                main: [
                    '**/images/*',
                    '**/jquery.bxslider.css'
                ]
            }
        }
    });

    return gulp.src(bower)
        .pipe(gulp.dest('assets/dist/bxlider'));
});


Если устанавливать пакет через bower install, этот прием срабатывает (пути, конечно, разные). Я получал нужные файлы разными способами через опции в mainBowerFiles() или переопределяя в корневом bower.json.
Однако bower install я сейчас использовать не могу и извлекая файлы из node_modules, наблюдаю какой-то баг: без фильтров единственный файл, который удается получить - jquery.js. То есть прилетает зависимость bxslider без нужных мне файлов.

Пожалуйста, укажите на ошибку. Или, если я занимаюсь ерундой, привлекая bower.json к задаче, которую можно решить менее ухабистым способом, посоветуйте, как лучше сделать.
  • Вопрос задан
  • 549 просмотров
Решения вопроса 1
@amorphine Автор вопроса
В общем, ничего лучше не придумал:

gulp.task('bxslider:images', function(){
    var images = "node_modules/bxslider/**/images/*";
    gulp.src(images)
        .pipe(flatten())
        .pipe(gulp.dest('assets/dist/bxlider/images'));
});


gulp.task('bxslider:css', function(){
    var css = "node_modules/bxslider/**/*.min.css";
    gulp.src(css)
        .pipe(flatten())
        .pipe(gulp.dest('assets/dist/bxlider/'));
});

gulp.task('bxslider', ['bxslider:images', 'bxslider:css']);


UPD. Ответ от разработчика :
then you have to set the config option includeSelf to true

И вопрос решен
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы