Gulp 大口吞下丑陋、重命名和源地图

Gulp 大口吞下丑陋、重命名和源地图,gulp,gulp-uglify,gulp-sourcemaps,gulp-rename,Gulp,Gulp Uglify,Gulp Sourcemaps,Gulp Rename,我正试图一口气完成以下工作: 1) 将JS文件从指定文件夹缩小到名为“dist”的文件夹。 2) 将“.min”附加到缩小的文件名。 3) 为缩小的文件提供源映射,并将其放置在名为“映射”的文件夹中 我正在使用“gulp uglify”、“gulp rename”和“gulp sourcemaps” 以下是我所拥有的: var gulp = require('gulp'); var uglify = require('gulp-uglify'); var rename = require('gu

我正试图一口气完成以下工作: 1) 将JS文件从指定文件夹缩小到名为“dist”的文件夹。 2) 将“.min”附加到缩小的文件名。 3) 为缩小的文件提供源映射,并将其放置在名为“映射”的文件夹中

我正在使用“gulp uglify”、“gulp rename”和“gulp sourcemaps”

以下是我所拥有的:

var gulp = require('gulp');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');
var sourcemaps = require('gulp-sourcemaps');

gulp.task('compress', function () {
    gulp.src('src/*.js')
    .pipe(sourcemaps.init())
    .pipe(uglify())
    .pipe(rename({suffix: '.min'}))
    .pipe(sourcemaps.write('../maps'))
    .pipe(gulp.dest('dist'));
});

除了映射文件还附加了“.min”之外,所有操作都按预期进行。如何限制重命名仅发生在dist文件夹中

我做了更多的挖掘,找到了解决这个问题的方法。 我最终把一项任务分成了两项不同的任务。一旦文件位于dist文件夹中,我就调用“重命名”任务。我还使用“乙烯路径”和“del”删除重命名的文件。以下是我所拥有的:

var gulp = require('gulp');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');
var sourcemaps = require('gulp-sourcemaps');
var del = require('del');
var vinylPaths = require('vinyl-paths');

gulp.task('compress', ['uglify','rename']);

gulp.task('uglify', function() {
    return gulp.src('src/*.js')
    .pipe(sourcemaps.init())
    .pipe(uglify())
    .pipe(sourcemaps.write('../maps'))
    .pipe(gulp.dest('dist'));
});

gulp.task('rename', ['uglify'], function() {
    return gulp.src('dist/*.js')
    .pipe(vinylPaths(del))
    .pipe(rename({suffix: '.min'}))
    .pipe(gulp.dest('dist'));
});

通过利用
gulp rename
将函数作为输入的能力,可以将这两个功能组合成一个任务:

gulp.task('prod', function() {
    return gulp.src('src.js'))
        .pipe(sourcemaps.init())
        .pipe(uglify())
        .pipe(sourcemaps.write('.'))
        .pipe(rename(function(path) {
            if (!path.extname.endsWith('.map')) {
                path.basename += '.min';
                //gulp-rename with function only concats 'dirname + basename + extname'
            }
        }))
        .pipe(gulp.dest('build/_asset/js'));
});

如果文件扩展名不是.map,则函数基本上“仅”附加.min后缀。输出将是
src.min.js
src.js.map

添加此
“!src/*.map'
to
src
=>gulp.src('src/*.js','!src/*.map')@matio、'src','dist'和'maps'文件夹都在根级别。“src”中的JS文件被正确地提取到“dist”文件夹中,并且正在创建“地图”文件夹并添加“地图”文件。“src”文件夹中没有可供我排除的.map文件。