【问题标题】:Getting proper sourcemaps (gulp sass + cleanCss + prefixer + uncss)获取正确的源图(gulp sass + cleanCss + prefixer + uncss)
【发布时间】:2017-01-12 09:43:22
【问题描述】:

链接 gulp 以将 sass 编译为干净的 css(前缀、未 CSS 和缩小)的最佳方法是什么。

以下示例创建源映射,但在浏览器检查器中查看时,它们指向源文件中的错误行号。

var plugins = require('gulp-load-plugins')(),
    bourbon = require('node-bourbon').includePaths,
    neat = require('node-neat').includePaths;
gulp.task('default', function () {
  return gulp.src('src/scss/**/*.scss')
  .pipe(plugins.sourcemaps.init())
  .pipe(plugins.sass({includePaths: bourbon, includePaths: neat}))
  .on('error',plugins.util.log.bind(plugins.util, 'Sass Error'))
  .pipe(plugins.concat('styles.css'))
  .pipe(plugins.uncss({html: ['dist/**/*.html']}))
  .pipe(plugins.autoprefixer())
  .pipe(plugins.cleanCss())
  .pipe(plugins.sourcemaps.write('.'))
  .pipe(gulp.dest('dist/css/'));
 });

为了解决这个问题,我尝试在 autoprefixercleanCss 之前输出源映射,但它导致与“Neat”和“Burbon”路径相关的错误:Error: Broken @import declaration of "../neat" Broken @import declaration of "../colors" Broken @import declaration of "../variables" Broken @import declaration of "../grid" Broken @import declaration of "../tables"

【问题讨论】:

  • 你说“线条”是错误的。这是否意味着您使用浏览器的检查器时的行号?
  • 是的@henry,我指的是浏览器检查器中的行号。我会更新问题以反映这一点。谢谢

标签: sass gulp source-maps autoprefixer uncss


【解决方案1】:

我处理这个任务,使用 CSSO 而不是你的 cleanCSS,但使用你想要的任何东西,棘手的部分是源映射,有时会弄乱路径。

  1. 声明源路径
  2. 初始化 SourceMaps
  3. 将 SCSS 编译成 CSS
  4. 添加正确的前缀支持
  5. 在生成的指向 SCSS 文件的 CSS 文件中粘贴 SourceMaps
  6. 压缩 CSS 文件(这可能会删除源映射,除非您告诉包保存 cmets)
  7. 声明一个目标路径

Gulpfile:SASS 任务

const gulp            = require('gulp'),

      autoprefixer    = require('gulp-autoprefixer'),
      csso            = require('gulp-csso'),
      sass            = require('gulp-sass'),
      sourcemaps      = require('gulp-sourcemaps');


gulp.task('sass', ['sass'], () => {

  return gulp
    .src('src/scss/**/*.scss')
    .pipe(sourcemaps.init())
    .pipe(sass().on('error', sass.logError))
    .pipe(autoprefixer({ browser: ['last 2 version', '> 5%'] }))
    .pipe(sourcemaps.write())
    .pipe(csso())
    .pipe(gulp.dest('dist/css'));
});

【讨论】:

  • 感谢您的回答。虽然您的回答通常是正确的,但这在我的情况下不起作用。在 css0(或 cleanCss)之前移动 sourcMaps 会导致 Error: Broken @import declaration of "../neat" Broken @import declaration of "../colors" Broken @import declaration of "../variables" Broken @import declaration of "../grid" Broken @import declaration of "../tables"
  • 你能提供一个 git gist 和你的 gulpfile 代码吗?自己测试
  • 当然,这里是要点的链接:gulpfile.js 如果你对完整的项目感兴趣,你可以在https://github.com/raminv80/chug/tree/bower找到它
  • 嗨@ramin,你能在 _colors.scss 文件中修复你的条件吗?因为是放弃我和关于不声明变量的错误,我认为没有通过 $palette: chugdefault;如果……条件。好的,问题是关于 sourcemaps 在错误的目录中寻找“maps”,控制台说正在寻找 node_modules/sourcemaps 而不是 node_modules/bourbon 我必须去,但明天再试一次好吗?抱歉今天有点忙
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-21
  • 2017-09-23
  • 1970-01-01
  • 2018-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多