node.js - gulp-sourcemaps 将源指向错误的目录

标签 node.js gulp gulp-sourcemaps

我正在尝试使用 gulp-sourcemaps 为我的 sass 和 js 文件创建源映射,但是 sources: [ ... ] 中的路径始终仅相对于源,而不是相对于源目标目录。

我的项目结构如下所示:

project
|-- public/
|   |-- css/
|   |   |-- main.scss
|   |   `-- dashboard.scss
|   |-- js/
|   |   |-- dashboard/
|   |   |   `-- dashboard.js
|   |   `-- app.js
|   |-- index.html
|   |-- app.min.js
|   |-- app.min.js.map
|   |-- style.css
|   `-- style.css.map
`-- gulpfile.js

这是我的两个 gulp 任务:

gulp.task('sass', function() {
    // only need main.scss because I'm using @import
    return gulp
        .src('./public/css/main.scss')
        .pipe(sourcemaps.init())
            .pipe(sass())
        .pipe(rename('style.css'))
        .pipe(sourcemaps.write('./'))
        .pipe(gulp.dest('./public'));
});

gulp.task('uglify', function() {
    return gulp
        .src(['./public/js/app.js', './public/js/**/*.js'])
        .pipe(sourcemaps.init())
        .pipe(concat('app.concat.js'))
            .pipe(uglify())
        .pipe(rename('app.min.js'))
        .pipe(sourcemaps.write('./'))
        .pipe(gulp.dest('./public'));
});

运行这些任务后, map 文件如下所示:

{"version":3,"sources":"main.scss","dashboard.scss"], ... }
{"version":3,"sources":["app.js","dashboard/dashboard.js"], ... }

但我希望它们与实际目录相关

{"version":3,"sources":["css/main.scss","css/dashboard.scss"], ... }
{"version":3,"sources":["js/app.js","js/dashboard/dashboard.js"], ... }

那么怎样才能得到想要的结果呢?我的配置有什么问题吗?

最佳答案

要使用 gulp-sourcemaps 控制源映射文件中源的路径,您应该将 options 参数传递给 sourcemaps.write 命令,在该命令中指定 sourceRoot 的相对目录。例如:

gulp.task('javascript', function() {
  var stream = gulp.src('src/**/*.js')
    .pipe(sourcemaps.init())
      .pipe(plugin1())
      .pipe(plugin2())
    .pipe(sourcemaps.write({includeContent: false, sourceRoot: '/src'}))
    .pipe(gulp.dest('dist'));
});

此片段取自 gulp-sourcemaps documentation 。有关示例,请参阅此 GitHub repository ,我使用 gulp-sourcemaps 和 gulp-typescript 将生成的 javascript 源文件映射回 typescript 文件。

关于node.js - gulp-sourcemaps 将源指向错误的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31047355/

相关文章:

node.js - 如何收集 Electron 桌面应用程序的用户指标?

less - 如何使用 gulp 让源映射包含我所有的 LESS 文件

javascript - 将 gulp-sourcemaps 与 gulp-csso 和 gulp-sass 结合起来

javascript - Chrome 不请求内联脚本标记中的源映射

javascript - 运行任务前的 Gulp 提示

google-chrome - Visual Studio Code 调试 chrome,断点不会命中

mysql - 适合初学者的 Node.js 嵌套 MySQL 查询

javascript - 干燥 NodeJS 下 TypeScript 中的常见情况 require

javascript - Express-validator:如果其他字段值为 true,则使字段可选

node.js - 如何在单个 Gulpjs 任务中添加已经缩小的文件?