사람함께에이전트▾
사람 — 직접 정하고 책임지는 비즈니스 규칙과 흐름. 직접 읽어보세요.
함께 — 개념은 알아두고, 세부 규칙은 에이전트가 따릅니다.
에이전트 — 에이전트가 따르는 규칙과 레퍼런스. 필요할 때 찾아보세요.
CLI 레퍼런스▾
AkanJS 레퍼런스▾
라이브러리 CLI
libs/의 공유 라이브러리를 만들고, 설치하고, 동기화하고, 점검하고, 지우는 명령 다섯 가지입니다. 여러 앱이 import할 도메인, 유틸리티, UI, 플랫폼 코드를 라이브러리에 둡니다.이 페이지에서 쓰는 말
용어설명
라이브러리
여러 앱이 함께 쓰는 코드를 담는
libs/ 아래 폴더입니다. 도메인 모듈, UI, 유틸리티를 둡니다.템플릿
shared, util처럼 Akan.js가 미리 만들어 둔 라이브러리로, install-library가 복사해 옵니다.akan.source
install-library가 라이브러리의 package.json에 남기는 스탬프로, 원본, 커밋이나 버전, 파일 해시가 담깁니다.드리프트
설치한 라이브러리의 파일이 스탬프에 적힌 해시와 더는 맞지 않는 상태입니다.
명령마다 바꾸는 것
명령
libs/<lib>루트
package.jsongit 기록
라이브러리 추가
create-library
✓
직접 채워 나갈 새 라이브러리를 만듭니다.
install-library
✓
✓
✓
shared, util 같은 템플릿을 복사해 옵니다.관리
sync-library
✓
라이브러리를 고친 뒤 생성 파일을 다시 만듭니다.
library-status
설치한 라이브러리가 그 뒤로 바뀌었는지 확인합니다.
제거
remove-library
✓
라이브러리 폴더를 통째로 지웁니다.
✓바뀜그대로
공통 규칙
- 라이브러리 이름을 적거나, 목록에서 고릅니다.
remove-library와sync-library는 이름이 없거나 틀리면libs/의 라이브러리 목록을 띄웁니다.create-library와install-library는 이름을 빼면 입력하라고 묻습니다. akan sync <lib>는sync-library와 같은 일을 합니다.create-library는 끝에 이 단계를 알아서 실행하고,akan lint <lib>도 린트 전에 실행합니다.- 스탬프는 설치한 라이브러리에만 있습니다.
create-library로 만든 라이브러리는library-status에서unstamped로 나옵니다.


실행하기 전에 작업 중인 변경을 먼저 커밋합니다.
install-library는 작업 트리 전체를 git add .로 올려 커밋하고, remove-library는 확인 없이 폴더를 지웁니다.관련 페이지
create-library
여러 앱이 함께 쓸 코드를 담을 새 공유 라이브러리를
libs/<lib-name>/에 만듭니다.
기본 폴더와 빈 서비스 모듈 하나로 시작하고, 끝에 sync-library를 실행합니다.형식
인자
lib-nameString필수
라이브러리 이름입니다. 소문자로 바꾸고 공백은
-로 바꾸며, 생략하면 입력을 받습니다.참고
이름설명
만드는 것
설정 파일과
env/, lib/, common/, srvkit/, webkit/, ui/ 폴더입니다.예시 모듈
lib/_<lib-name>/는 dictionary, service, signal, store만 있는 빈 서비스 모듈입니다.한 단어
소문자 한 단어로 짓습니다. 하이픈을 넣으면 예시 모듈의 클래스 이름에 그대로 들어가 코드가 깨집니다.
가져다 쓰기
앱에서는
@libs/<lib-name>/client, @libs/<lib-name>/server로 import하며, 따로 설정할 것은 없습니다.예시
remove-library
라이브러리의
libs/<lib>/ 폴더 전체를 확인 없이 지워 워크스페이스에서 없앱니다.
어떤 앱도 더는 그 라이브러리를 import하거나 동기화하거나 의존하지 않을 때 씁니다.형식
인자
libString
util처럼 libs/에 있는 라이브러리입니다. 생략하거나 잘못 적으면 목록에서 고릅니다.참고
이름설명
남는 것
앱의
@libs/<lib> import와 루트 package.json에 합쳐 둔 패키지는 그대로 남습니다.그다음
그 import를 지운 뒤, 라이브러리를 쓰던 앱마다
akan sync <app>을 실행합니다.예시
sync-library
라이브러리 하나의 생성 파일을 다시 만들고 의존성 목록을 갱신합니다.
파일을 추가하거나 이름을 바꾼 뒤, 패키지나 라이브러리 설정을 고친 뒤에 실행합니다.
형식
인자
libString
util처럼 libs/에 있는 라이브러리입니다. 생략하거나 잘못 적으면 목록에서 고릅니다.참고
이름설명
생성 파일
client.ts, server.ts, 각 폴더의 index.ts, lib/ 배럴 파일, akan.lib.json이며, 직접 고치지 않습니다.패키지
라이브러리가 import하는 패키지를 루트와 같은 버전으로 라이브러리의
package.json에 적습니다.쓰는 라이브러리
이 라이브러리가 import하는 다른 라이브러리의 생성 파일도 함께 새로 만듭니다.
예시
install-library
shared, util 같은 미리 만들어 둔 라이브러리 템플릿을 libs/<lib-name>/에 설치합니다.
다시 실행해도 됩니다. 라이브러리 소스는 새로 덮어쓰고, 테스트 환경 파일은 그대로 둡니다.형식
인자
lib-nameString필수
shared, util 같은 템플릿 이름입니다. 생략하면 입력을 받습니다.참고
이름설명
원본
설치된
akanjs 패키지에 라이브러리가 있으면 거기서, 없으면 Akan.js GitHub 저장소에서 복사합니다.테스트 환경
env/env.server.testing.ts가 없을 때만 env.server.example.ts를 복사해 만듭니다.스탬프
library-status가 비교 기준으로 쓰는 akan.source 스탬프를 남깁니다.패키지
라이브러리의 패키지를 루트
package.json에 합치되 버전이 더 높은 쪽을 남기고, bun install을 실행합니다.git 커밋
바뀐 것이 있으면 복사본을, 이어서 패키지 병합을 커밋하며, 둘 다 작업 트리 전체를
git add .로 올립니다.shared
shared는 util을 import하므로, create-workspace --libs true처럼 util을 먼저 설치합니다.예시
library-status
각 라이브러리가 설치해 온 원본과 아직 같은지 보고합니다.
libs/의 모든 라이브러리를 살펴 clean, drifted, unstamped 중 하나로 표시합니다.형식
옵션
--formatString기본값 texttext | json · -f
text는 사람이 읽는 목록이고, json은 라이브러리마다 스탬프와 해시를 담은 배열입니다.참고
이름설명
clean
라이브러리 파일의 해시가
akan.source 스탬프의 값과 같습니다.drifted
라이브러리를 설치한 뒤로 파일이 바뀌었습니다.
unstamped
스탬프가 없습니다.
create-library로 만든 라이브러리가 그렇습니다.비교 대상
libs/<lib>/에서 gitignore된 파일과 env/를 뺀 모든 파일이며, 아직 커밋하지 않은 파일도 들어갑니다.akan.source
origin, sha(커밋 또는 패키지 버전), hash, syncedAt을 담습니다.종료 코드
보고만 합니다. 드리프트가 있어도 명령은 성공으로 끝납니다.
예시