web-dev-qa-db-fra.com

L'option d'implémentation doit être transmise à la tâche Sass

Courir grunt - Je reçois ce message d'erreur:

Running "sass:all" (sass) task
Fatal error: The implementation option must be passed to the Sass task

J'ai essayé de réinstaller grunt, node, npm, les dépendances - mais je reviens toujours sur cette erreur que je ne peux pas surmonter.

Devrais-je poster mon Gruntfile.js? Franchement, cela a été mis en place par une tierce partie et nous ne l'utilisons pas souvent - je pense que nous devrions peut-être commencer à partir de zéro car il y a environ 4 ans à l'origine ... mais je me demandais si quelqu'un avait déjà vu cette erreur avant et sait d'un correctif/solution de contournement.

3
DrewM

Avec la mise à jour de grunt-sass 3, vous devez choisir si vous voulez utiliser node-sass ou Dart-sass pour compiler . Pour node-sass, vous devez installer le module avec:

$ npm install --save-dev node-sass 

Dans votre fichier Gruntfile, vous devez ajouter node-sass en tant qu'exigence, ainsi que l'option de définition de la constante de mise en œuvre:

const sass = require('node-sass');

require('load-grunt-tasks')(grunt);

grunt.initConfig({
    sass: {
        options: {
            implementation: sass,
            sourceMap: true
        },
        dist: {
            files: {
                'main.css': 'main.scss'
            }
        }
    }
});

Voir aussi la page officielle pour plus de détails: https://www.npmjs.com/package/grunt-sass

4

J'ai eu ce problème lors de la mise à niveau de grunt-sass 1.x à 2.x. Cela l'a résolu pour moi:

Ajoutez implementation: 'sass' à votre objet sass.options dans Gruntfile.js, comme ceci:

options: {
    implementation: 'sass',
    outputStyle: 'expanded',
    sourceMap: true,
    quiet: true // stop depreciation errors
},
0
Matt Rabe