今天咱們要談論建立 node.js 可執行文件。javascript
我想擁有一個我在個人計算機上打字,而後把它變爲其中的一個小熊表情。java
目前能夠看到個人機器上沒有此命令,咱們開始動手寫一個node
準備工程git
mkdir node-cli
cd node-cli
touch cli.js
touch bears.txt
複製代碼
bears.txt
:npm
ʕ•ᴥ•ʔ
ˁ˚ᴥ˚ˀ
ʕ·͡ᴥ·ʔ
óÔÔò
(● ̄(エ) ̄ ●)
⊂(・(ェ)・)⊃
ʕ•͡ ᴥ•͡ ʔ
ʕ•͡ᴥ•ʔ
(●`・(エ)・ ´●)
ʕノ•ᴥ•ʔノ ︵ ┻━┻
複製代碼
cli.js
:json
#!/usr/bin/env node
const fs = require("fs");
fs.readFile("bears.txt", (err, data) => {
const bears = data.toString().split("\n");
const bear = bears[Math.floor(Math.random() * bears.length)];
console.log(bear);
});
複製代碼
讓咱們把全部的代碼逐行說說。數組
#!/usr/bin/env node
是一個 shebang 行的實例,它告訴咱們的系統用什麼解釋器來執行該文件fs.readFile(...)
引用 fs
模塊讀取文件 bears.txt
內容const bears = ...
將文件流轉換成字符串,用換行符(\n
)分割字符串成爲數組const bear = ...
在bears
數組隨機取出一個元素console.log(bear);
在控制檯中打印出取出的元素執行 node cli.js
結果以下bash
每次隨機打印出一個小熊dom
到如今咱們還不能執行這個文件,執行./cli.js
不會有任何結果,這是由於當前文件仍是不可執行的。工具
咱們經過chmod +x cli.js
來修改當前文件能夠執行
這個時候咱們就能夠執行 ./cli.js
了
回到最初想法,咱們想在命令行輸入 bearme
就會執行 cli.js
這時候須要添加package.json
信息
npm init -y
複製代碼
修改以下:
{
"name": "bearme",
"version": "1.1.0",
"description": "",
"main": "cli.js",
"bin": {
"bearme": "cli.js"
},
"scripts": {
"start": "node index.js",
"test": "node test.js"
},
"preferGlobal": true,
"author": "",
"license": "MIT"
}
複製代碼
這個時候還不能全局執行,想要全局能夠執行有兩種方法
npmjs.com
,而後全局安裝 npm i bearme -g
npm link
建立一個全局鏈接在部署以前,咱們須要在 package.json
中添加一些信息。
"homepage": "YOUR GITHUB REPO OR SITE HERE",
"repository": {
"type": "git",
"url": "git+YOUR GITHUB REPOSITORY HERE"
},
"engines": {
"node": ">=8"
},
複製代碼
nodejs
版本號,簡單地定義了你的項目應該在最小版本的節點上工做。 版本號取決於你用了那些版本的特性。下面是接下來的步驟。
npmjs.com
上建立一個帳戶(可選,若是有能夠忽略)npm login
命令並輸入你的信息npm publish
命令,它將在幾分鐘內自動發佈。npm link
和上面方法兩者選其一,在當前目錄下執行 npm link
執行bearme
看看效果
就是這樣! 動手建立了一個命令行工具