λ€μκ³Ό κ°μ΄ λ³μλ‘ λ‘λν λ³μ νμΌμ κ²°μ νλ index.less νμΌμ΄ μμ΅λλ€.
@theme-variant: "a-theme.less";
<strong i="6">@import</strong> "./@{theme-variant}";
ν΄λΉ μΈλ±μ€ νμΌμ λ‘λλλ νμΌμ΄ μ μ΅λλ€.
<strong i="10">@import</strong> "~theme-variant-variables";
webpack.config.js
νμΌμμ λ³μ κ°μ μ€μ νκ³ μμ΅λλ€.
lessOptions.modifyVars = {
"theme-variant": `"${v}-theme.less"`
}
index.less νμΌμ λ΄μ©μ μ§μ κ°μ Έμ¨ λ μ μ νμΌλ‘ μ΄λνλ©΄ λͺ¨λ κ²μ΄ μμλλ‘ μλν©λλ€. μ¬νκ²λ λ λ μ€μ μ§μ κ°μ Έμ¨ νμΌμ΄ μ μ νμΌ μ체λ₯Ό κ°μ Έμ€λ νμΌμ΄ μλμ λ©μΆ₯λλ€. μμ ꡬμ±μΌλ‘ λ μ μ λ‘λ νΈμΆμ λ³Ό μ μμΌλ―λ‘ λ μ μ μ»΄νμΌλ¬κ° κ°μ Έμ¨ λ μ μ νμΌμ λ³μ/μ΅μ μ μ ννμ§ μλλ€κ³ μΆμΈ‘νκ³ μμ΅λλ€. μμμΈκ°μ?
λλ μ΄κ²μ΄ #2772μμμ κ°λ€κ³ μκ°ν©λλ€ - ν λ‘ μ μ€κ°μ 보μμμ€(μλ₯Ό λ€μ΄ modifyVars
λ λ³μλ₯Ό μ μνλ ν¨κ³Όκ° μμ§λ§ κ΄μ¬μλ import λ¬Έμ΄ μ΄λ―Έ νκ° λ νμ μ΅λλ€ ). κ·Έλ¬λ https://github.com/less/less.js/issues/1400#issuecomment -137128461λ μ°Έμ‘°νμμμ€.
κ°λ¨ν λ§ν΄μ μμ μ λ€μκ³Ό κ°μ΅λλ€. import λ¬Έ λ΄μ λ³μ 보κ°μ νΈλ¦¬ν κ²μ΄μ§λ§ μ§μ° νκ° μμΉκ³Ό μ§μ μ μΌλ‘ μΆ©λν©λλ€. λ°λΌμ 볡μ‘ν ꡬ쑰νμ κ΄ν΄μλ μ΄λ¬ν μ’
λ₯μ μ¬μ©μ μ μλ₯Ό λ¬μ±νλ λ€λ₯Έ λ°©λ²μ μ°Ύλ κ²μ΄ μ’μ΅λλ€(μ: λ€λ₯Έ ν
λ§ νμΌμ λν΄ λ€λ₯Έ λλ ν 리λ₯Ό μ¬μ©ν λ€μ ν΄λΉ paths
μ΅μ
μ μ νμΌλ‘ μ€μ ).
λ΅μ₯μ λ³΄λ΄ μ£Όμ μ κ°μ¬ν©λλ€. λ³μλ JSμμ μ§μ κ°μ Έμ¨ μ μ μμ νμΌμμ μ λ°μ΄νΈλλ©°, λ³μκ° μ λ°μ΄νΈλμ§ μμ λ€λ₯Έ μ μ μμ νμΌμμ κ°μ Έμ¨ νμΌμΌ λΏμ λλ€. λ κ²½μ° λͺ¨λ κ²μΌλ₯Έ νκ°κ° νμ€ν λ°μν©λκΉ? var logic/config μμ μ΄ λ κ°μ Έμ¨ νμΌμ μ μ©/μ λ¬λμ§ μλ κ² κ°μ΅λλ€. μλλ©΄ λ΄κ° λκ°λ₯Ό λμΉκ³ μμ΅λκΉ?
λ³μλ JSμμ μ§μ κ°μ Έμ¨ μ μ μμ νμΌμμ μ λ°μ΄νΈλλ©°, λ³μκ° μ λ°μ΄νΈλμ§ μμ λ€λ₯Έ μ μ μμ νμΌμμ κ°μ Έμ¨ νμΌμΌ λΏμ λλ€.
κΈμμ, κ·Έκ²λ³΄λ€ λ κΉλ€λ‘μ΅λλ€. μ§μ° νκ°κ° μλνλ €λ©΄ μ»΄νμΌλ¬κ° μ½λμ λνλλ μμκ° μλ μ νλ³ λ‘ λ€μν μΈμ΄ μν°ν°(λμΌν λ²μ λ΄)λ₯Ό νκ°ν΄μΌ ν©λλ€. μ¦, (λλ΅) imports -> mixins - > λ³μ.
μ΄μ <strong i="9">@import</strong> "@{var}";
κ° μλ κ²½μ° μ»΄νμΌλ¬λ κ°μ Έμ€κΈ°(λ° λͺ¨λ νμ κ°μ Έμ€κΈ°) μ μ μ£Όμ΄μ§ λ³μλ₯Ό κ°μ λ‘ νκ°ν΄μΌ νλ©° μ΄κ²μ΄ μ 체λ₯Ό λ§μΉλ κ²μ
λλ€(μΌλ°μ μΌλ‘ μ΄λ¬ν λ¨μ©μ κ²°κ³Όλ λ¨μν μ μλμ§ μμ΅λλ€. ν κ²½μ°(λλΆλΆ λ§€μ° λ¨μν¨)μμ μλνκ³ λ€λ₯Έ κ²½μ°μλ μλνμ§ μμ).
λ κ°μ§ μ§μ μ μΌλ‘ μΆ©λνλ κΈ°λ₯μ΄ κ²°ν©λ λ μ»΄νμΌλ¬κ° μΌκ΄λ λμμ 보μ₯ν μ μλ λ°©λ²μ μμ΅λλ€.
μ¦, modifyVars
κ° νμ κ°μ Έμ€κΈ°μμ "λ³μλ₯Ό μ
λ°μ΄νΈ"νμ§ μλλ€λ κ²μ΄ μλλΌ μ
λ°μ΄νΈλ λ³μ κ° μμ²΄κ° μΈλΆ μμ€ κ°μ Έμ€κΈ°μ μν₯μ λ―ΈμΉ μ μλ€λ κ²μ
λλ€(μ΄λ¬ν κ°μ Έμ€κΈ°κ° μ΄λ―Έ "μλ£"λμκΈ° λλ¬Έμ).
κ·Έλ¦¬κ³ λ¬Έμκ° λ€μκ³Ό κ°μ΄ λ§νλλΌλ :
v2.0.0 μ΄μ μλ λ£¨νΈ λλ νμ¬ λ²μμμ μ μΈλ λ³μλ§ κ³ λ €λμμΌλ©° λ³μλ₯Ό μ°Ύμ λ νμ¬ νμΌ λ° νΈμΆ νμΌλ§ κ³ λ €λμμ΅λλ€.
... v2 μ΄νμλ λ³λ‘ λμμ§μ§ μμμ΅λλ€. λ λ§μ μ‘°ν©/μ¬μ© μ¬λ‘λ₯Ό κ°μ /ν΄λ¬μ§ μμ νμ§λ§ λͺ¨λ κ²μ κ³ μΉ μλ μμ΅λλ€. μμΈν λ΄μ©μ #1108, νΉν #2246μ μ°Έμ‘°νμμμ€.
var logic/config μμ μ΄ λ κ°μ Έμ¨ νμΌμ μ μ©/μ λ¬λμ§ μλ κ² κ°μ΅λλ€.
μλμ(λ¨μν νμΌμ΄ νλμ ν° λ¬Έμμ΄λ‘ ν¨κ» νκ°λκΈ° λλ¬Έμ
λλ€). λ¬Έμ κ° λ€λ₯Έ κ³³μ μμ§ μμ ν νμΈνλ €λ©΄ λ€μμ μΆκ°νκΈ°λ§ νλ©΄ λ©λλ€.
foo {bar: @theme-variant}
κ΄μ¬ νμΌλ‘ μ΄λνκ³ κ²°κ³Όλ₯Ό νμΈν©λλ€.
κ·Έλ°λ°. μ¬μ© μ¬λ‘μ κ²½μ°("*-theme.less"κ° νΉμ ν λ§μ λν λ³μ/λ―Ήμ€μΈμ κ΄ν κ²μΈ κ²½μ°) λ€μκ³Ό κ°μ΄ μλν μ μμ΅λλ€.
<strong i="7">@import</strong> "a-theme.less";
λ₯Ό λͺ
μμ μΌλ‘ κ·Έλλ‘ λκ±°λ(μ¦, λ³΄κ° μμ΄) μμ ν μ κ±°ν©λλ€.modifyVars
λ₯Ό μ¬μ©νμ¬ κ°μ Έμ€κΈ° λͺ
λ Ήλ¬Έ μ체λ₯Ό μ€μ ν©λλ€(μ: <strong i="11">@import</strong> "custom-theme.less";
μ§μ ).modifyVars
λ λ³μ bla-bla-blaμ κ΄ν κ²μΈ κ²μ²λΌ κ°μ₯νμ§λ§ μ€μ λ‘λ λ£¨νΈ νμΌ λμ μμμ ν
μ€νΈλ₯Ό μΆκ°νλ κ² μΈμλ μ무 κ²λ νμ§ μμ΅λλ€. μ¦ lessc
μ κ²½μ°μλ $ --modify-vars="whatever-less-code foo {bar: baz;}"
μ
λλ€. webpackμ less-loaderκ° ν΅κ³Όν μ μλ νμμ΄ λ¬΄μμΈμ§ λͺ¨λ₯΄κ² μ΅λλ€. μ... lessOptions.modifyVars = "an arbitrary code";
μλ§λ?
κ·Έκ²μ λΆλͺ
ν ν΄νΉμ΄μ§λ§ μ€μ λ‘λ μλΉν μμΈ‘ κ°λ₯ν ν΄νΉμ
λλ€(μ΄κΈ° 콀보μ²λΌ μΈμ΄ μμ²΄κ° μλ modifyVars
νμλ§ λ¨μ©νκΈ° λλ¬Έμ).
@seven-phases-max κ·νμ λ΅μ₯κ³Ό μμ΄λμ΄μ λλ¨ν κ°μ¬λ립λλ€. μ΄λ² μ£Όμ λ μμΈν μ‘°μ¬νκ³ μ£Ό νλ°μ μ΄ λ¬Έμ λ₯Ό μ λ°μ΄νΈ/μ’ λ£νλλ‘ μλ¦Όμ μ€μ νκ² μ΅λλ€. λ€μ νλ² κ°μ¬ν©λλ€.
μ€μ λ‘ μ΄λ»κ²λ ν΄κ²°ν μ μλ λ¬Έμ λΌκΈ°λ³΄λ€λ μμλ(μ΄ κ²½μ° "μ μλμ§ μμ/μ§μ λμ§ μμ"μΌλ‘ μ μλ) λμμ λ κ°κΉκΈ° λλ¬Έμ μ΄κ²μ λ«κ² μ΅λλ€.
κ°μ μμ΄λμ΄μ νΉν PRμ μΈμ λ νμνμ§λ§... κ°κΉμ΄ μ₯λμ λꡬλ μ΄μ λν΄ μΈκΈνμ§ μμ κ²μ
λλ€.