Gulp-cdnizer - не заменяет ссылки на источники

Я пытаюсь заставить работать gulp-cdnizer, но все, что он делает, это берет файл и выплевывает необработанный файл в папку назначения. Возможно, мои настройки параметров неверны или задание gulp не работает. Как настроить gulp-cdnizer для работы с пользовательским путем bower_components?

Задание глотка:

gulp.task('makeCdn', function () {

    return gulp.src('./app/**/*.html')
        .pipe(cdnizer({
            bowerComponents: './vendor/bower_components',
            allowRev: true,
            allowMin: true,
                files: [
                    {
                        file: '/vendor/bower_components/angular/angular.js',
                        package: 'angular',
                        // angular has a bizarre version string inside bower, with extra information.
                        // using major.minor.patch directly ensures it works with the CDN
                        cdn: '//ajax.googleapis.com/ajax/libs/angularjs/${ major }.${ minor }.${ patch }/angular.min.js'
                    }
                ]
            })
            .pipe(gulp.dest('./dist/'))
        );

});

HTML-файл './app/test/test.html' :

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
    </head>
    <body>

        <script src="/vendor/bower_components/angular/angular.js"></script>
        <script src="/vendor/bower_components/bootstrap/dist/js/bootstrap.js"></script>

    </body>
</html>

Структура папки:

Структура папок

Что нужно сделать, чтобы заставить gulp-cdnizer работать?

1 ответ

Решение

Оказывается, у вас есть несколько опечаток в вашем файле gulpfile. У вас есть все, завернутый в первый gulp.src().pipe(), а не быть прикованным

Если вы удалите аргументы и пробелы, вы увидите, что у вас есть это:

return gulp.src(...)
    .pipe(
        cdnizer(...).pipe(gulp.dest(...))
    );

Когда это должно быть:

return gulp.src(...)
   .pipe(cdnizer(...))
   .pipe(gulp.dest('./dist/'));

Честно говоря, я не уверен, почему это не удалось так, как это было, но результат cdnizer() был обойден.

Просто исправьте ваши вложения / скобки, вот так, и все будет готово.

gulp.task('makeCdn', function () {

    return gulp.src('./app/**/*.html')
        .pipe(cdnizer({
            bowerComponents: './vendor/bower_components',
            allowRev: true,
            allowMin: true,
                files: [
                    {
                        file: '/vendor/bower_components/angular/angular.js',
                        package: 'angular',
                        // angular has a bizarre version string inside bower, with extra information.
                        // using major.minor.patch directly ensures it works with the CDN
                        cdn: '//ajax.googleapis.com/ajax/libs/angularjs/${ major }.${ minor }.${ patch }/angular.min.js'
                    }
                ]
            }))
        .pipe(gulp.dest('./dist/'));
});

Вы также можете исключить объект-оболочку и параметры по умолчанию, если ваш .bowerrc находится в нужном месте:

gulp.task('makeCdn', function () {

    return gulp.src('./app/**/*.html')
        .pipe(cdnizer([
                    {
                        file: '/vendor/bower_components/angular/angular.js',
                        package: 'angular',
                        // angular has a bizarre version string inside bower, with extra information.
                        // using major.minor.patch directly ensures it works with the CDN
                        cdn: '//ajax.googleapis.com/ajax/libs/angularjs/${ major }.${ minor }.${ patch }/angular.min.js'
                    }
                ]))
        .pipe(gulp.dest('./dist/'));
});
Другие вопросы по тегам