1. 程式人生 > >Nodejs編寫複製檔案及資料夾命令

Nodejs編寫複製檔案及資料夾命令

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路徑

在測試本地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包來控制輸出樣式

完整程式碼

github地址