UNPKG

@mornya/cli-libs

Version:
253 lines (224 loc) 9.64 kB
# CLI Libs ![npm](https://img.shields.io/npm/v/@mornya/cli-libs) ![node](https://img.shields.io/node/v/@mornya/cli-libs) ![types](https://img.shields.io/npm/types/@mornya/cli-libs) ![downloads](https://img.shields.io/npm/dw/@mornya/cli-libs) ![license](https://img.shields.io/npm/l/@mornya/cli-libs) The project of CLI tools for `mornya` libraries. > This project has been created by [Vessel CLI](https://www.npmjs.com/package/@mornya/vessel). For a simple and quick reference about it, click [here](https://mornya.github.io/documents/guide/vessel.md). ## About CLI 개발에 사용되는 모듈들에 대해 집합적인 형태로 제공되는 패키지. ## Installation 해당 라이브러리를 사용 할 프로젝트에서는 아래와 같이 의존성 모듈로 설치한다. ```bash $ npm install --save @mornya/cli-libs or $ yarn add @mornya/cli-libs ``` ## Modules in the package 본 패키지에는 아래와 같은 모듈들을 포함한다.<br> 제공되는 모듈과 메소드 사용법 등은 코드 스니핏을 참고한다. ### Args module 프로세스 실행시 명령줄라인의 파라미터 값을 정제하여 제공한다. ```typescript // process.argv 커맨드라인 파라미터를 배열화하여 리턴 function parse(): string[] {} // 커맨드라인 파라미터에 해당하는 값이 존재하는지 여부 리턴 function has(name: HasName): boolean {} // 커맨드라인 파라미터에 해당하는 값들이 존재하는지 여부를 모두 체크하여 리턴 function hasAll<Keys extends string, T = KeyValueFlag<Keys>>(names: HasName[]): T {} // 커맨드라인에서 수행할 액션에 대한 정의(actionMap)를 파라미터로 입력받아, // 커맨드라인 옵션(process.argv)에 해당하는 action을 반환 function getArguments<Keys extends string>(actionMap: ActionMap<Keys>): IArguments {} ``` ### Command module 프로세스 실행 관련 메소드들을 제공한다. ```typescript // 동기적 커맨드 실행 function run( cmd: string, args: IArgs, executor?: (message: string, error?: Error) => void, hasOutput: boolean = true, ): boolean {} // 동기적 커맨드 실행 및 결과 문자열을 리턴 function get(cmd: string, args: IArgs): string {} // 프로젝트 내 사용중인 패키지 매니저가 NPM 혹은 Yarn인지의 여부 리턴 function getPackageManagerInfo(rootPath: string): IPackageManagerInfo {} ``` ### Files module 파일처리 관련 메소드들을 제공한다. ```typescript // 파일 경로 구분자를 정제 function dir(...names: string[]): string {} // 입력된 GLOB 형태의 경로 내 매치되는 파일목록을 찾아 리턴 // 매치 별 콜백함수 실행 후 false를 리턴하면 이후 매치 별 콜백은 실행하지 않는다 function getGlob( globPath: GlobPath, callback: ((item: string, index: number) => boolean | void) = () => {}, ): string[] {} // 프로젝트 실경로 리턴 function getRealPath(): string {} // 프로젝트 루트 디렉토리로부터 resolve된 경로를 리턴 function resolvePath(...args: string[]): string {} // 입력 디렉토리 포함 모든 하위 파일/디렉토리 삭제 (rm -rf) function rimraf(globPath: GlobPath): string[] {} // 입력 디렉토리 내 모든 하위 파일/디렉토리 삭제 function emptyDir(globPath: GlobPath): string[] {} // 디렉토리 트리 생성 function mkdirs(dirName: string): void {} // 파일/디렉토리 이동 function move(srcGlobPath: GlobPath, destPath: string): string[] {} // 일반/심볼릭링크로 대상 파일 복사 function copy( srcGlobPath: GlobPath, destPath: string, isSymlink: boolean = false, ): string[] {} // 예외 디렉토리/파일을 제외한 복사 function copyDir( srcGlobPath: GlobPath, destPath: string, exceptFiles: string[] = [], ): string[] {} // 디렉토리/파일이 존재하는지 여부 리턴 function isExist(dirName: string): boolean {} // 입력 디렉토리 내 디렉토리/파일이 존재하는지 여부 리턴 function isEmptyDir(dirName: string): boolean {} // 입력 디렉토리 내 디렉토리/파일 목록을 리턴 function list(dirName: string): string[] {} // 텍스트 파일 컨텐츠를 읽어 리턴 function read(fileName: string): string {} // 텍스트 파일 컨텐츠를 읽어 JSON 형태로 리턴 function readJSON<T = {}>(fileName: string): T {} // 문자열을 텍스트 파일로 저장 function write(fileName: string, value: string): void {} // 객체를 Prettified JSON 형태로 저장 function writePrettyJSON( fileName: string, value: {}, maxLineLength: number = 1, ): void {} // 입력한 디렉토리 내 디렉토리/파일 목록을 얻고 해당 아이템에 대해 콜백 실행 function getDirectoryFiles( dirName: string, executor: (isDir: boolean, relPath: string, currDir: string, file: string) => boolean | void, ): void {} // 입력된 targetPaths 중에 존재하는 디렉토리/파일(glob 형태 가능)이 있는 목록만 골라서 리턴 function getFilteredExistPaths( rootPath: string, targetPathList: string[] = [], isOnly: boolean = false, ): string[] {} // 프로젝트 내 환경설정을 가져오는 용도. 로드되는 위치별 순서: // 1. "[rootPath]/package.json > [name]" 항목 // 2. "[rootPath]/[filename]" ([filename] 지정시) // 3. "[rootPath]/[name].config.*" function getConfig<T>( rootPath: string, name: string, filename?: string, ): GetConfig<T> {} ``` ### Icons module OS에 맞게 변환된 출력용 이모티콘을 제공한다. ```typescript import { Icons } from '@mornya/cli-libs'; // 아이콘 출력 console.log(Icons.icon.okay); ``` ### Key module 콘솔에서 간단한 키보드 입력 관련 메소드를 제공한다. ```typescript // 표준입력을 통해 키입력 이벤트 발생시 콜백 실행 function pressed(callback: Callback): void {} ``` ### Log module 콘솔 로그 관련 메소드들을 제공한다. ```typescript // 로거 설정 function setLogger(logger: (...args: any[]) => any): void {} // CLI에서 커서를 보이게 처리 function showCursor(): void {} // CLI에서 커서를 안보이게 처리 function hideCursor(): void {} // CLI에서 줄바꿈 처리 function linefeed(): void {} // 일반 로그 출력 function out(message?: any, ...optionalParams: any[]): void {} // 정보성 로그 출력 function info(message?: any, ...optionalParams: any[]): void {} // 단계 로그 출력 function progress(message: string, ...optionalParams: any[]): void {} // 개발용 로그 출력 function devOnly(message?: string, ...optionalParams: any[]): void {} // 워치 로그 출력 function watch(message?: any, ...optionalParams: any[]): void {} // 디버그 로그 출력 function debug(message?: any, ...optionalParams: any[]): void {} // 경고 로그 출력 function warn(message?: any, ...optionalParams: any[]): void {} // 오류 로그 출력 function error(message?: any, ...optionalParams: any[]): void {} // 정상 로그 출력 function okay(message?: string, ...optionalParams: any[]): void {} // 이상 로그 출력 function bad(message?: string, ...optionalParams: any[]): void {} // 성공 로그 출력 function success(message?: string, ...optionalParams: any[]): void {} // 실패 로그 출력 function failure(message?: string, ...optionalParams: any[]): void {} ``` ### Minify module uglify-es 디펜던시를 이용하여 *.js, *.mjs 파일들에 대한 minification을 수행하는 메소드를 제공한다. ```typescript // Minification 수행 function run(buildPath: string, options?: Options): Result {} ``` ### Upgrade module 애플리케이션 수행 중에 업데이트가 필요한 디펜던시를 체크하여 종료 전에 설치할 수 있도록 하는 기능 등을 제공한다. ```typescript // NPM registry에서 현재 패키지의 최신버전을 검색 (npm) function checkLazyNpm(dep: string): Promise<string> {} // NPM registry에서 현재 패키지의 최신버전을 검색 (yarn) function checkLazyYarn(dep: string): Promise<string> {} // NPM registry에서 최신버전을 검색하여 프로그램 종료 전에 메시지 출력 function checkLazyEmitBeforeExit( dep: string, currentVersion: string, option?: CheckLazyEmitBeforeExitOption, ): void {} ``` ### Utils module 기타 유틸성 처리 메소드들을 제공한다. ```typescript // baseArray 내 항목들 중 dataArray 내 항목이 있는 경우 제거 function removeArrayDups( baseArray: string[] | undefined, dataArray: string[] = [], ): string[] | undefined {} // 객체타입으로 넘어온 파라미터 obj가 값이 존재하는지 여부를 체크 // 존재할 경우 truthy|obj, 그렇지 않을 경우 falsy|undefined 리턴 function hasProps<OT = any, TT = OT, FT = OT>( obj: OT, truthyValue?: TT, falsyValue?: FT, ): OT | TT | FT | undefined {} // base64 등으로 인코딩 된 data uri 등의 형태(ex: 이미지)를 // 바이너리로 변환하기 위해 UInt8Array 타입으로 리턴. // 리턴된 값은 바이너리로, fs.writeFileSync 등으로 바로 저장 가능. function uri2binary(data: string | undefined = ''): Uint8Array {} ``` ### Version module 버전 체크 등 메소드들을 제공한다. ```typescript // SEMVER 형태의 버전을 서로 비교하여 플래그 값을 리턴 function check(baseVersion: string, currVersion: string): -1 | 0 | 1 {} ``` ### Chalk library 터미널 스타일링을 위한 [chalk](https://www.npmjs.com/package/chalk) 라이브러리를 제공한다. ## Change Log 해당 프로젝트의 [CHANGELOG.md](CHANGELOG.md) 파일 참조. ## License 해당 프로젝트의 [LICENSE](LICENSE) 파일 참조.