sql-parser-cst 및 실제 Prettier 형식 지정 알고리즘을 사용하는 SQL용 Prettier 플러그인입니다.
라이브로 해보세요!
JavaScript용 Prettier와 마찬가지로 이 플러그인은 길이에 따라 SQL 표현식의 형식을 다르게 지정합니다. 짧은 SQL 쿼리는 한 줄로 형식화됩니다.
SELECT a, b, c FROM tbl WHERE x > 10 ;
더 긴 쿼리의 경우 각 절이 별도의 줄에 인쇄됩니다.
SELECT id, client . name , client . priority
FROM client
WHERE client . id IN ( 12 , 18 , 121 );
더 긴 것은 각 절의 내용을 들여쓰기합니다:
SELECT
client . id ,
client . name AS client_name,
organization . name AS org_name,
count ( orders . id ) AS nr_of_orders
FROM
client
LEFT JOIN organization ON client . organization_id = organization . id
LEFT JOIN orders ON orders . client_id = client . id
WHERE
client . status = ' active '
AND client . id IN ( 28 , 214 , 457 )
AND orders . status IN ( ' active ' , ' pending ' , ' processing ' )
GROUP BY client . id
ORDER BY client . name
LIMIT 100 ;
현재 이 플러그인은 대부분의 구문 요소를 유지하고 주로 공백 레이아웃에 중점을 둡니다.
사용된 SQL 형식화 스타일의 개요는 STYLE_GUIDE를 참조하세요.
다른 Prettier 플러그인처럼 설치하세요:
npm install --save-dev prettier prettier-plugin-sql-cst
# or
pnpm add --save-dev prettier prettier-plugin-sql-cst
# or
yarn add --dev prettier prettier-plugin-sql-cst
그런 다음 선택한 편집기에 대한 Prettier 명령줄 도구 또는 Prettier 확장을 통해 SQL 파일에 사용하세요.
기본적으로 플러그인은 파일 확장자를 기반으로 SQL 언어를 결정합니다.
.sql
또는 .sqlite
- SQLite.bigquery
- BigQuery .prettierrc.json
파일에서 더 예쁜 구성으로 이 동작을 재정의할 수 있습니다.
{
"plugins" : [ " prettier-plugin-sql-cst " ],
"overrides" : [
{
"files" : [ " *.sql " ],
"options" : { "parser" : " bigquery " }
}
]
}
또는 package.json
안에 저장할 수도 있습니다.
{
"prettier" : {
"plugins" : [ " prettier-plugin-sql-cst " ],
"overrides" : [
{
"files" : [ " *.sql " ],
"options" : { "parser" : " bigquery " }
}
]
}
}
플러그인은 다음 파서를 제공합니다.
sqlite
bigquery
postgresql
( 실험적! 충돌 예상 )mysql
( 실험적! 충돌 예상 )mariadb
( 실험적! 충돌 예상 ) 표준 Prettier 옵션 printWidth, tabWidth, useTabs가 적용됩니다. 또한 몇 가지 SQL 관련 옵션도 있습니다.
API 옵션 | 기본 | 설명 |
---|---|---|
sqlKeywordCase | upper | SQL 키워드를 upper 또는 lower 로 변환하거나 기존 키워드를 preserve . 현재 preserve sqlCanonicalSyntax: true 와 다소 호환되지 않습니다(예: 추가된 AS 키워드는 항상 대문자입니다). |
sqlParamTypes | [] | 바인딩된 매개변수 유형의 배열: ? , ?nr , $nr , :name , @name , $name . |
sqlCanonicalSyntax | true | 활성화되면 별칭에서 AS 사용을 강제하고 <> 비교를 != 로 바꾸는 등 키워드와 연산자에 대한 일부 독단적인 변경을 수행합니다. 자세한 내용은 STYLE_GUIDE를 참조하세요. (0.11.0부터) |
sqlAcceptUnsupportedGrammar | false | 일반적으로 플러그인이 지원하지 않는 SQL 구문을 발견하면 오류가 발생하고 어떤 형식도 전혀 지정되지 않습니다. 이 옵션을 활성화하면 인식하지 못하는 SQL 문을 건너뛰고 그대로 둡니다. |
VSCode 내에서 이 플러그인을 사용하려면 Prettier VSCode 확장을 설치하세요.
Prettier VSCode 문서에 따라 기본 포맷터로 구성하세요.
*.sql
파일에 대해 Prettier를 활성화하려면 prettier.documentSelectors를 구성해야 할 수도 있습니다.
Prettier가 무엇인지, 무엇을 하고 있지 않은지 확인하려면 VSCode 출력 창을 열고 Prettier 드롭다운을 선택하세요. 형식에 따라 창에 inferredParser
표시되어야 합니다. "parser": "sqlite"
(또는 더 예쁜 구성 overrides
의 섹션 내에서 구성한 perser)와 이 패키지에 대한 경로가 포함된 plugins
표시하여 이를 재확인해야 합니다. 해당 부분이 보이지 않는다면 Prettier는 이 패키지를 사용하지 않는 것입니다.
새로운 SQL 언어에 대한 지원은 sql-parser-cst에서 지원되는 이러한 언어에 따라 달라집니다. 정말로 원한다면 파서 저장소에서 해당 문제에 대한 새 문제를 열 수 있습니다. 그러나 새로운 방언에 대한 파서 지원을 구현하려면 많은 작업이 필요하다는 점에 유의하세요. PostgreSQL, MySQL 및 MariaDB의 지속적인 구현이 완료되지 않는 한 다른 언어에 대한 작업이 시작될 가능성은 거의 없습니다.
prettier- prettier-plugin-sql-cst
plugin-embed를 사용하세요.
현재 이 플러그인은 두 가지 SQL 방언을 지원합니다.
또한 다음 방언에 대한 실험적 지원도 제공합니다.
주요 제한 사항은 파서가 이러한 방언의 전체 구문을 지원하지 않는다는 것입니다. 이러한 방언에 더 특정한 구문에 대해 파서가 충돌할 것으로 예상해야 합니다. 그러나 구문 분석이 성공하는 한 형식 지정도 성공해야 합니다. 주로 SELECT, INSERT, UPDATE, DELETE 문의 형식이 작동할 것으로 예상할 수 있습니다.
이 제한을 극복하기 위해 sqlAcceptUnsupportedGrammar
옵션을 활성화하면 플러그인이 인식하지 못하는 SQL 문을 건너뛰게 됩니다.
SQL 형식 지정 스타일의 세부 사항은 여전히 변경될 수 있습니다. 일반적인 원칙은 지금쯤 대부분 자리를 잡았을 것입니다.