Visual Studio Code extension for Compact
Compact용 [Visual Studio Code 확장 프로그램]은 Midnight의 Compact 언어로 스마트 컨트랙트를 작성하고 디버깅할 수 있도록 지원하는 플러그인입니다.
DApp 개발자는 다음 방법으로 새 스마트 컨트랙트를 생성할 수 있습니다:
- 파일 템플릿 사용
- 코드 스니펫을 활용하여 처음부터 작성
Features
Syntax highlighting
스마트 컨트랙트는 Compact 언어로 작성됩니다. 다음 언어 요소를 인식하여 서식을 적용합니다:
enum,struct,circuit와 같은 Compact 키워드- 문자열, 불리언 및 숫자 리터럴
- 주석
- 괄호

Building Compact source files and error highlighting
스마트 컨트랙트를 빌드하려면 일반적으로 package.json에 다음과 같이 스크립트 정의를 추가해야 합니다:
"scripts": {
"compact": "compact compile --vscode ./src/myContract.compact ./src/managed/myContract"
}
위 설정은 Compact 컴파일러가 셸의 명령 검색 경로에 있다고 가정합니다(경로에 없는 경우 Midnight Compact 컴파일러 실행 안내를 참고하세요). --vscode 옵션을 사용하면 오류 메시지에서 줄 바꿈이 제거되어 VS Code 환경에서 올바르게 표시됩니다.
이를 통해 다음과 같이 스마트 컨트랙트를 컴파일할 수 있습니다:
yarn compact
복잡한 컨트랙트를 편집할 때 빠른 피드백을 원한다면, 다음과 같이 작업 파일 .vscode/tasks.json을 구성하는 것이 편리합니다:
{
"version": "2.0.0",
"tasks": [
{
"label": "Compile compact file to JS",
"type": "shell",
"command": "npx compact compile --vscode --skip-zk ${file} ${workspaceFolder}/src/managed",
"group": "build",
"presentation": {
"echo": true,
"reveal": "never",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": true,
"revealProblems": "onProblem"
},
"problemMatcher": [
"$compactException",
"$compactInternal",
"$compactCommandNotFound"
]
}
]
}
위 구성은 --skip-zk 플래그로 circuit 생성을 건너뜁니다. circuit 생성은 시간이 오래 걸릴 수 있으며, 구문만 확인할 때는 불필요합니다.
또한 VS Code에 대한 problemMatcher를 구성할 수 있습니다:
"problemMatcher": [
"$compactException",
"$compactInternal",
"$compactCommandNotFound"
]
이렇게 하면 컴파일러가 보고하는 모든 오류가 Problems 탭에 표시됩니다.
Code snippets
VS Code 확장 프로그램은 Compact 스마트 컨트랙트 편집 시 다음 코드 스니펫을 제공합니다:
ledger(state)- ledger 내
constructor - 내보낼 수 있는
circuit(function/transition) witness(privatefunction)- constructor
- Compact
standard library가져오기 (init,stdlib) if구문 (cond)map(for)foldenumstructmoduleassertpragma
또한 컨트랙트에 대한 간단한 Compact 스켈레톤을 생성하는 compact 템플릿이 있습니다.

New Compact smart contract
DApp을 만들 때 빈 ledger와 단일 circuit로 구성된 새 스마트 컨트랙트를 생성하려면:
- 명령 팔레트를 엽니다 (Cmd+Shift+P).
- Snippets: Fill File with Snippet을 선택합니다.
- Compact를 선택합니다. 주의: 기존 파일에서 이 작업을 수행하면 파일 내용이 덮어쓰여집니다. 파일 안에서 함수 이름을 입력하기 시작하면 다른 스니펫도 사용할 수 있습니다.

License
Compact용 Visual Studio Code 확장 프로그램은 Apache 2.0 라이선스로 배포됩니다.