使用Gulp将文件保存到其他文件夹时保留源地图

使用Gulp将文件保存到其他文件夹时保留源地图,gulp,source-maps,Gulp,Source Maps,我正在尝试创建一个Gulp任务,它接受JS文件,在它们上运行uglify,在文件名中添加一个.min后缀,然后将它们保存在与源文件夹不同的目标文件夹中。棘手的部分是保持源地图正常工作 gulp.task('uglify-js', function () { // Fetch CSS files return gulp.src(['assets/js/*.js', '!assets/js/*.min.js']) // Start source map

我正在尝试创建一个Gulp任务,它接受JS文件,在它们上运行uglify,在文件名中添加一个
.min
后缀,然后将它们保存在与源文件夹不同的目标文件夹中。棘手的部分是保持源地图正常工作

gulp.task('uglify-js', function () {
    // Fetch CSS files
    return gulp.src(['assets/js/*.js', '!assets/js/*.min.js'])

        // Start source map
        .pipe(sourcemaps.init({loadMaps: true}))

        // Uglify JS
        .pipe(uglify())

        // Add file suffix
        .pipe(rename({suffix: '.min'}))

        // Save source map
        .pipe(sourcemaps.write())

        // Save output to destination folder
        .pipe(gulp.dest('public/js/'));
});
我尝试了许多不同的选择,但源地图似乎不起作用。。。 有人知道这样做的正确方法吗

我的包裹:

"devDependencies": {
  "gulp": "^3.8.10",
  "gulp-rename": "^1.2.0",
  "gulp-sourcemaps": "^1.3.0",
  "gulp-uglify": "^1.0.2"
}

非常感谢!:)

问题是gulp rename目前不支持gulp sourcemaps,如中所述

一种替代方法是使用支持sourcemaps的不同库,例如,它支持重命名文件。但是,如果您不想压缩文件,您可以随时打开一个针对gulp rename的pull请求,以添加sourcemaps支持,如下所示


更新:从2015年3月14日起,现在就大口改名

您是否尝试过不使用
loadMaps:true
?您好,我尝试过,但没有成功:/I我编辑了一点我的问题,因为我现在似乎根本无法让它工作。。。我会继续尝试…如果我不重命名它,只是将丑陋的文件保存到public/js,那么sourcemaps仍然不起作用:(我看到某些.js文件因其内容而破坏sourcemaps。你在尝试哪些.js文件?我正在使用的一个jquery插件..我将其替换为一些伪js,但仍然是一样的…@ivanv你说什么“它不起作用"?您没有看到结果文件中的sourcemap注释吗?我复制了我认为是您的情况,它似乎对我有效,请参阅:并且结果
public\js\main.js
感谢您的示例。它确实有效。我想我发现了我的问题…今天我通过explorer打开了网页,但昨天我正在测试浏览器同步本地“服务器”,我从Gulp开始。似乎有一些小问题:当你在Chrome devtools中查看控制台时,它总是在“line 1”上显示错误。当我现在硬刷新时,会显示正确的行号(尽管我想我昨天也刷新了)。当我在没有浏览器同步的情况下查看它时,它现在似乎工作得很好(即使重命名了)。感谢您将我推向正确的方向!:)