【问题标题】:Gulp - migrate from node-sass to sass for Angular.JSGulp - 从 node-sass 迁移到 Angular.JS 的 sass
【发布时间】:2022-06-24 04:02:21
【问题描述】:

我们有一个 Angular.JS 项目并且我们使用 Gulp。

我正在尝试退出 node-sass,因为它已被弃用为 dart sass

angular.js 是否与 sass 兼容

节点版本:15

这里是我们如何使用 node-sass

'use strict';

var gulp = require('gulp');
var paths = gulp.paths;
var $ = require('gulp-load-plugins')();

// TODO: node-sass is deprecated; replace with
// dart-sass (https://sass-lang.com/dart-sass)
$.sass.compiler = require('node-sass');

gulp.task('styles', function () {

  var injectFiles = gulp.src([
    paths.src + '/{app,components}/**/*.scss',
    '!' + paths.src + '/app/index.scss',
    '!' + paths.src + '/app/vendor.scss'
  ], { read: false });

  var injectOptions = {
    transform: function(filePath) {
      filePath = filePath.replace(paths.src + '/app/', '');
      filePath = filePath.replace(paths.src + '/components/', '../components/');
      return '@import \'' + filePath + '\';';
    },
    starttag: '// injector',
    endtag: '// endinjector',
    addRootSlash: false
  };

  // "Enables you to work on a subset of the original files by filtering them
  // using glob patterns. When you're done and want all the original files back,
  // you just use the restore stream"
  var indexFilter = $.filter(paths.src + '/app/index.scss', {restore: true});

  return gulp.src([
      paths.src + '/app/index.scss', // A template, empty except for the injection target
      paths.src + '/app/vendor.scss' // Currently not used
    ], {allowEmpty: true})
    .pipe(indexFilter)
    .pipe($.inject(injectFiles, injectOptions)) // injects the @import's to all app and component scss
    .pipe(indexFilter.restore)
    .pipe($.sass().on('error', $.sass.logError)) // compiles index.scss (and vendor.scss if existent)
    .pipe($.autoprefixer()
      .on('error', function handleError(err) {
        console.error(err.toString());
        this.emit('end');
      })
    )
    .pipe(gulp.dest(paths.tmp + '/serve/app/'));
});

我的迁移尝试

删除 node-sass 并安装 sass 然后用 sass 替换编译器

$.sass.compiler = require('sass');

应用不再构建

【问题讨论】:

    标签: node.js angularjs sass gulp node-sass


    【解决方案1】:

    我知道怎么做

    替换

    var sass = require('gulp-sass'));
    var compiler = require('sass');
    sass.compiler = compiler;
    

     var sass = require('gulp-sass')(require('sass'));
    

    在我的情况下是这样的

    ....
    .pipe(sass().on('error', sass.logError))
    ....
    

    【讨论】:

      猜你喜欢
      • 2022-08-12
      • 1970-01-01
      • 2018-05-06
      • 1970-01-01
      • 2019-01-12
      • 2016-05-30
      • 2018-04-02
      • 2015-02-10
      • 1970-01-01
      相关资源
      最近更新 更多