До обновления (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. Наша цель — быть на 100% совместимым с Sass. Мы закрываем эту проблему, поскольку Ruby Sass выдает тот же результат. В будущем перед открытием проблемы подтвердите, что вывод LibSass отличается от Ruby Sass.
Если вы хотите предложить особенности файловых ошибок на языке Sass, пожалуйста, откройте проблему с Sass - https://github.com/sass/sass
Он компилировался с помощью LibSass из-за исправленной ошибки. Этот код недействителен для Sass и никогда не должен был компилироваться. Вы можете убедиться в этом, протестировав свой код с помощью 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.
Сообщение об ошибке Ruby Sass намного лучше, чем наше, и предлагает обходной путь. Чтобы изменить это поведение, вам нужно открыть запрос функции с Ruby Sass .
Отмечается, что синтаксис модуля CSS действителен в формате scss.
:global {
.my-global-class-name {
background-color: red
}
}
@xzyfer Знаете ли вы, почему :global
недействителен в Sass? Это допустимый селектор CSS, и, вероятно, он станет более распространенным в будущем, как только все больше людей будут использовать селектор :host
при написании веб-компонентов.
@jhnns здесь есть пара разных элементов. OP использует старый синтаксис с отступом.
:global
.my-global-class-name
background-color: red
В этом синтаксисе селекторы :foo
имеют особое значение. Это значение предшествует включению селекторов с префиксом :
в CSS почти на десятилетие. Как я уже сказал выше, изменение этого поведения не входит в сферу компетенции LibSass и должно решаться официальной командой Sass .
С другой стороны, более новый синтаксис scss гарантирует (в основном) супернабор CSS. По этой причине селекторы с префиксом :
работают должным образом.
@delijah Я смог снова заставить это работать после обновления, избежав двоеточия, т.е.
\:global
.my-global-class-name
background-color: red
@mattfysh Я могу это подтвердить. Использование «\» решает проблему. Теперь моему sass-linter'у это не нравится ;) Я открою тему по этому поводу.
Самый полезный комментарий
@delijah Я смог снова заставить это работать после обновления, избежав двоеточия, т.е.