scriptc: TypeScript 및 JavaScript를 네이티브 실행 파일과 WebAssembly로 컴파일
요약
scriptc는 TypeScript와 JavaScript 코드를 네이티브 실행 파일 및 WebAssembly로 컴파일하는 도구입니다. 이 컴파일러는 타입 검사를 통해 기계 코드를 생성하며, Node.js 설치 없이도 독립적으로 실행될 수 있게 합니다. 개발자는 이를 통해 기존 JS/TS 프로그램을 다양한 환경에서 배포할 수 있습니다.
핵심 포인트
- TypeScript/JavaScript를 네이티브 파일 및 WASM으로 컴파일
- Node.js 의존성 없이 독립적인 실행 가능 아카이브 생성
- 타입 검사를 활용하여 기계 코드 생성에 사용
- macOS, Linux, Windows에서 네이티브로 실행 가능
scriptc
<p> <a href="https://vercel.com/labs#active-experiments"><img alt="Vercel Labs Experiment" src="https://img.shields.io/badge/LABS-EXPERIMENT-0a0a0a.svg?style=for-the-badge&logo=Vercel&labelColor=000000" height="28"></a> <a href="https://www.npmjs.com/package/scriptc"><img alt="npm version: scriptc" src="https://img.shields.io/npm/v/scriptc.svg?style=for-the-badge&labelColor=000000" height="28"></a> <a href="https://github.com/vercel-labs/scriptc/blob/main/LICENSE"><img alt="License: Apache-2.0" src="https://img.shields.io/github/license/vercel-labs/scriptc.svg?style=for-the-badge&labelColor=000000" height="28"></a> <a href="https://www.npmjs.com/package/scriptc"><img alt="npm downloads per month: scriptc" src="https://img.shields.io/npm/dm/scriptc.svg?style=for-the-badge&labelColor=000000&label=npm%20downloads" height="28"></a> </p>scriptc는 TypeScript와 JavaScript를 네이티브 실행 파일 및 WebAssembly로 컴파일합니다. TypeScript 컴파일러가 검사하는 타입을 사용하여 기계 코드를 생성하며, 출력 결과물은 Node.js 설치 없이 실행됩니다. npm 패키지는 프로그램이 가져오는 것과 함께 컴파일됩니다. scriptc가 컴파일할 수 없는 코드는 빌드 시점에 진단(diagnostic)으로 보고되며, 가능하다면 리라이트 힌트(rewrite hint)도 제공합니다.
scriptc는 실험적인 도구이며 JavaScript, TypeScript 및 Node.js API의 일부만 지원합니다. 기존 프로그램에 대해 scriptc coverage를 실행하여 얼마나 많은 부분이 컴파일되는지 확인하고, 자세한 내용은 제한 사항과 Node.js 호환성 참고 자료를 참조하세요.
설치
Node.js 24 이상 및 npm을 사용하여 설치합니다:
$ npm install -g scriptc
설치된 컴파일러는 macOS, Linux, Windows에서 네이티브로 실행됩니다. Node.js는 설치하고 scriptc run으로 WASI 모듈을 실행하는 데만 필요합니다. 독립형 컴파일러 아카이브는 GitHub Releases에서도 이용 가능합니다.
실행 파일을 빌드하려면 링커(linker)와 플랫폼 SDK 또는 sysroot가 필요합니다. 필수 전제 조건은 [quickstart]에서, 호스트 요구 사항, 크로스 컴파일 및 WebAssembly에 대한 플랫폼 지원 정보는 [platform support]를 참고하세요.
프로그램 빌드하기
hello.ts 파일을 생성합니다:
const who = process.argv.length > 2 ? process.argv[2] : "world";
console.log(`hello, ${who}`);
scriptc run은 파일을 컴파일하고 결과를 실행합니다:
$ scriptc run hello.ts
hello, world
scriptc build는 실행 파일을 작성합니다:
$ scriptc build hello.ts -o hello >/dev/null
$ ./hello scriptc
hello, scriptc
위 예제들은 POSIX 셸 구문을 사용합니다. Windows에서는 hello.exe를 빌드하고 .\hello.exe로 실행하세요.
빌드하기 전에 무엇이 컴파일되는지 확인하려면 scriptc coverage hello.ts를 사용하세요. 자세한 내용은 [coverage reports]를 참고하세요.
Node API 사용하기
지원되는 Node API는 네이티브 런타임으로 컴파일됩니다. 예를 들어, server.ts가 있습니다:
import { createServer } from "node:http";
const server = createServer((req, res) => {
...
$ scriptc build server.ts -o server >/dev/null
$ ./server
listening on http://localhost:8080
npm 패키지 사용하기
npm 패키지는 사용자 코드와 함께 실행 파일로 컴파일되므로 런타임에 node_modules를 읽지 않습니다.
cli.ts 파일을 생성합니다:
import pc from "picocolors";
console.log(pc.green("hello from scriptc"));
$ npm install picocolors
$ scriptc build cli.ts -o cli >/dev/null
$ ./cli
...
패키지 지원은 부분적입니다. 어떤 패키지가 컴파일되는지, 그리고 이를 확인하는 방법은 [npm dependencies]를 참고하세요.
문서화
목차
- Introduction: scriptc가 무엇이며 어떤 것을 만들 수 있는지.
- Quickstart: 설치 및 첫 번째 실행 파일 만들기.
- Coverage reports: 기존 프로그램이 컴파일되는지 확인하기.
- Platform support: 크로스컴파일과 WebAssembly.
- CLI reference: 명령어, 옵션 및 출력 형식.
- Native program objects: 외부 빌드에서 컴파일러 출력을 사용하기.
- Native FFI: 컴파일된 프로그램에서 C ABI 함수 호출하기.
- WebAssembly modules: WASI 모듈 빌드 및 임베딩.
- Examples: 이 저장소의 프로그램 및 통합 예제.
기여 (Contributing)
소스 설정, 테스트, 네이티브 아티팩트 빌드 및 문서 개발에 대한 내용은 CONTRIBUTING.md를 참조하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 개발 자료 GitHub · 0da57016의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기