javascript - 使用 gulp 创建 .js、.min.js 和 .js.map 文件?

标签 javascript gulp gulp-watch gulp-uglify

我正在尝试利用 gulp 3.9 来缩小我的资源文件。

我在 gulpfile 中创建了两个不同的任务,如下所示

var gulp = require("gulp"),
concat = require("gulp-concat"),
cssmin = require("gulp-cssmin"),
filter = require('gulp-filter'),
sourcemaps = require('gulp-sourcemaps'),
rename = require('gulp-rename'),
uglify = require('gulp-uglify-es').default,
merge = require("merge-stream"),
del = require("del"),
bundleconfig = require("./bundleconfig.json");

gulp.task("min:js", function () {
    var tasks = getBundles(regex.js).map(function (bundle) {

        return gulp.src(bundle.inputFiles, { base: ".", sourcemaps: true })
            .pipe(filter('**/*.js'))
            .pipe(concat(bundle.outputFileName))
            .pipe(sourcemaps.write('../maps')) // shouldn't this create file.js.map file?
            .pipe(gulp.dest("."))
            .pipe(uglify())
            .pipe(rename({ suffix: '.min' }))
            .pipe(sourcemaps.write('../maps')) // shouldn't this create file.min.js.map file?
            .pipe(gulp.dest("."));
    });

    return merge(tasks);
});

gulp.task("min:css", function () {
    var tasks = getBundles(regex.css).map(function (bundle) {
        return gulp.src(bundle.inputFiles, { base: ".", sourcemaps: true })
            .pipe(filter('**/*.css'))
            .pipe(concat(bundle.outputFileName))
            .pipe(sourcemaps.write('../maps'))
            .pipe(gulp.dest("."))
            .pipe(cssmin())
            .pipe(rename({ suffix: '.min' }))
            .pipe(sourcemaps.write('../maps'))
            .pipe(gulp.dest("."));
    });
    return merge(tasks);
});

但是,上面的代码似乎只生成了 .min 和常规(非缩小)文件,而不是源映射文件。

如何在每次执行“min:js”和“min:css”任务时使用 Gulp 生成 3 个 js、css 和 sourcemap 文件?

最佳答案

根据文档,您应该初始化源映射:

.pipe(sourcemaps.init())

在生成缩小的 js 案例中:

gulp.src(bundle.inputFiles, { base: ".", sourcemaps: true })
            .pipe(filter('**/*.js'))
            .pipe(sourcemaps.init())
            .pipe(concat(bundle.outputFileName))
            .pipe(sourcemaps.write('../maps'))  
            .pipe(uglify())
            .pipe(rename({ suffix: '.min' }))
            .pipe(gulp.dest(".")) ;

并相应地更改您的 css 缩小。 Click her for more info about sourcemap

关于javascript - 使用 gulp 创建 .js、.min.js 和 .js.map 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58649924/

相关文章:

javascript - JavaScript 中的 sCrypt 实现?

css - gulp-ruby-sass @import 同时编译一个独特的文件

javascript - Gulp 任务未按预期工作

node.js - Gulp + Browserify + TypeScript 到浏览器

sass - Gulp 加速 SASS 编译

css - 如何 Gulp-Watch 多个文件?

javascript - gulp - 如何停止或取消任务运行

javascript - 如何在 Swiper.js 中的幻灯片上应用固定位置

javascript - 将 ajax 结果附加到 div

javascript - 无法获取 Uint8Array 字节