원문 캡처 · github.com
원문 캡처 · github.com

bscaff는 프로젝트 구조와 파일, 코드 조각, Git 저장소, URL, 템플릿을 저장했다가 필요할 때 다시 꺼내 쓰는 크로스플랫폼 명령줄 도구(CLI)다. 다만 현재 불안정한 사전 출시 단계로, 치명적인 버그가 있을 수 있고 운영 환경이나 자동화된 중요 작업에는 사용하지 말라고 안내한다. 명령줄 옵션과 설정 문법, 출력은 예고 없이 바뀔 수 있다.

설치와 실행

설치에는 Node.js 22.11.0 이상이 필요하며, 템플릿을 다룰 때는 Git도 필요하다.

bash
npm install -g @akashnag/bscaff

설치 여부와 사용 가능한 명령을 확인한다.

bash
bscaff --version
bscaff --help

소스에서 직접 빌드하려면 Node.js v22.11.0 이상과 npm이 필요하다. 템플릿을 사용할 경우 Git도 설치해야 한다.

bash
git clone https://github.com/akashnag/bscaff.git
cd bscaff
bash
npm install
bash
npm run build

빌드된 코드는 dist 디렉터리에 생성된다. 전역 링크를 만들어 어디서든 CLI를 실행하려면 다음과 같이 한다.

bash
npm link
bscaff --help

시험을 마친 뒤 링크를 제거할 수 있다.

bash
npm unlink -g bscaff

전역 링크를 만들지 않으려면 컴파일된 진입점을 직접 실행한다.

bash
node dist/index.js --help

반복해서 빌드하지 않고 개발 모드로 실행할 수도 있다.

bash
npm run dev

저장한 프로젝트와 템플릿 재사용

기존 디렉터리를 스냅샷으로 저장하고 새 위치에 추출하는 기본 명령은 다음과 같다.

bash
bscaff --key my-project save tree ./my-project
bscaff --key my-project extract ./new-project

저장된 스냅샷 전체를 확인하거나 특정 스냅샷의 내용을 살펴볼 수 있다.

bash
bscaff list
bscaff --key my-project list

디렉터리와 파일을 포함한 프로젝트 구조를 저장하고 다시 만들 수도 있다.

bash
bscaff --key node-api save dir ./node-api
bscaff --key node-api extract ./new-api

기존 디렉터리에서 재사용 템플릿을 만든다.

bash
bscaff --key web-app template create ./web-app

템플릿은 저장하고 공유해 프로젝트 뼈대를 만드는 데 사용할 수 있다. 변수 입력을 요청하거나 생성 전후에 명령을 실행하도록 설정할 수 있다.

bscaff는 완성된 프로젝트 외에도 디렉터리, 여러 파일, 개별 파일, 파일에서 가져온 텍스트와 코드 조각, 직접 입력한 텍스트, URL, Git 저장소나 ZIP 파일의 템플릿을 저장한다. 예를 들면 다음과 같다.

bash
bscaff --key dockerfile save files ./Dockerfile
bscaff --key common-utils save files ./utils.ts ./constants.ts
bscaff --key useful-url save url https://example.com/docs

Git 저장소도 재사용 가능한 스냅샷으로 저장할 수 있다. 저장할 때 .git 디렉터리는 포함되지 않는다.

bash
bscaff --key my-template template save https://github.com/example/project.git --source git

저장한 템플릿은 필요할 때 새 위치에 추출한다.

AI가 만든 구조와 변수 활용

AI 코딩 도구에서 복사한 프로젝트 트리를 실제 디렉터리 구조로 만들 수 있다. 예를 들어 클립보드에 다음과 같은 구조가 있다면 create tree 명령으로 생성한다.

text
my-app/
├── src/
│   ├── index.ts
│   └── utils.ts
├── package.json
└── README.md
bash
bscaff create tree ./my-app

파일을 만들 때 내용을 입력하도록 요청할 수도 있다. 이 기능은 AI가 제안한 프로젝트 구조를 디렉터리와 파일로 옮길 때 각 항목을 직접 만들지 않아도 되게 한다.

파일명과 디렉터리명, 텍스트 파일 내용에는 {{ variable }} 형식의 변수를 사용할 수 있다. 저장한 프로젝트 하나를 여러 프로젝트의 바탕으로 활용하는 방식이다. 변수 치환은 settings.yml 또는 템플릿 설정 파일인 bscaff-template.config.yml에서 제어한다.

text
{{ projectName }}/
├── src/
│   ├── {{ projectName }}.ts
│   └── utils.ts
├── package.json
└── README.md

파일 활용과 설정

저장한 콘텐츠를 명령줄에서 바로 활용할 수 있다. 예를 들어 다음 명령은 저장된 콘텐츠를 클립보드에 복사한다.

bash
bscaff --key config copy

저장한 파일과 텍스트를 열어 편집하거나 살펴볼 수도 있다. 템플릿에는 추출 전후에 실행할 스크립트를 선택적으로 지정할 수 있어, 프로젝트별 설정이나 정리 작업을 스캐폴딩 과정에 넣을 수 있다.

bscaff는 Linux, macOS, Windows에서 사용할 수 있도록 설계됐다. 편집기와 브라우저, 터미널의 플랫폼별 기본 설정은 설정 파일에서 지정한다. 데이터와 설정은 ~/.bscaff/ 아래에 저장되며, 설정 파일은 ~/.bscaff/settings.yml이다. 설정 예시는 다음과 같다.

yaml
textEditor: nano
browser: google-chrome
exclude:
 - .git
 - .vscode
 - node_modules
 - __pycache__
 - .pytest_cache
include: []
templatesSuffix: .jinja

설정 파일을 편집하려면 다음 명령을 실행한다.

bash
bscaff settings

기능과 전체 설정은 기능 문서에서 확인할 수 있다. 기여 지침은 CONTRIBUTING.md, 행동 강령과 개발 정보는 CODE_OF_CONDUCT.md에 있다.

bscaff는 GNU General Public License v2.0으로 배포된다. 제작자는 Akash Nag다.