J'utilise Gulp pour compiler mon sass en css. Une tâche simple compile le fichier style.scss
dans le répertoire _/sass
et enregistre le résultat à la racine du projet. style.scss
sert uniquement à importer d'autres fichiers du répertoire _/sass
.
Lorsque j'exécute la tâche par défaut à partir de la ligne de commande ($ gulp
), j'obtiens une erreur impossible à compiler par sass. Il est inclus ci-dessous dans son intégralité. J'ai supprimé tout le contenu des fichiers inclus et relance la tâche. Je reçois toujours la même erreur (quelque chose que j'ai lu en ligne suggérait que cela pourrait permettre de détecter un problème d'encodage. Je ne comprends pas tout à fait l'encodage et comment cela pourrait casser des choses dans mon scénario).
J'ai également exécuté à partir de la ligne de commande $ sass _/sass/style.scss style.css
qui fonctionne parfaitement avec le contenu des fichiers inclus. Cela me suggère un problème avec le plugin gulp sass lui-même.
Les extraits pertinents de gulpfile.js:
var gulp = require('gulp');
var sass = require('gulp-sass');
// Compile sass files
gulp.task('sass', function () {
gulp.src('./_/sass/style.scss')
.pipe(sass())
.pipe(gulp.dest('./'));
});
// The default task (called when you run `gulp`)
gulp.task('default', function() {
gulp.run('sass');
// Watch files and run tasks if they change
gulp.watch(['./_/sass/style.scss'], function() {
gulp.run('sass');
})
});
Le contenu complet de style.scss:
/* RESET */
@import '_/sass/reset';
/* TYPOGRAPHY */
@import '_/sass/typography';
/* MOBILE */
@import '_/sass/mobile';
/* MAIN */
@import '_/sass/main';
La structure du répertoire:
├── _
│ ├── inc
│ │ ├── stuff
│ ├── js
│ │ ├── otherstuff.js
│ └── sass
│ ├── main.scss
│ ├── mobile.scss
│ ├── print.scss
│ ├── reset.scss
│ ├── style.scss
│ └── typography.scss
├── gulpfile.js
└── style.css
Le terminal crache:
[gulp] Using file /Users/jeshuamaxey/project/dir/path/gulpfile.js
[gulp] Working directory changed to /Users/jeshuamaxey/project/dir/path/html5reset
[gulp] Running 'default'...
[gulp] Running 'sass'...
[gulp] Finished 'sass' in 3.18 ms
[gulp] Finished 'default' in 8.09 ms
stream.js:94
throw er; // Unhandled stream error in pipe.
^
source string:11: error: file to import not found or unreadable: 'reset'
Conservez vos importations en l'état, passez simplement l'option includePaths
dans votre module gulp sass en tant qu'argument:
gulp.src('./_/sass/style.scss')
.pipe(sass({ includePaths : ['_/sass/'] }))
.pipe(gulp.dest('./'));
... devrait le faire pour vous.
Si vous utilisez du texte Sublime avec Windows, vous devez ajouter des règles dans Sunlime config. Ajoutez simplement "atomic_save" : true
dans Préférences> Paramètres-Utilisateur
Pour cela, vous devez commencer par le même dossier gulpfile.js
@import '_/sass/reset'
Je pense que le Gulp lit l'importation et trouve le fichier d'où gulpfile.js se trouve