导入以tilde开头的node_modules的Gulp sass问题

时间:2017-05-19 12:00:30

标签: sass gulp

我通过gulp sass任务将.scss文件转换为.css。问题是基.scss文件包含包含其他导入的导入。这些导入以

开头
~@angular/material/core/etc/etc

代字号会导致以下错误:

events.js:160
  throw er; // Unhandled 'error' event
  ^
Error: node_modules\@covalent\core\chips\_chips-theme.scss
Error: File to import not found or unreadable: ~@angular/material/core/theming/theming.
Parent style sheet: C:/Users/laurensk/Documents/Playground/node_modules/@covalent/core/chips/_chips-theme.scss
    on line 1 of node_modules/@covalent/core/chips/_chips-theme.scss
>> @import '~@angular/material/core/theming/theming';
   ^

有一个名为node-sass-tilde-importer的自定义导入程序,但我不确定是否可以将其实现到我的gulp sass任务中。

我的代码:

var gulp = require("gulp"),
sass = require("gulp-sass");
//var replace = require('gulp-replace');
//var sassGlob = require('gulp-sass-glob');
//var tildeImporter = require('node-sass-tilde-importer');

gulp.task("sass", function () {
  return gulp
    .src('Styles/theme.scss')
    .pipe(sass())
    .pipe(gulp.dest('wwwroot/dist'));
});

我已尝试更换替换'〜'使用' ./ node_modules'但它会引发同样的错误。

任何意见都会受到赞赏!

1 个答案:

答案 0 :(得分:17)

gulp-sass接受所有node-sass个属性。 因此,您只需要使用gulp-sass导入程序配置node-sass-tilde-importer

var gulp = require("gulp"),
sass = require("gulp-sass");
var tildeImporter = require('node-sass-tilde-importer');

gulp.task("sass", function () {
 return gulp
  .src('Styles/theme.scss')
  .pipe(sass({
      importer: tildeImporter
   }))
  .pipe(gulp.dest('wwwroot/dist'));
 });