Antes de atualizar (node-sass 1.13.1), o seguinte funcionou sem problemas:
input.sass
:global
.my-global-class-name
background-color: red
Agora recebo o seguinte erro:
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
informação da versão:
$ 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]Este projeto é uma implementação da linguagem Sass. Nosso objetivo é ser 100% compatível com Sass. Estamos encerrando este problema, pois Ruby Sass produz a mesma saída. No futuro, confirme se a saída do LibSass é diferente do Ruby Sass antes de abrir um problema.
Se você deseja sugerir recursos de bugs de arquivos na linguagem Sass, abra um problema com o Sass - https://github.com/sass/sass
Ele estava compilando com LibSass por causa de um bug que foi corrigido. Este código não é Sass válido e nunca deveria ter sido compilado. Você pode confirmar isso testando seu código com 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.
A mensagem de erro do Ruby Sass é muito melhor que a nossa e sugere uma solução alternativa. Para alterar esse comportamento, você precisa abrir uma solicitação de recurso com Ruby Sass
Observe que a sintaxe do módulo CSS é válida com o formato scss
:global {
.my-global-class-name {
background-color: red
}
}
@xzyfer Você sabe por que :global
não é válido Sass? É um seletor CSS válido e provavelmente se tornará mais comum no futuro assim que mais pessoas estiverem usando o seletor :host
ao escrever componentes web.
@jhnns existem alguns elementos diferentes em jogo aqui. O OP está usando a antiga sintaxe recuada.
:global
.my-global-class-name
background-color: red
Nessa sintaxe, os seletores :foo
têm um significado especial. Este significado antecede a inclusão de seletores prefixados :
em CSS em quase uma década. Como eu disse acima, mudar esse comportamento não está dentro do escopo do LibSass e precisa ser tratado pela equipe oficial do Sass .
Por outro lado, a sintaxe scss mais recente garante (principalmente) ser um superconjunto de CSS. Por esta razão, os seletores prefixados :
funcionam como esperado.
@delijah Consegui fazer isso funcionar novamente após a atualização, escapando dos dois pontos, ou seja
\:global
.my-global-class-name
background-color: red
@mattfysh posso confirmar isso. Usar um "\" resolve o problema. Agora meu sass-linter não gosta ;) Vou abrir um problema para isso.
Comentários muito úteis
@delijah Consegui fazer isso funcionar novamente após a atualização, escapando dos dois pontos, ou seja