Mam zadanie typu gulp, które próbuje przekonwertować pliki .scss na pliki .css (używając gulp-ruby-sass), a następnie umieścić wynikowy plik .css w tym samym miejscu, w którym znalazł oryginalny plik. Problem polega na tym, że ponieważ używam wzorca globalnego, niekoniecznie wiem, gdzie jest przechowywany oryginalny plik.
W poniższym kodzie próbuję użyć gulp-tap, aby uzyskać dostęp do strumienia i znaleźć ścieżkę do pliku bieżącego pliku, z którego został odczytany strumień:
gulp.task('convertSass', function() {
var fileLocation = "";
gulp.src("sass/**/*.scss")
.pipe(sass())
.pipe(tap(function(file,t){
fileLocation = path.dirname(file.path);
console.log(fileLocation);
}))
.pipe(gulp.dest(fileLocation));
});
Na podstawie wyniku działania console.log(fileLocation)
tego kodu wydaje się, że powinien działać dobrze. Jednak wynikowe pliki CSS wydają się być umieszczone o jeden katalog wyżej, niż się spodziewam. Gdzie powinno być project/sass/partials
, wynikowa ścieżka do pliku to po prostu project/partials
.
Jeśli istnieje znacznie prostszy sposób na zrobienie tego, na pewno doceniłbym to rozwiązanie jeszcze bardziej. Dzięki!
źródło
sass
folderze?gulp.src("dist/**/*")
...gulp.dest("./")
sass
. Być może wtyczka Sassa już modyfikuje ścieżki?Jest to prostsze niż wskazywały liczby 1311407. Nie musisz w ogóle określać folderu docelowego, po prostu użyj
.
. Upewnij się również, że ustawiłeś katalog podstawowy.źródło
./sass
, ale pytanie określa, że wyjście zachowujesass
katalog, dlatego jest powtarzane wdest
. Ta odpowiedź daje ten sam wynik przy użyciu opcji podstawowej, ale żadne podejście nie jest błędne.css
katalogu lub podobnego, a nie zsass
dosass
. W takich przypadkach przyjęta odpowiedź jest w rzeczywistości prostsza niż ta alternatywa.Pierwotna odpowiedź podana tutaj: https://stackoverflow.com/a/29817916/3834540 .
Wiem, że ten wątek jest stary, ale nadal pojawia się jako pierwszy wynik w Google, więc pomyślałem, że równie dobrze mogę zamieścić tutaj link.
źródło
dest
nieprawidłowego używania . Upewnić się, że podane rozwiązania działają, ale robi to dobrze za pierwszym razem, po prostu zastępującdest('./')
zdest('./images')
musiałaby osiągnąć ten sam rezultat.To było bardzo pomocne!
źródło