Несколько записей в одном файле с gulp и browserify - PullRequest
0 голосов
/ 09 сентября 2018

Я изменяю задачу в моем проекте с grunt на gulp и испытываю проблемы с репликацией следующей задачи:

module.exports = function(grunt) {
    grunt.initConfig({
    browserify: { 
           app: {
                src: ["./app/**/*.js", "./app/**/*.html"],
                dest: "./temp/app.js",
                options: {
                    browserifyOptions: { debug: true },
                    transform: [
                        ["babelify", { "presets": ["es2015"] }],
                        ["stringify", { appliesTo: { includeExtensions: [".html"] }, minify: true}]
                    ]
                }
            }
        }
    });
);

Существует несколько руководств по созданию задач с несколькими точками входа с использованием винила-источника-stream, glob и т. д., однако, все они также создают несколько выходных данных, например, следующая задача:

gulp.task("app", function(done) {
    glob("./app/**/*.{js,html}", function (err, files) {
        if (err) done(err);

        var tasks = files.map(function (entry) {
            return browserify({
                    entries: [entry],
                    transform: [
                         ["babelify", { "presets": ["es2015"] }],
                         ["stringify", { appliesTo: { includeExtensions: [".html"] }, minify: true }]
                    ]
                })
                .bundle()
                .pipe(source(entry))
                .pipe(gulp.dest("./temp"));
        });
        es.merge(tasks).on("end", done);
    });
});

Как мне изменить задачу gulp, чтобы получить тот же результат, что и в grunt (one.вывод файла js)?

РЕДАКТИРОВАТЬ: После некоторого копания я сам нашел решение ... Во-первых, вам нужно отредактировать один из ваших файлов (в моем случае app.js) и вызвать импорт для каждого файла, который выхотите связать его с ... и затем изменить gulp следующим образом:

gulp.task("app", function () {
   return browserify({
            debug:true,
            entries: ["./app/app.js"],
            transform: [
                ["babelify", { "presets": ["es2015"] }],
                ["stringify", { appliesTo: { includeExtensions: [".html"] }, minify: true }]
            ]
        })
        .bundle()
        .on("error", function (err) { console.error(err); this.emit("end"); })
        .pipe(source("app.js"))
        .pipe(buffer())
        .pipe(gulp.dest("./temp"))
        .pipe(uglify())
        .pipe(rename({ extname: ".min.js"}))
        .pipe(gulp.dest("./temp"));
    });

, в этом случае он выводит как app.js, так и его уменьшенную версию - app.min.js

...