Как сказал он, Том new version of Sass has this new importer
option, где каждый «импорт», который вы делаете в вашем файле Sass, будет первым путем этого метода. Это означает, что вы можете изменить фактический URL этого метода.
Я использовал require.resolve
, чтобы найти фактический файл ввода модуля.
Посмотрите на мою глотком задачу и посмотреть, если это поможет вам:
'use strict';
var path = require('path'),
gulp = require('gulp'),
sass = require('gulp-sass');
var aliases = {};
/**
* Will look for .scss|sass files inside the node_modules folder
*/
function npmModule(url, file, done) {
// check if the path was already found and cached
if(aliases[url]) {
return done({ file:aliases[url] });
}
// look for modules installed through npm
try {
var newPath = path.relative('./css', require.resolve(url));
aliases[url] = newPath; // cache this request
return done({ file:newPath });
} catch(e) {
// if your module could not be found, just return the original url
aliases[url] = url;
return done({ file:url });
}
}
gulp.task("style", function() {
return gulp.src('./css/app.scss')
.pipe(sass({ importer:npmModule }))
.pipe(gulp.dest('./css'));
});
Теперь предположим, что вы установили inuit-normalize
с помощью узла. Вы можете просто «потребовать» его в файле Sass:
@import "inuit-normalize";
Я надеюсь, что это поможет вам и другим. Поскольку добавление относительных путей всегда является болью в заднице :)
Возможный дубликат [SASS: импортировать файл из другого каталога?] (Http://stackoverflow.com/questions/6502313/sass-import-a-file-from-a-different-directory) – cimmanon
@cimmanon : Какие? Нет, это совсем другой вопрос ... – callumacrae