@mornya/cli-libs
v0.21.0
Published
The project of the utilities for CLI.
Downloads
254
Maintainers
Readme
CLI Libs
The project of CLI tools for mornya
libraries.
This project has been created by Vessel CLI. For a simple and quick reference about it, click here.
About
CLI 개발에 사용되는 모듈들에 대해 집합적인 형태로 제공되는 패키지.
Installation
해당 라이브러리를 사용 할 프로젝트에서는 아래와 같이 의존성 모듈로 설치한다.
$ npm install --save @mornya/cli-libs
or
$ yarn add @mornya/cli-libs
Modules in the package
본 패키지에는 아래와 같은 모듈들을 포함한다. 제공되는 모듈과 메소드 사용법 등은 코드 스니핏을 참고한다.
Args module
프로세스 실행시 명령줄라인의 파라미터 값을 정제하여 제공한다.
// 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
프로세스 실행 관련 메소드들을 제공한다.
// 동기적 커맨드 실행
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
파일처리 관련 메소드들을 제공한다.
// 파일 경로 구분자를 정제
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에 맞게 변환된 출력용 이모티콘을 제공한다.
import { Icons } from '@mornya/cli-libs';
// 아이콘 출력
console.log(Icons.icon.okay);
Key module
콘솔에서 간단한 키보드 입력 관련 메소드를 제공한다.
// 표준입력을 통해 키입력 이벤트 발생시 콜백 실행
function pressed(callback: Callback): void {}
Log module
콘솔 로그 관련 메소드들을 제공한다.
// 로거 설정
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을 수행하는 메소드를 제공한다.
// Minification 수행
function run(buildPath: string, options?: Options): Result {}
Upgrade module
애플리케이션 수행 중에 업데이트가 필요한 디펜던시를 체크하여 종료 전에 설치할 수 있도록 하는 기능 등을 제공한다.
// 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
기타 유틸성 처리 메소드들을 제공한다.
// 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
버전 체크 등 메소드들을 제공한다.
// SEMVER 형태의 버전을 서로 비교하여 플래그 값을 리턴
function check(baseVersion: string, currVersion: string): -1 | 0 | 1 {}
Chalk library
터미널 스타일링을 위한 chalk 라이브러리를 제공한다.
Change Log
해당 프로젝트의 CHANGELOG.md 파일 참조.
License
해당 프로젝트의 LICENSE 파일 참조.