【问题标题】:Keep source maps when saving files in a different folder with Gulp使用 Gulp 将文件保存在不同文件夹中时保留源映射
【发布时间】:2015-01-31 18:48:26
【问题描述】:

我正在尝试创建一个 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"
}

非常感谢! :)

【问题讨论】:

  • 你试过没有loadMaps: true吗?
  • 嗨,我试过了,但没有成功:/我已经稍微编辑了我的问题,因为我现在似乎根本无法让它工作......我会继续努力...... .

标签: gulp source-maps


【解决方案1】:

问题是 gulp-rename 目前不支持 gulp-sourcemaps,如 their latest issue 中所述。

另一种方法是使用支持源映射的不同库,例如gulp-concat,它支持重命名文件。但是,如果您不想合并文件,您可以随时打开一个针对 gulp-rename 的拉取请求以添加源映射支持,如 documented here

更新:自 2015 年 3 月 14 日起 gulp-rename 现在 supports sourcemaps

【讨论】:

  • 如果我不重命名它并且只是将 uglified 文件保存到 public/js 那么源映射仍然不起作用:(
  • 我看到某些 .js 文件由于其内容而破坏了源映射。您正在对哪些 .js 文件进行尝试?
  • 我正在开发一个 jquery 插件。我用一些虚拟 js 替换了它,但还是一样...
  • @ivanv “它不起作用”是什么意思?您没有在结果文件中看到 sourcemap 注释吗?我复制了我认为是您的情况,它似乎对我有用,请参阅:github.com/chmontgomery/stackoverflow-28255221 和由此产生的public\js\main.js
  • 感谢您的示例。它确实奏效了。我想我找到了我的问题......今天我通过资源管理器打开了网页,但昨天我正在通过浏览器同步本地“服务器”进行测试,我从 Gulp 开始。而且似乎存在某种故障:当您在 Chrome devtools 中查看控制台时,它一直在“第 1 行”上显示错误。当我现在硬刷新时,会出现正确的行号(尽管我认为我昨天也刷新了)。当我在没有浏览器同步的情况下查看它时,它现在似乎工作得很好(即使重命名)。感谢您将我推向正确的方向! :)
猜你喜欢
  • 2021-07-15
  • 2015-12-10
  • 2010-12-09
  • 2018-07-28
  • 2016-03-05
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
  • 1970-01-01
相关资源
最近更新 更多