Pytanie Mapy Gulp + źródłowe (wiele plików wyjściowych)


Właśnie zacząłem grać łyki jest bardzo szybki i łatwy w użyciu, ale wydaje się mieć krytyczną wadę: co zrobić, gdy zadanie wymaga wyprowadzenia więcej niż jednego typu pliku?

Na przykład, bez łyka mówi, że nawet nie obsługuje sourceMapFilename opcja. Nie chcę, aby moja mapa źródłowa była umieszczona w moim pliku CSS. Czy jestem hooped? Czy powinienem po prostu wrócić do używania Grunta, czy jest jakiś sposób, aby sobie z tym poradzić?


11
2018-02-13 06:09


pochodzenie


Gulp-if może pomóc w tym. przykład - mpen


Odpowiedzi:


Zadanie to zabierze wiele plików, wypełni je i wyświetli wraz z mapami źródłowymi.

Będzie zawierać domyślnie kod źródłowy w plikach map, więc nie musisz również dystrybuować plików kodu źródłowego. Można to wyłączyć, ustawiając includeContent opcja do false. Zobacz gulp-sourcemaps Strona NPM więcej opcji mapy źródłowej.

gulpfile.js:

var gulp = require("gulp");
var plugins = require("gulp-load-plugins")();

gulp.task("test-multiple", function() {
    return gulp.src("src/*.scss")
            .pipe(plugins.sourcemaps.init())
            .pipe(plugins.sass())
            .pipe(plugins.autoprefixer())
            .pipe(plugins.sourcemaps.write("./"))
            .pipe(gulp.dest("result"));
});

package.json

"gulp": "~3.8.6",
"gulp-load-plugins": "~0.5.3",
"gulp-sass": "~0.7.2",
"gulp-autoprefixer": "~0.0.8",
"gulp-sourcemaps": "~1.1.0"

The src informator:

first.scss
second.scss

The result katalog po uruchomieniu test-multiple zadanie:

first.css
first.css.map  // includes first.scss
second.css
second.css.map  // includes second.scss

10
2017-07-17 23:14



Czy to nadal działa, jeśli zaimportowano za pośrednictwem częściowych plików .scss @import do głównego pliku .scss? Byłbym zachwycony, gdyby przeglądarka mogła połączyć się z plikami częściowymi, które zostały zaimportowane. - jaminroe


w docs pokazuje, jak mieć wiele plików wyjściowych:

gulp.src('./client/templates/*.jade')  
  .pipe(jade())
  .pipe(gulp.dest('./build/templates'))
  .pipe(minify())`  
  .pipe(gulp.dest('./build/minified_templates'));

0
2018-03-04 09:57



Źle odczytujesz pytanie. Mówię o tym, kiedy pojedyncze zadanie musi wygenerować dwa lub więcej oddzielnych plików. Wiem, że mogę zadzwonić .dest tyle razy, ile chcę; to nie pomaga. Ma to związek z architekturą wtyczek, a nie podstawową. - mpen
Mam cię :) Zainteresowany, czy robi różnicę w praktyce? - Jake Rayson
Mapy źródeł są bardzo przydatne w praktyce. Jestem pewien, że istnieje wiele innych scenariuszy, w których chciałbyś wyprowadzić dwa lub więcej plików różnych typów z jednego zadania; nie można podzielić ich na oddzielne zadania, w przeciwnym razie każde zadanie musi ponowić dane wejściowe. - mpen


Gulp obsługuje wiele plików wyjściowych dobrze. Przeczytaj dokumenty.

Przykład:

gulp.task('scripts', function () {
  return gulp.src('app/*js')
    .pipe(uglify())
    .pipe(gulp.dest('dist'));
});

Spowoduje to odczytanie kilku plików JS, zminimalizowanie ich i wysłanie do folderu dist.

Jeśli chodzi o problem braku łyka. Możesz komentować odpowiednie bilet.


-1
2018-02-13 10:26



Przeglądałem dokumenty. Gdzie dokładnie to mówi? Ponadto omawiany jest Twój "istotny" bilet inline mapy źródłowe, czego dokładnie nie chcę. - mpen
Jeśli przeczytasz dokumenty, które zrozumiesz dist jest folderem: github.com/gulpjs/gulp/blob/master/docs/API.md#gulpdestpath - Sindre Sorhus
To powinno być oznaczone jako poprawne. gulp.src używa globowania do dopasowania wielu plików. Wszelkie tworzenie, manipulowanie lub usuwanie plików będzie wyprowadzane do folderu określonego w gulp.dest. Tak więc, gdy uglify tworzy plik z mapą źródłową, to również przechodzi w gulp.dest. - James Kyle
@Mark, jeśli przekazujesz pliki .js przez więcej transformacji, plik mapy źródłowej prawdopodobnie również musi zostać zaktualizowany. Możesz także użyć Filtr gulp jeśli tego nie chcesz. Mimo wszystko ta odpowiedź powinna być oznaczona jako poprawna. - James Kyle
@JamesKyle To jest moje pytanie; jeśli nie sądzę, że to spełnia wymagania określone przeze mnie, to nie zaznaczam, że to było poprawne. Jest łagodnie niegrzeczny i ignoruje intencję pytania. Jestem tego świadomy .dest może wypisać wiele plików, ale nie opisuje, w jaki sposób radzić sobie z transformacjami, które muszą generować pliki różnych typów, które potencjalnie muszą być obsługiwane osobno. - mpen