库 | 做用 |
---|---|
chalk-pipe | 使用更简单的样式字符串建立粉笔样式方案 |
chalk | 正确处理终端字符串样式 |
Commander.js | 完整的 node.js 命令行解决方案 |
Inquirer.js | 一组通用的交互式命令行用户界面。 |
slash | 系统路径符处理 |
minimist | 解析参数选项 |
dotenv | 将环境变量从 .env文件加载到process.env中 |
dotenv-expand | 扩展计算机上已经存在的环境变量 |
hash-sum | 很是快的惟一哈希生成器 |
deepmerge | 深度合并两个或多个对象的可枚举属性。 |
yaml-front-matter | 解析yaml或json |
resolve | 实现node的 require.resolve() 算法,这样就能够异步和同步地使用require.resolve()表明文件 |
semver | npm的语义版本器 |
leven | 测量两字符串之间的差别<br/>最快的JS实现之一 |
lru cache | 删除最近最少使用的项的缓存对象 |
portfinder | 自动寻找 8000 至65535 内可用端口号 |
ora | 优雅的终端转轮 |
envinfo | 生成故障排除软件问题(如操做系统、二进制版本、浏览器、已安装语言等)时所需的通用详细信息的报告 |
memfs | 内存文件系统与Node's fs API相同实现 |
execa | 针对人类的流程执行 |
webpack-merge | 用于链接数组和合并对象,从而建立一个新对象 |
webpack-chain | 使用链式API去生成简化webpack版本配置的修改 |
strip-ansi | 从字符串中去掉ANSI转义码 |
address | 获取当前机器的IP, MAC和DNS服务器。 |
default-gateway | 经过对OS路由接口的exec调用得到机器的默认网关 |
joi | JavaScript最强大的模式描述语言和数据验证器。 |
fs-extra | 添加了未包含在原生fs 模块中的文件系统方法,并向fs 方法添加了promise支持 |
Acorn | 一个小而快速的JavaScript解析器,彻底用JavaScript编写。 |
zlib.js | ZLIB.js是ZLIB(RFC1950), DEFLATE(RFC1951), GZIP(RFC1952)和PKZIP在JavaScript实现。 |
nodejs交互工具库 -- chalk-pipe和chalkphp
nodejs交互工具库 -- commander和Inquirerjava
nodejs交互工具库 -- slash, minimist和dotenv, dotenv-expandnode
nodejs交互工具库 -- hash-sum, deepmerge和yaml-front-matterpython
nodejs交互工具库 -- resolve和semvermysql
nodejs交互工具库 -- leven, lru cache和portfinderreact
nodejs交互工具库 -- ora和envinfoandroid
nodejs交互工具库 -- memfs和execawebpack
nodejs交互工具库 -- webpack-merge和webpack-chainnginx
nodejs交互工具库 -- strip-ansi, address, default-gateway和joigit
nodejs交互工具库 -- fs-extra, Acorn和zlib
优雅的终端转轮
yarn add ora
const ora = require('ora'); const spinner = ora('Loading unicorns').start(); setTimeout(() => { spinner.color = 'yellow'; spinner.text = 'Loading rainbows'; }, 1000);
若是提供了字符串,则将其视为 options.text
的快捷方式
Type: object
Type: string
在转轮后显示的文本。
Type: string | () => string
文本或返回要在转轮前显示的文本的函数。若是设置为空字符串,将不显示前缀文本。
Type: string | object
Default: 'dots'
provided spinners其中一个的名字. 若是您想测试不一样的纺纱工,请参阅repo中的 example.js
。在Windows上,它老是使用line
转轮,由于Windows命令行没有适当的Unicode支持。
或者像这样的对象:
{ interval: 80, // Optional frames: ['-', '+', '-'] }
Type: string
Default: 'cyan'
Values: 'black' | 'red' | 'green' | 'yellow' | 'blue' | 'magenta' | 'cyan' | 'white' | 'gray'
转轮颜色
Type: boolean
Default: true
设置为false将阻止Ora隐藏光标
Type: number
Default: 0
用给定的空格数缩进微调格
Type: number
Default: 由转轮提供或 100
每帧之间的间隔。
转轮提供了它们本身的推荐间隔,因此实际上不须要指定这个间隔。
Type: stream.Writable
Default: process.stderr
流来写入输出。
例如,您能够将其设置为process.stdout
。
Type: boolean
强制启用/禁用转轮。若是未指定,则若是流在TTY上下文中(未派生或管道传输)和/或不在CI环境中运行,则转轮将被启用。
注意 {isEnabled: false}
并不意味着它不会输出任何东西。它只是意味着它不会输出转轮、颜色和其余ansi转义代码。它仍然会记录文本。
Type: boolean
Default: false
禁用转轮和全部日志文本。将考虑压制和启用全部输出false
.
Type: boolean
Default: true
丢弃stdin输入(Ctrl+C除外) 当它是TTY运行。这能够防止转轮在输入时抖动,在按 Enter 键时输出折线,并防止在转轮运行时对输入进行缓冲。
这对Windows没有影响,由于没有好的方法来正确地实现丢弃stdin。
启动转轮。返回的实例。若是提供了文本,则设置当前文本。
中止并清除转轮。返回的实例。
中止转轮,将其更改成绿色 ✔
并持久化当前文本,或 text
若是提供。返回的实例。请看下面的GIF图
中止旋转,将其改成红色 ✖
并持久化当前文本,或 text
若是提供。返回的实例。请看下面的GIF。
中止转轮,将其更改成黄色 ⚠
并持久化当前文本,或text
若是提供。返回的实例。
中止转轮,将其更改成蓝色 ℹ
并持久化当前文本,或text
若是提供。返回的实例。
一个布尔值,表示实例当前是否在旋转。
中止转轮并更改符号或文本。返回的实例。请看下面的GIF。
Type: object
Type: string
Default: ' '
将转轮替换为
Type: string
Default: Current 'text'
将持久存储在符号以后的文本
Type: string
Default: Current prefixText
将保存在符号以前的文本。若是设置为空字符串,将不显示前缀文本。
清理转轮。返回的实例。
手工渲染一个新帧。返回的实例。
给一个新帧
更改转轮后的文本。
更改转轮以前的文本。若是设置为空字符串,将不显示前缀文本。
更改转轮颜色。
改变转轮。
更改转轮缩进。
开始一个转轮的promise。若是promise实现,则使用.succeed()
中止转轮;若是拒绝,则使用.fail()
中止转轮。返回转轮实例。
Type: Promise
Use Chalk:
const ora = require('ora'); const chalk = require('chalk'); const spinner = ora(`Loading ${chalk.red('unicorns')}`).start();
JavaScript是单线程的,所以同步操做会阻塞线程,包括旋转器动画。尽量选择异步操做。
基本经常使用的方法场景就这些了,更完整的用法能够直接查阅文档
envinfo生成故障排除软件问题(如操做系统、二进制版本、浏览器、已安装语言等)时所需的通用详细信息的报告
请提供浏览器版本,Node.js版本,操做系统,编程语言等相关信息。
要使用CLI工具,请全局安装此包:
npm install -g envinfo || yarn global add envinfo
或者,使用不安装的npx:
npx envinfo
在另外一个项目中做为库使用:
npm install envinfo || yarn add envinfo
envinfo` || `npx envinfo
System: OS: macOS Mojave 10.14.5 CPU: (8) x64 Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz Memory: 2.97 GB / 16.00 GB Shell: 5.3 - /bin/zsh Binaries: Node: 8.16.0 - ~/.nvm/versions/node/v8.16.0/bin/node Yarn: 1.15.2 - ~/.yarn/bin/yarn npm: 6.9.0 - ~/.nvm/versions/node/v8.16.0/bin/npm Watchman: 4.9.0 - /usr/local/bin/watchman Managers: Cargo: 1.31.0 - ~/.cargo/bin/cargo CocoaPods: 1.7.3 - /usr/local/bin/pod Composer: 1.8.6 - /usr/local/bin/composer Gradle: 5.5 - /usr/local/bin/gradle Homebrew: 2.1.7 - /usr/local/bin/brew Maven: 3.6.1 - /usr/local/bin/mvn pip2: 19.0.3 - /usr/local/bin/pip2 pip3: 19.0.2 - /usr/local/bin/pip3 RubyGems: 2.5.2.3 - /usr/bin/gem Utilities: CMake: 3.13.3 - /usr/local/bin/cmake Make: 3.81 - /usr/bin/make GCC: 10.14. - /usr/bin/gcc Git: 2.20.0 - /usr/local/bin/git Mercurial: 4.5.3 - /usr/bin/hg Clang: 1001.0.46.4 - /usr/bin/clang Subversion: 1.10.3 - /usr/bin/svn Servers: Apache: 2.4.34 - /usr/sbin/apachectl Nginx: 1.13.12 - /usr/local/bin/nginx Virtualization: Docker: 18.09.1 - /usr/local/bin/docker Parallels: 13.3.0 - /usr/local/bin/prlctl VirtualBox: 5.2.20 - /usr/local/bin/vboxmanage SDKs: iOS SDK: Platforms: iOS 12.2, macOS 10.14, tvOS 12.2, watchOS 5.2 Android SDK: API Levels: 28 Build Tools: 28.0.3 System Images: android-28 | Google Play Intel x86 Atom IDEs: Android Studio: 3.2 AI-181.5540.7.32.5056338 Atom: 1.23.3 Emacs: 22.1.1 - /usr/bin/emacs Nano: 2.0.6 - /usr/bin/nano VSCode: 1.36.0 - /usr/local/bin/code Vim: 8.0 - /usr/bin/vim Xcode: 10.2.1/10E1001 - /usr/bin/xcodebuild Languages: Bash: 4.4.23 - /usr/local/bin/bash Elixir: 1.6.2 - /usr/local/bin/elixir Go: 1.11.1 - /usr/local/bin/go Java: 1.8.0_192 - /usr/bin/javac Perl: 5.18.4 - /usr/bin/perl PHP: 7.1.23 - /usr/bin/php Python: 2.7.16 - /usr/local/bin/python Python3: 3.7.2 - /usr/local/bin/python3 R: 3.6.0 - /usr/local/bin/R Ruby: 2.3.7 - /usr/bin/ruby Rust: 1.16.0 - /Users/tabrindle/.cargo/bin/rustup Databases: MongoDB: 3.6.4 - /usr/local/bin/mongo MySQL: 10.3.10 (MariaDB) - /usr/local/bin/mysql PostgreSQL: 10.3 - /usr/local/bin/postgres SQLite: 3.24.0 - /usr/bin/sqlite3 Browsers: Chrome: 75.0.3770.100 Chrome Canary: 77.0.3847.0 Firefox: 68.0 Firefox Developer Edition: 69.0 Firefox Nightly: 69.0a1 Safari: 12.1.1 Safari Technology Preview: 13.0 npmPackages: apollo-client: ^2.3.1 => 2.3.1 jest: ^22.2.1 => 22.2.1 ... react: ^16.3.2 => 16.3.2 react-apollo: ^2.1.4 => 2.1.4 run4staged: ^1.1.1 => 1.1.1 solidarity: 2.0.5 => 2.0.5 styled-components: ^3.1.6 => 3.1.6 npmGlobalPackages: create-react-app: 1.5.2 create-react-native-app: 1.0.0 envinfo: 5.10.0 exp: 49.2.2 gatsby-cli: 1.1.52 npm: 5.6.0 react-native-cli: 2.0.1 solidarity: 2.1.0 typescript: 2.8.1
Envinfo接受一个配置对象并返回一个Promise ,该Promise 解析一个字符串(可选yaml、json或markdown)
import envinfo from 'envinfo'; envinfo.run( { System: ['OS', 'CPU'], Binaries: ['Node', 'Yarn', 'npm'], Browsers: ['Chrome', 'Firefox', 'Safari'], npmPackages: ['styled-components', 'babel-plugin-styled-components'], }, { json: true, showNotFound: true } ).then(env => console.log(env));
日志
{ "System": { "OS": "macOS High Sierra 10.13", "CPU": "x64 Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz" }, "Binaries": { "Node": { "version": "8.11.0", "path": "~/.nvm/versions/node/v8.11.0/bin/node" }, "Yarn": { "version": "1.5.1", "path": "~/.yarn/bin/yarn" }, "npm": { "version": "5.6.0", "path": "~/.nvm/versions/node/v8.11.0/bin/npm" } }, "Browsers": { "Chrome": { "version": "67.0.3396.62" }, "Firefox": { "version": "59.0.2" }, "Safari": { "version": "11.0" } }, "npmPackages": { "styled-components": { "wanted": "^3.2.1", "installed": "3.2.1" }, "babel-plugin-styled-components": "Not Found" } }
全部的envinfo助手也被导出以供使用。你能够总体使用envinfo,也能够只使用你须要的部分,好比:
const envinfo = require('envinfo'); // each helper returns a promise const node = await envinfo.helpers.getNodeInfo(); // The promises resolve to an array of values: ["Name", "Version", "Path"] // e.g. ["Node", "10.9.0", "/usr/local/bin/node"] console.log(`Node: ${node[1]} - ${node[2]}`); // "Node: 10.9.0 - ~/.nvm/versions/node/v8.14.0/bin/node"
--system Print general system info such as OS, CPU, Memory and Shell --browsers Get version numbers of installed web browsers --SDKs Get platforms, build tools and SDKs of iOS and Android --IDEs Get version numbers of installed IDEs --languages Get version numbers of installed languages such as Java, Python, PHP, etc --binaries Get version numbers of node, npm, watchman, etc --npmPackages Get version numbers of locally installed npm packages - glob, string, or comma delimited list --npmGlobalPackages Get version numbers of globally installed npm packages --duplicates Mark duplicate npm packages inside parentheses eg. (2.1.4) --fullTree Traverse entire node_modules dependency tree, not just top level --markdown Print output in markdown format --json Print output in JSON format --console Print to console (defaults to on for CLI usage, off for programmatic usage)
envinfo已经集成到:
react-native info
)create-react-app --info
)expo diagnostics
)webpack-cli info
)solidarity report
)gatsby info
)envinfo 使用在 ISSUE_TEMPLATE:
command -v
直到你打碎了你的电脑command -v
为:all-the-things:伟大的原始信息。基本经常使用的方法场景就这些了,更完整的用法能够直接查阅文档