๋ค์์ผ๋ก ๊ตฌ๋ฌธ ๋ถ์ ์ฑ๊ณต :
DIV {
width: 500px\9;
}
ParseError :์์ ์ธ์ ํ ์์๋ ์ ๋ ฅ :
DIV { width: 500px\9 }
์ด ๊ตฌ๋ฌธ์ https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css ์์ ์ฐพ์ ์ ์์ต๋๋ค.
๋ค, ์ด๊ฒ์ # 284์์ ์ธ๊ธ๋์์ต๋๋ค. ํ์ง๋ง ์ ๋ ์ด๊ฒ์ด ๋ฒ๊ทธ๋ก ๊ฐ์ฃผ๋์ด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
500px\9
๋ ์ค์ ๋ก ์ ํจ ํ์ง ์์ ๊ฐ ( "ํ์ค"๋ธ๋ผ์ฐ์ ์ ๊ฒฝ์ฐ 500px?
๊ฐ์ผ๋ฏ๋ก ๋ฌด์ ํจ)์ด์๋ ์ ํจํ CSS ๊ตฌ๋ฌธ์ด๋ฏ๋ก ๊ธฐ์ ์ ์ผ๋ก Less๋ ์ ๋ฌํด์ผํฉ๋๋ค.
@harobed ๋น์ ์ ๋ํ ์ถ๋ ฅ css๊ฐ ์๋ ๋ถํธ ์คํธ๋ฉ ๋ด๋ถ์์ ์์ค๋ฅผ ๋ ๊ฐ์ ธ์์ผํฉ๋๋ค.
@lukeapage ์๋ Less ์์ค๊ฐ ์๋ ์ปดํ์ผ ๋ Bootstrap ํ์ผ์ ๊ฐ์ ธ ์ค๋ ค๋ ๋ช ๊ฐ์ง ์ด์ ๊ฐ ์์ต๋๋ค. ํนํ ํ์ฌ๋ก์๋ ๋ค์ ์คํ์ด์ค / ์ ๋์ฌ (์ : .bs {<strong i="6">@import</strong> (less) 'bootstrap.css';}
๋ํ ๋ ๋ถํธ ์คํธ๋ฉ ํด๋์ค๋ฅผ ๊ฐ์ ธ ์ค๊ฑฐ๋ ๋์ ์ผ๋ก ์์ฑ ๋ ํน์ ํด๋์ค๋ฅผ ํ์ฅํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์
๋๋ค (Less ์์ค ๋ด์์ ํ์ฅ ํ ์ ์๊ธฐ ๋๋ฌธ์).
์ด๋ฌํ ํน์ ๊ฒฝ์ฐ์ ๋ํด ์ถ์๋์ง ์์ bootstrap.css
๊ฐ์ ธ ์ค๋ ๊ฒ์ ๋์ผํ๋ฉฐ Less๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค ( width: 500px\9;
๊ฐ ์์๋๋ก ์ปดํ์ผ๋๊ธฐ ๋๋ฌธ์). ๊ทธ๋์ ๋๋ ์ด๊ฒ์ด ๋ฏธ์ ๋ฌธ์ ์ ๋ ๋น์ทํ๋ค๊ณ ์๊ฐํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ถฉ๋ถํ ๊ณตํ ํ๊ฒ,
์ฐ๋ฆฌ๊ฐ ๊ณ ์ณ์ผํ๋ค๋ ๋ฐ ๋์ํ์ง ์์ต๋๋ค ..
๊ทธ๋ฌ๋ ์ถ์๋์ง ์์ ๋ฒ์ ์ผ๋ก ๊ตฌ๋ฌธ ๋ถ์ํฉ๋๋ค.
ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ธ๋ฏธ์ฝ๋ก ์์ด ์ต๋ช
๊ฐ์ด ์๋ํ๋๋กํ๋ ๊ฒ์
๋๋ค.
์ต๋ช ์ ๊ฐ์ผ๋ก ์๋ํ๋๋ก ์๋ํ์ง๋ง ์คํจํ์ต๋๋ค.
์ด๊ฑฐ ..
var match = parserInput.$re(/^([^@+\/'"*`(;{}-]*)(;|(?=\}))/);
if (match) {
return new(tree.Anonymous)(match[1].trim());
}
๊ทธ๋ฌ๋ ๊ณต๋ฐฑ ์๋์ ์ฝ๊ฐ ๋ณ๊ฒฝํฉ๋๋ค. ๋ํ ์๋๋ฅผ ์ป์์ง๋ง ์๋ํ์ง ์์์ต๋๋ค.
var match = parserInput.$re(/^(([^@+\/'"*`(;{}-\s]+|\s*?)+?)\s*(;|(?=\}))/);
if (match && match[3]) {
return new(tree.Anonymous)(match[1]);
}
๋ฏธ๋์ ๊ตฌํ ์์๊ฒ ๋์์ด๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@lukeapage " @harobed ๋น์ ์ ๋ํ ์ถ๋ ฅ css๊ฐ ์๋ ๋ถํธ ์คํธ๋ฉ ๋ด๋ถ์ ์์ค๋ฅผ ๋ ๊ฐ์ ธ์์ผํฉ๋๋ค"๋ฅผ ๋ช ํํ ํ์๊ฒ ์ต๋๊น? Less๋ฅผ ์ฒ์ ์ฌ์ฉํ๊ณ ๋ด๊ฐ ๋ง๋๋ WordPress Bootstrap ํ ๋ง์์ \ 9์ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๊น?
@harobed Bootstrap Less ์์ค์๋ \9;
๋๋ ์ด์ค์ผ์ดํ ๋ ~'\9'
์์ผ๋ฉฐ ์ด๋ฌํ ๋ช
๋ น๋ฌธ์ ์ปดํ์ผ๋ฌ์ ์ํด ์ ์ปดํ์ผ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ค์ ๋ก ์ปดํ์ผํ๋ ค๋ ๋ด์ฉ๊ณผ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค.
๋ด๊ฐ ์ฐธ์กฐ. ๋ด ํ ๋ง ๊ฐ๋ฐ ํด๋์๋ src์ public์ ๋ ์์์ด ์์ต๋๋ค. Bootstrap์ src / less / bootstrap์ ์์ผ๋ฉฐ src / less์ ์ฌ์ฉ์ ์ง์ Less ํ์ผ์ด ์์ต๋๋ค. ๋ด ํ ๋ง dev ํด๋์์ lessc src / less / style.less public / style.css๋ก ์ปดํ์ผํฉ๋๋ค.
์ด๊ฒ์ ์ต๊ทผ๊น์ง ์ ์๋ํ์ต๋๋ค. clean-css๋ฅผ ์ค์น ํ ๋ค์ ์ ๊ฑฐํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ปดํ์ผ์ด \ 9์ ์ค๋ฅ๋ฅผ ๋์ง๊ธฐ ์์ํ์ต๋๋ค. ๋๋ npm ์ฌ๋๋ค๊ณผ ํจ๊ป ์ผํ์ผ๋ฉฐ ๊นจ๋ํ ์ ๊ฑฐ๊ฐ ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ฏ๋ก ๋ฌธ์ ๊ฐ๋์ง ์์์ผํฉ๋๋ค.
๋ชจ๋ ์์ด๋์ด๋ฅผ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
์๋ ํ์ธ์.
๊ทธ๋ฐ ๋ค์ ์ปดํ์ผ์ด \ 9์ ์ค๋ฅ๋ฅผ ๋์ง๊ธฐ ์์ํ์ต๋๋ค.
์ค๋ฅ ๋ฉ์์ง์์ด ๋ฉ์์ง๊ฐ ๊ฐ๋ฆฌํค๋ ํด๋น ์ค์ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฉํฉ๋๋ค.
์, ๋ฌผ๋ก ์ ๋๋ค. ์๋ต์ ์ฉ์ํ์ญ์์ค.
๊ฐ์ฅ ์ต๊ทผ์ style.less๋ฅผ ๋ณต์ํ๊ณ ์ปดํ์ผ์ด ๋ค์ ์๋ํฉ๋๋ค.
์๊ฐ ๋ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค, @ seven-phases-max.
์ง๊ธ
DIV { left: 500px\9 }
๊ด์ฐฎ์ง ๋ง
DIV { left: -500px\9 }
์ฌ์ ํ ์คํจ
https://github.com/less/less.js/issues/1538 ์ ๋ ์ ์ ์ฐธ์กฐ๋ก bootstrap4 css๋ฅผ ๊ฐ์ ธ ์ค๋ ๋์ ์ ์๊ฒ ๋ฌธ์ ์์ต๋๋ค (bootstrap4๋ ๋ ์ด์ dist๊ฐ ์๋๋๋ค).
<strong i="7">@import</strong> (less, reference) "~bootstrap/dist/css/bootstrap.css";
@ /node_modules/bootstrap/dist/css/bootstrap.css (line 4475, column 31)
near lines:
<strong i="10">@media</strong> screen and (min-width: 0\0) {
.progress {
์ด๊ฒ์ ์ ๋ง ๋ฒ๊ทธ์ฒ๋ผ ๋ณด์ ๋๋ค. @ seven-phases-max @lukeapage ? ๊ฐ์ฌ!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
https://github.com/less/less.js/issues/1538 ์ ๋ ์ ์ ์ฐธ์กฐ๋ก bootstrap4 css๋ฅผ ๊ฐ์ ธ ์ค๋ ๋์ ์ ์๊ฒ ๋ฌธ์ ์์ต๋๋ค (bootstrap4๋ ๋ ์ด์ dist๊ฐ ์๋๋๋ค).
์ด๊ฒ์ ์ ๋ง ๋ฒ๊ทธ์ฒ๋ผ ๋ณด์ ๋๋ค. @ seven-phases-max @lukeapage ? ๊ฐ์ฌ!