Import CSS from node_modules using Gulp-SASS
What works for me, in 2020, is this:
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())
);
}
Now in the scss files, I can
@import 'modularscale';
@import 'typi';
@import 'purecss';
The other options seem to be:
- put the full paths to the main
_somelibrary.scss
file directly in the scss files (minus the extension), so something like:
@import '../../node_modules/purecss-sass/vendor/assets/stylesheets/_purecss';
- Put
includePaths: ['./node_modules']
and add the relative paths in the scss files:
@import 'purecss-sass/vendor/assets/stylesheets/_purecss';
SASS compiler doesn't know where to look for the files. The location needs to be specified.
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'));
});