Avant la mise à jour (node-sass 1.13.1), les éléments suivants fonctionnaient sans aucun problème :
entrée.sass
:global
.my-global-class-name
background-color: red
Maintenant j'obtiens l'erreur suivante :
ERROR in ./~/css-loader?modules&importLoaders=2&camelCase&sourceMap!./~/postcss-loader?sourceMap=inline!./~/sass-loader?sourceMap!./app/styles/modules/resourceForm.sass
Module build failed:
.my-global-class-name
^
Illegal nesting: Only properties may be nested beneath properties.
in .../app/styles/modules/resourceForm.sass (line 7, column 9)
@ ./app/styles/modules/resourceForm.sass 4:14-254 13:2-17:4 14:20-260
informations sur la version :
$ node-sass --version
node-sass 4.0.0 (Wrapper) [JavaScript]
libsass 3.4.0 (Sass Compiler) [C/C++]
npm -v
) : 3.10.3node -v
): 6.7.0node -p process.versions
):node -p process.platform
): darwinnode -p process.arch
): x64node -p "require('node-sass').info"
):npm ls node-sass
): [email protected]Ce projet est une implémentation du langage Sass. Notre objectif est d'être 100% compatible avec Sass. Nous fermons ce problème puisque Ruby Sass produit la même sortie. À l'avenir, veuillez confirmer que la sortie de LibSass diffère de Ruby Sass avant d'ouvrir un problème.
Si vous souhaitez suggérer des fonctionnalités de bogues de fichiers dans le langage Sass, veuillez ouvrir un problème avec Sass - https://github.com/sass/sass
Il compilait avec LibSass à cause d'un bogue qui a été corrigé. Ce code n'est pas valide Sass et n'aurait jamais dû être compilé. Vous pouvez le confirmer en testant votre code avec Ruby Sass.
:global
.my-global-class-name
background-color: red
Error: Properties are only allowed within rules, directives, mixin includes, or other properties.
If ":global" should be a selector, use "\:global" instead.
on line 1 of test.sass
Use --trace for backtrace.
Le message d'erreur Ruby Sass est bien meilleur que le nôtre et suggère une solution de contournement. Afin de modifier ce comportement, vous devez ouvrir une demande de fonctionnalité avec Ruby Sass
Il est à noter que la syntaxe du module CSS est valide avec le format scss
:global {
.my-global-class-name {
background-color: red
}
}
@xzyfer Savez-vous pourquoi :global
n'est pas valide Sass ? C'est un sélecteur CSS valide et deviendra probablement plus courant à l'avenir dès que plus de personnes utiliseront le sélecteur :host
lors de l'écriture de composants Web.
@jhnns il y a quelques éléments différents en jeu ici. L'OP utilise l'ancienne syntaxe en retrait.
:global
.my-global-class-name
background-color: red
Dans cette syntaxe, les sélecteurs :foo
ont une signification particulière. Cette signification est antérieure à l'inclusion des sélecteurs préfixés :
dans CSS de près d'une décennie. Comme je l'ai dit plus haut, la modification de ce comportement n'est pas dans le cadre de LibSass et doit être traitée par l' équipe officielle de Sass .
D'autre part, la nouvelle syntaxe scss garantit (principalement) un super ensemble de CSS. Pour cette raison, les sélecteurs préfixés :
fonctionnent comme prévu.
@delijah J'ai pu le faire fonctionner à nouveau après la mise à niveau en échappant au côlon, c'est-à-dire
\:global
.my-global-class-name
background-color: red
@mattfysh Je peux le confirmer. L'utilisation d'un "\" résout le problème. Maintenant, mon sass-linter n'aime pas ça;) Je vais ouvrir un sujet pour ça.
Commentaire le plus utile
@delijah J'ai pu le faire fonctionner à nouveau après la mise à niveau en échappant au côlon, c'est-à-dire