PostCSS의 구조
PostCSS의AST
PostCSS 자체는 CSS의 서버일 뿐 그렇게 큰 코드 기반은 아니다.PostCSS는 CSS를 수신하는 소스 코드를 입력하여 해석하고 독자적인AST(Abstract Syntax Tree, 추상 문법 나무)를 생성합니다.
실제 아스트가 어떤지 보자.
우선 다음 내용으로 파일명
input.css
을 작성한다..qiita {
color: #fff;
background-color: #4ea30a;
}
그리고 input.css
코드를 지우고 표준 출력AST를 출력합니다.// parse.js
const fs = require('fs')
const util = require('util')
const postcss = require('postcss')
const css = fs.readFileSync('./input.css')
const ast = postcss.parse(css)
console.log(util.inspect(ast, false, null))
실행:$ node parse.js
Root {
raws: { semicolon: false, after: '\n' },
type: 'root',
nodes:
[ Rule {
raws: { before: '', between: ' ', semicolon: true, after: '\n' },
type: 'rule',
nodes:
[ Declaration {
raws: { before: '\n ', between: ': ' },
type: 'decl',
parent: [Circular],
source:
{ start: { line: 2, column: 3 },
input:
Input {
css: '.qiita {\n color: #fff;\n background-color: #4ea30a;\n}\n',
id: '<input css 1>' },
end: { line: 2, column: 14 } },
prop: 'color',
value: '#fff' },
Declaration {
raws: { before: '\n ', between: ': ' },
type: 'decl',
parent: [Circular],
source:
{ start: { line: 3, column: 3 },
input:
Input {
css: '.qiita {\n color: #fff;\n background-color: #4ea30a;\n}\n',
id: '<input css 1>' },
end: { line: 3, column: 28 } },
prop: 'background-color',
value: '#4ea30a' } ],
parent: [Circular],
source:
{ start: { line: 1, column: 1 },
input:
Input {
css: '.qiita {\n color: #fff;\n background-color: #4ea30a;\n}\n',
id: '<input css 1>' },
end: { line: 4, column: 1 } },
selector: '.qiita' } ],
source:
{ input:
Input {
css: '.qiita {\n color: #fff;\n background-color: #4ea30a;\n}\n',
id: '<input css 1>' },
start: { line: 1, column: 1 } } }
AST를 들으면 어려울 수 있지만 JavaScript의 대상일 뿐입니다.이번 구조는 우선Root
노드가 있고, 아래에는 1개Rule
노드가 있으며, 아래에는 2개Declaration
노드(속성선언)가 있다.각 노드source
의 속성은 소스 맵입니다.PostCSS 프로세스
PostCSS는 위에서 설명한 대로 CSS 코드를 적용하여 AST를 생성합니다.그런 다음 AST를 CSS 문자열로 변환하면 됩니다.PostCSS 자체는 AST 변환을 수행하지 않습니다.즉, PostCSS 단일체는 CSS를 변환하지 않습니다.
실제 변환 CSS 처리는 PostCSS 플러그인에 의해 수행됩니다.PostCSS에서 여러 플러그인을 조합하여 읽는 순서대로 실행할 수 있습니다.플러그인은 AST를 받아들여 임의로 변환된 AST로 돌아가는 프로그램을 말한다.
또한 PostCSS는 AST를 쉽게 조작할 수 있는 편리한 API를 제공합니다.
내일 이 API를 사용하여AST의 전환 방법을 설명하겠습니다.
Reference
이 문제에 관하여(PostCSS의 구조), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/morishitter/items/ff6c39e7651683403e69텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)