Libsass: node-sass 4.0.0으둜 μ—…λ°μ΄νŠΈν•œ ν›„ CSS λͺ¨λ“ˆμ΄ 더 이상 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2016λ…„ 12μ›” 12일  Β·  7μ½”λ©˜νŠΈ  Β·  좜처: sass/libsass

μ—…λ°μ΄νŠΈν•˜κΈ° 전에(node-sass 1.13.1) λ‹€μŒμ€ 문제 없이 μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€.

μž…λ ₯.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 버전( npm -v ): 3.10.3
  • λ…Έλ“œ 버전( node -v ): 6.7.0
  • λ…Έλ“œ ν”„λ‘œμ„ΈμŠ€( node -p process.versions ):
    { http_parser: '2.7.0',
    λ…Έλ“œ: '6.7.0',
    v8: '5.1.281.83',
    UV: '1.9.1',
    zlib: '1.2.8',
    ares: '1.10.1-DEV',
    icu: '57.1',
    λͺ¨λ“ˆ: '48',
    openssl: '1.0.2j' }
  • λ…Έλ“œ ν”Œλž«νΌ( node -p process.platform ): λ‹€μœˆ
  • λ…Έλ“œ μ•„ν‚€ν…μ²˜( node -p process.arch ): x64
  • node-sass 버전( node -p "require('node-sass').info" ):
    node-sass 4.0.0(래퍼) [μžλ°”μŠ€ν¬λ¦½νŠΈ]
    libsass 3.4.0(Sass 컴파일러) [C/C++]
  • npm node-sass 버전( npm ls node-sass ): [email protected]

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

@delijah μ½œλ‘ μ„ μ΄μŠ€μΌ€μ΄ν”„ν•˜μ—¬ μ—…κ·Έλ ˆμ΄λ“œν•œ ν›„ λ‹€μ‹œ μž‘λ™ν•˜λ„λ‘ ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

\:global
    .my-global-class-name
        background-color: red

λͺ¨λ“  7 λŒ“κΈ€

이 ν”„λ‘œμ νŠΈλŠ” Sass μ–Έμ–΄μ˜ κ΅¬ν˜„μž…λ‹ˆλ‹€. 우리의 λͺ©ν‘œλŠ” Sass와 100% ν˜Έν™˜λ˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 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에 : 접두사가 ν¬ν•¨λœ 선택기보닀 거의 10λ…„ μ•žμ„œ μžˆμŠ΅λ‹ˆλ‹€. μœ„μ—μ„œ λ§ν–ˆλ“―μ΄ 이 λ™μž‘μ„ λ³€κ²½ν•˜λŠ” 것은 LibSass의 λ²”μœ„μ— μ†ν•˜μ§€ μ•ŠμœΌλ©° 곡식 Sass νŒ€ μ—μ„œ ν•΄κ²°ν•΄μ•Ό ν•©λ‹ˆλ‹€.

λ°˜λ©΄μ— μƒˆλ‘œμš΄ scss ꡬ문은 (λŒ€λΆ€λΆ„) CSS의 μƒμœ„ 집합이 λ˜λ„λ‘ 보μž₯ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ 이유둜 : 접두사가 μžˆλŠ” μ„ νƒκΈ°λŠ” μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

@delijah μ½œλ‘ μ„ μ΄μŠ€μΌ€μ΄ν”„ν•˜μ—¬ μ—…κ·Έλ ˆμ΄λ“œν•œ ν›„ λ‹€μ‹œ μž‘λ™ν•˜λ„λ‘ ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

\:global
    .my-global-class-name
        background-color: red

@mattfysh 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. "\"λ₯Ό μ‚¬μš©ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λ©λ‹ˆλ‹€. 이제 λ‚΄ sass-linterλŠ” 그것을 μ’‹μ•„ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ ;) λ‚˜λŠ” 그것에 λŒ€ν•œ 문제λ₯Ό μ—΄ β€‹β€‹κ²ƒμž…λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰