庫 | 做用 |
---|---|
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:偉大的原始信息。基本經常使用的方法場景就這些了,更完整的用法能夠直接查閱文檔