Nodejs編寫複製檔案及資料夾命令
阿新 • • 發佈:2018-11-20
github地址
use
npm i fuzhi -g
複製檔案
fuzhi a.js b.js
複製資料夾
fuzhi dirA dirB
Wiki
建立一個node命令的兩個關鍵點
1.在package.json中加上bin屬性
{ "name": "fuzhi", "version": "0.0.4", "author": "leinov", "bin": { "fuzhi": "./bin/fuzhi" }, "dependencies": { "chalk": "^2.4.1" }, "keywords": [ "node", "copy", "fuzhi" ], }
bin屬性值是一個到本地檔名的對映。屬性名是執行的命令名稱,屬性值是執行檔案路徑
2. 新增執行命令的檔案頭
./bin/fuzhi
#!/usr/bin/env node
...
#!/usr/bin/env node
是幫助指令碼找到node的指令碼直譯器,這句也是必須的,通過 npm get prefix
獲取本地node路徑
npm link
在測試本地node包時都要使用到npm link
將本地node包對映到全域性node資料夾下,我們來看下在沒有bin屬性的node專案下執行npm link
會輸出什麼
npm link /Users/leinov/.nvm/versions/node/v8.11.3/lib/node_modules/test -> /Users/leinov/project/test
顯示告訴我們將/Users/leinov/project/test的專案的件放到了全域性node下
這樣在專案中就可以直接調使用
const test = require("test");
如果package.json下有bin屬性會是怎麼樣的
/Users/leinov/.nvm/versions/node/v8.11.3/bin/fuzhi -> /Users/leinov/.nvm/versions/node/v8.11.3/lib/node_modules/fuzhi/bin/fuzhi /Users/leinov/.nvm/versions/node/v8.11.3/lib/node_modules/fuzhi -> /Users/leinov/github/project/fuzhi
多了一行將命令檔案對映到node的執行命令資料夾下,node bin目錄下會多一個fuzhi命令,全域性可執行
fuzhi ...
開發命令功能
這裡主要用到node的三個api
- fs
- process
- path
以及chalk包來控制輸出樣式