更新する前(node-sass 1.13.1)、以下は問題なく機能しました。
input.sass
:global
.my-global-class-name
background-color: red
今、私は次のエラーを受け取ります:
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
バージョン情報:
$ 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
):ダーウィンnode -p process.arch
):x64node -p "require('node-sass').info"
):npm ls node-sass
): [email protected]このプロジェクトはSass言語の実装です。 私たちの目標は、Sassと100%互換性があることです。 Ruby Sassが同じ出力を生成するため、この問題を解決します。 今後、問題を開く前に、LibSassの出力がRubySassと異なることを確認してください。
Sass言語でファイルバグの機能を提案したい場合は、Sassで問題を開いてください-https://github.com/sass/sass
パッチが適用されたバグのため、LibSassでコンパイルしていました。 このコードは有効なSassではないため、コンパイルする必要はありません。 これは、RubySassでコードをテストすることで確認できます。
: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.
Ruby Sassのエラーメッセージは私たちのメッセージよりもはるかに優れており、回避策を提案しています。 この動作を変更するには、 RubySassで機能リクエストを開く必要があります
CSSモジュールの構文がscss形式で有効であることに注意してください
:global {
.my-global-class-name {
background-color: red
}
}
@xzyfer :global
が有効なSassではない理由を知っていますか? これは有効なCSSセレクターであり、Webコンポーネントを作成するときに:host
セレクターを使用する人が増えると、将来的にはより一般的になるでしょう。
@jhnnsここでは、いくつかの異なる要素が関係しています。 OPは古いインデントされた構文を使用しています。
:global
.my-global-class-name
background-color: red
その構文では、 :foo
セレクターには特別な意味があります。 この意味は、CSSに:
プレフィックス付きセレクターが含まれるよりもほぼ10年前のことです。 上で述べたように、この動作の変更はLibSassの範囲内ではなく、公式のSassチームが対処する必要があります。
一方、新しいscss構文は、(ほとんど)CSSのスーパーセットであることを保証します。 このため、 :
プレフィックス付きセレクターは期待どおりに機能します。
@delijahアップグレードした後、コロンをエスケープすることでこれを再び機能させることができました。
\:global
.my-global-class-name
background-color: red
@mattfyshこれを確認できます。 「\」を使用すると問題が解決します。 今、私のsass-linterはそれが好きではありません;)私はそのための問題を開きます。
最も参考になるコメント
@delijahアップグレードした後、コロンをエスケープすることでこれを再び機能させることができました。