Chcę zaadaptować plik gulpfile.js i zmienić folder bower_components/
na app/bower_components/
.Zależności Gulp, Wiredep i Bower
I aktualizowany katalog w .bowerrc
, więc teraz za każdym razem zrobić bower install
będzie korzystał z prawa One:
{
"directory": "app/bower_components"
}
Teraz, w jaki sposób można gulp-wiredep
pisać poprawną lokalizację ścieżki Sass wewnątrz pliku moim głównym Sass?
Na przykład gulp-wiredep
dodaje następującą linię w moim pliku main.scss
, tuż po // bower:scss
:
@import "bower_components/bootstrap-sass-official/assets/stylesheets/_bootstrap.scss";
Powinno być teraz @import "app/bower_components/bootstrap-sass-official/assets/stylesheets/_bootstrap.scss";
Jak mogę zmienić tę ścieżkę? Wierzę, że to jakiś konfiguracja na zadaniu wiredep
:
gulp.task('wiredep', function() {
var wiredep = require('wiredep').stream;
gulp.src('app/styles/*.scss')
.pipe(wiredep({
ignorePath: /^(\.\.\/)+/
}))
.pipe(gulp.dest('app/styles'));
gulp.src('app/*.html')
.pipe(wiredep({
exclude: ['bootstrap-sass-official'],
ignorePath: /^(\.\.\/)*\.\./
}))
.pipe(gulp.dest('app'));
});
Ale nie wiem, w jaki sposób można skonfigurować, że aby zrobić to, co muszę, nie mogłem znaleźć żadnej dokumentacji na ten temat.
wiem, że jeśli zmienię ręcznie tę ścieżkę w moim pliku Sass do "app/bower_components/bootstrap-sass-official/assets/stylesheets/_bootstrap.scss"
The gulp serve
będzie działać, ale jak tylko mogę zainstalować komponent altana będzie zmienić tę ścieżkę do jednego bez app/
się ponownie na początku i złamie to zadanie.
Jak to naprawić?
Sporządzono:
// inject bower components
gulp.task('wiredep', function() {
var wiredep = require('wiredep').stream;
gulp.src('app/styles/*.scss')
.pipe(wiredep({
fileTypes: {
scss: {
replace: {
sass: '@import "app/{{filePath}}";',
scss: '@import "app/{{filePath}}";'
}
}
},
ignorePath: /^(\.\.\/)+/
}))
.pipe(gulp.dest('app/styles'));
gulp.src('app/*.html')
.pipe(wiredep({
exclude: ['bootstrap-sass-official'],
ignorePath: /^(\.\.\/)*\.\./
}))
.pipe(gulp.dest('app'));
});
Próbowałem, ale to nie działa. W dokumentacji mówi, że używa domyślnego katalogu ".bowerrc", więc i tak byłoby to niepotrzebne, prawda? – zok
Próbowałem też zmienić 'cwd', ale najwyraźniej to tam wiredep wyszuka' bower.json' – zok
Wydaje mi się, że działa to dla mnie, chociaż musisz dodać opcję katalogu do zadania, w którym strumieniujesz 'app/styles/* .scss', a nie do html, jak pokazano w mojej odpowiedzi. Jeśli usuniesz stary folder bower_components, a wiredep wciąż go szuka, to zadanie powinno zakończyć się niepowodzeniem, a wiredep narzeka, że nie może znaleźć żadnych zależności. W każdym razie możesz użyć zastąpienia zastępczego, ale musisz to inaczej określić. Zobacz mu zaktualizuj tę odpowiedź. – knutwalker