@irim/bin-tool
node bin tools
Last updated 17 hours ago by huarse .
BSD-3-Clause · Repository · Original npm · Tarball · package.json
$ cnpm install @irim/bin-tool 
SYNC missed versions from official npm registry.

bin-tool

version license downloads

node bin 的一些必要的工具方法集

Getting Started

  • $ npm install @irim/bin-tool --save

API

utils.ts 基础方法

1. logger(...args) 同 console.log

2. print(type, msg) print console log

/**
 * @param type 日志类型
 * @param msg 日志内容
 */
function print(type: 'debug'|'info'|'success'|'warn'|'error', msg: string): void;

3. printJSON(json) 打印一个简单的 JSON

4. parseProperties(file) 解析 .properties 文件,返回一个 JSON

/**
 * @param file 文件地址
 */
export async function parseProperties(file: string): Promise<any>;

5. getProgressStr(percent) 返回一个进度条 string

/**
 * @param percent 0~1 之间
 */
function getProgressStr(percent: number): string;

files.ts 文件相关的方法

1. fileIterator(...) 遍历文件目录,执行 callback

/**
 * @param src 目录路径
 * @param fileCallback 执行到文件时的回调
 * @param dirCallback 执行到目录时的回调
 * @param exclude 忽略的文件
 */
function fileIterator(
  src: string,
  fileCallback: (filePath: string, fileRelativePath: string) => any,
  dirCallback?: (dirRelativePath: string) => any,
  exclude?: RegExp,
): Promise<any>;

2. dirSyncIterator(...) 遍历文件目录,同步到目标目录,并对每一个文件执行 callback

/**
 * @param source 源文件目录
 * @param target 目标目录
 * @param callback
 * @param exclude 忽略的文件规则
 */
function dirSyncIterator(
  source: string,
  target: string,
  callback: (sourceFile: string, targetFile: string) => any,
  exclude?: RegExp
): Promise<any>;

3. getFileCount(src, exclude) 统计目录中的文件数量

/**
 * @param src 目录路径
 * @param exclude 忽略的文件
 */
function getFileCount(src: string, exclude?: RegExp): Promise<number>

4. copyDir(options) 复制文件目录

interface OptionShape {
  /** 文件来源目录 */
  src?: string;
  /** 目标目录 */
  dist?: string;
  /** 文件内容替换规则  */
  replacer?: { holder: RegExp; value: string }[];
  /** 忽略的文件 */
  exclude?: RegExp;
  /** 只读文件(不读取&替换的文件) */
  readonlyFile?: RegExp;
  /** 文件名替换方法 */
  fileNameTransfer?: (name: string) => string;
  /** 文件内容格式化方法 */
  contentFormatter?: (content: string, src: string) => Promise<string>;
}

const defaultOptions: OptionShape = {
  exclude: /node_modules\/|build\/|\.DS_Store\/|\.idea\/|\.paiconfig|\.git\/|\.bak/,
  readonlyFile: /\.(png|jpe?g|gif|svg|obj|mtl|geojson|gltf|mp4|min\.js|min\.css)$/,
  fileNameTransfer: (name: string) => name.replace(/^__/, '.').replace(/^_/, ''),
};

function copyDir(options: OptionShape): Promise<any>

inquirer 相关的方法封装

1. confirm(message, defaultValue) node 控制台二次确认

/**
 * @param message 提示信息
 * @param defaultValue 默认值
 * @example
 * const isUpdate = await confirm('请确认是否要升级?');
 */
function confirm(message: string, defaultValue = false): Promise<boolean>;

2. prompt(...) node 控制台用户输入

/**
 * @param message 提示信息
 * @param defaultValue 默认值
 * @example
 * const username = await prompt('请输入用户名:');
 */
function prompt(message: string, defaultValue = ''): Promise<string>;

3. select(...) node 控制台用户选择

/**
 * @param message 提示信息
 * @param options 选项
 * @param defaultValue 默认值或默认的选项 index
 * @example
 * const value = await select('请选择性别: ', ['男', '女']);
 */
function select(
  message: string,
  options: SelectOptions[] | string[],
  defaultValue: string | number
): Promise<string>;

CHANGELOG

  • 0.1.0 发布最初版本,完成基本功能集

LICENSE

BSD-3-Clause License

Contact Us

Pluto

Current Tags

  • 1.0.0                                ...           latest (17 hours ago)

3 Versions

  • 1.0.0                                ...           17 hours ago
  • 0.1.0                                ...           12 days ago
  • 0.1.0-beta.1                                ...           12 days ago
Maintainers (1)
Downloads
Today 0
This Week 12
This Month 31
Last Day 12
Last Week 0
Last Month 0
Dependencies (6)
Dev Dependencies (17)
Dependents (2)

Copyright 2014 - 2016 © taobao.org |