当前位置: 首页 > 知识库问答 >
问题:

gulp-sass自动重定位源映射

田嘉澍
2023-03-14

这个周末我开始玩Gulp。我想建立一个任务

  • 编译我的sass文件
    • 如果我在sass文件中出错,请继续工作
    • 使用sass引导程序
    var browserSync = require('browser-sync');
    var reload = browserSync.reload;
    var filter = require('gulp-filter');
    var gulp = require('gulp');
    var sass = require('gulp-sass');
    var autoprefixer = require('gulp-autoprefixer');
    var notify = require("gulp-notify");
    var sourcemaps = require('gulp-sourcemaps');
    var concat = require('gulp-concat');
    
    var config = {
        sassPath: './sass',
        bower: './bower_components',
        bootstrap: './bower_components/bootstrap-sass-official/assets/stylesheets',
        fonts: './bower_components/bootstrap-sass-official/assets/fonts'
    };
    
    gulp.task('sass', function () {
        return gulp.src(config.sassPath + '/**/*.scss')
            .pipe(sourcemaps.init())
                .pipe(sass({
                    //outputStyle: 'compressed',
                    outputStyle: 'nested',
                    precision: 10,
                    includePaths: [
                        config.sassPath,
                        config.bower,
                        config.bootstrap
                    ],
                    onError: function (err) {
                        notify().write(err);
                    }
                }))
                .pipe(concat('app.css'))
                .pipe(autoprefixer('last 2 version'))
            .pipe(sourcemaps.write())
            .pipe(gulp.dest('css'))
            .pipe(filter('**/*.css')) // Filtering stream to only css files
            .pipe(browserSync.reload({stream:true}));
    });
    
    gulp.task('browser-sync', function() {
        browserSync({
            logLevel: "info",
            server: {
                baseDir: './',
                //directory: true,
                routes: {
                    "/fonts": config.fonts
                }
            }
        });
    });
    
    gulp.task('default', ['sass', 'browser-sync'], function () {
        gulp.watch(['./**/*.html', 'js/**/*.js'], reload);
        gulp.watch('sass/*.scss',['sass']);
    });
    

    因此出于某种原因,它会尝试在sass目录中查找css文件

    [编辑]
    我找到了问题,但还无法解决。这个东西工作的管道:gulp-autoprefixer->做一些事情->前缀任务->vinyl-sourcemaps-apply

    在gulp-autoprefixer\index.js的第35行:applySourceMap(file,res.map.toString());从这一点开始,vinyl-sourmaps-apply理解当前文件(在我的例子中是app.css)也成为一个源代码。

共有1个答案

张俊茂
2023-03-14

我在autoprefixer和SourceMaps上也遇到过同样的问题。我更改了工作流,在编译sass之后创建sourcemaps,然后在运行autoprefixer时再次加载到gulp-sourcemaps,最后创建更新的sourcemaps。

// Compile Sass
.pipe(sourcemaps.init())
    .pipe(sass())
.pipe(sourcemaps.write())
.pipe(gulp.dest('../public/assets/css'))

// Autoprefix
.pipe(sourcemaps.init({loadMaps: true}))
    .pipe(autoprefixer('last 2 version', 'ie 8', 'ie 9'))
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest('../public/assets/css'))

然后只查看css文件进行样式注入。

// CSS Injection
.pipe(filter('**/*.css'))
.pipe(browserSync.reload({stream:true}))
 类似资料:
  • 我有一个将SASS编译成CSS的Gulp任务。这里有一个例子 上面的操作适用于其他的一切--将映射写入磁盘、添加前缀等。我使用的是最新的nodejs、gulpjs和相关的npm软件包。 my Stylesheets文件夹中的文件夹/资产结构示例: 例如,print.scss映射将正确具有。但是sectiona/style.scss映射将具有而不是我所期望的。 我已经确认将/scss/section

  • 输出:style.min.css 我尝试过的事情 1)尝试:将rubySass的sourcemap设置为false结果:无差异

  • gulp插件gulp-ruby-sass在编译sass文件时不起作用。

  • 无论是 node-sass 还是 ruby-sass 使用 npm 安装都非常的慢,甚至会装不上。及其不利于团队协作。建议使用 less 作为 css 预处理器。 如果因为 less 不支持自定义函数选择用 sass 可以使用 less-plugin-functions 让 less 支持自定义函数。 gulp-sass 本章使用的是 ruby-sass 如果你不方便安装 ruby 或编译速度慢,

  • 主要内容:JSF可重定位资源示例JSF提供了将您的资源放置在网页的任何部分并将其呈现给另一部分的工具。您可以通过指定目标属性重新定位您的资源。 您可以将以下属性传递到目标属性中重新定位。 head:用于在头部渲染资源。 body:它用于在部分渲染资源, form:用于在表单部分呈现资源。 JSF可重定位资源示例 在下面的例子中,我们将JavaScript文件放在标签中,并将目标指定给部分。 文件:index.xhtml 中的代码

  • 我当前正在设置我的gulpfile,而当watch任务正在运行scss任务时,我遇到了gulp-sass的问题。 这就是我的gulpfile.js的样子: 我在控制台中得到的错误: 基本错误是:未找到或无法读取要导入的1:9文件:./src/scss/modules/modules_base.scss 应用程序的结构: