使用Gulp-SASS从node_modules导入CSS

bxfogqkk  于 2022-12-08  发布在  Gulp
关注(0)|答案(2)|浏览(214)

我想使用SASS从我的node_modules导入一个CSS文件。

@import 'normalize.css/normalize';

下面是我的gulpfile.js处理SASS的方式:

const
  gulp = require('gulp'),
  sass = require('gulp-sass');

gulp.task('sass', function () {
  return gulp.src(['source/assets/css/**.scss', '!source/assets/css/**/_*.[scss|sass'])
    .pipe(sass())
    .pipe(gulp.dest('output/assets/css'));
});

SASS编译器不会从node_modules导入css,而是抛出错误。

Error: File to import not found or unreadable: normalize.css/normalize.
wvyml7n5

wvyml7n51#

SASS编译器不知道在哪里查找文件。需要指定位置。

gulp.task('sass', function () {
  return gulp.src(['source/assets/css/**.scss', '!source/assets/css/**/_*.[scss|sass'])
    .pipe(sass({
      includePaths: ['node_modules']
    }))
    .pipe(gulp.dest('output/assets/css'));
});
xpcnnkqh

xpcnnkqh2#

在2020年,对我有效的是:

function styles() {
    return (
      gulp.src(paths.styles.src)
        .pipe(sourcemaps.init())
        .pipe(sass({
                    includePaths: ['./node_modules/purecss-sass/vendor/assets/stylesheets/',
                                  './node_modules/modularscale-sass/stylesheets/',
                                  './node_modules/typi/scss/'
                                  ]
                  }))
        .on("error", sass.logError)
        .pipe(postcss([autoprefixer(), cssnano()]))
        .pipe(sourcemaps.write())
        .pipe(gulp.dest(paths.styles.dest))
        .pipe(browserSync.stream())
    );
}

现在,在scss文件中,我可以

@import 'modularscale';
@import 'typi';
@import 'purecss';

其他选项似乎是:
1.将_somelibrary.scss主文件的完整路径直接放在scss文件中(去掉扩展名),类似于:

@import '../../node_modules/purecss-sass/vendor/assets/stylesheets/_purecss';

1.输入includePaths: ['./node_modules']并在scss文件中添加相对路径:

@import 'purecss-sass/vendor/assets/stylesheets/_purecss';

相关问题