Ich arbeite an einer Anwendung, die mit ASP.NET MVC 5 Framework entwickelt wird. Ich verwende Visual Studio 2013, um meine Anwendung zu schreiben.Wie bekomme ich Schluck zu sehen, meine Sass-Datei Änderungen und erstellen Sie eine CSS-Datei?
Ich muss gulp verwenden, um den Prozess der Kompilierung meiner Sass-Datei zu automatisieren und sie in einer bundle.css-Datei zu veröffentlichen.
, das zu tun, hier ist das, was ich
- installiert NodeJs auf meinem Rechner
- installiert gulp global mit
npm install -g gulp
- Erstellt eine Datei namens
gulpfile.js
in dem Stammprojekt des Projektes getan habe
- erstellt die
package.json
Datei mitnpm init
Befehl - Hinzugefügt Schluck zu meinem Entwicklung Abhängigkeiten von der Wurzel meines Projekts den folgenden Befehl ausführen
npm install gulp --save-dev
- Added den Code unten zu meinem
gulpfile.js
Von der Kommandokonsole feuerte ich
gulp
Befehl, der die folgenden Informationen angezeigtMit gulpfile ... gulpfile.js
Start 'watch' ...
Finished 'Uhr' nach 21 ms
Start 'default' ...
Fertig 'default' nach 31 us
Aber wenn ich Code in meine ~/Assets/Sass/**/*.sass
nichts schreiben wird in ~/Public/Css/bundle.css
gespeichert als
Hier erwarten ist, was gulpfile.js
sieht aus wie
const gulp = require('gulp'),
sass = require('gulp-ruby-sass');
// Default task which will be be fired when the runner is started
gulp.task('default', ['watch']);
// listener task
gulp.task('watch', function(){
//Watch any change in the sass directory and trigger the "compileSass" for every save
gulp.watch('~/Assets/Sass/**/*.sass', ['compileSass']);
});
// Task to compile the sass files
gulp.task('compileSass',() =>
sass('~/Assets/Sass/**/*.sass')
.on('error', sass.logError)
.pipe(gulp.dest('~/Public/Css/bundle.css'))
);
Was fehlt mir hier? Wie kann ich die Betrachteten dazu bringen, die Aufgaben nach jedem Speichern zu beobachten und abzufeuern?
Ich schalte in mit gulp-scss verwenden gulp-ruby-sass
Plugin aktualisiert. Nun habe ich die Aufgabe jedes Mal ausgeführt, wenn ich eine scss
Datei speichere, aber aus irgendeinem Grund wird die Zieldatei nicht aktualisiert.
Hier ist, wie meine gulpfile.js
Datei aussieht
const gulp = require('gulp'),
scss = require('gulp-scss');
// Default task which will be be fired when the runner is started
gulp.task('default', ['watch']);
// listener task
gulp.task('watch', function(){
//Watch any change in the "Sass" directory and trigger the "compileScss" for every save
gulp.watch('./Assets/Scss/**/*.scss', ['compileScss']);
});
// Task to compile the "Scss" files
gulp.task('compileScss', function() {
gulp.src('./Assets/Scss/**/*.scss')
.pipe(scss({ "bundleExec": true }))
.pipe(gulp.dest('./Public/Css/bundle.css'));
});
Ich bin mir nicht sicher, gulp versteht die Tilde im Pfad ('~'). Versuchen Sie, Ihre Pfade mit '. /' Anstelle von '~ /' zu beginnen. Außerdem würde ich überprüfen, ob Ihre 'compileSass'-Aufgabe wie erwartet funktioniert, wenn sie direkt (ohne die Uhr) aufgerufen wird. –
Vielen Dank für diesen nützlichen Hinweis! Jetzt bekomme ich einen neuen Fehler, nachdem ich '~' in '.' geändert habe. Hier wird der Fehler '' sass 'nicht als interner oder externer Befehl, ausführbares Programm oder Batchdatei erkannt. Fehler im Plugin 'gulp-ruby-sass' Nachricht: Gem undefined ist nicht installiert.' –
Wenn du' gulp-ruby-sass' verwenden willst, musst du möglicherweise Ruby und das Sass-Juwel auf deinem Rechner installiert haben - siehe [diese Frage] (http://stackoverflow.com/questions/24937506)/gulp-ruby-sass-nicht-ein-erkannt-Befehl-in-Windows). Sie können es jedoch einfacher finden, stattdessen [gulp-sass] (https://www.npmjs.com/package/gulp-sass) zu verwenden, es sei denn, Sie haben einen guten Grund, Schluck-Rubin-Hass zu verwenden. –