nodejs寫的小工具,如何使用命令行直接執行?而不是先調用js文件,具體情況往下看

覺得實踐中學的更快吧,想做個前端的小工具自己用,nodejs寫,功能類如:自動創建一系列文件並且打開,就是html、css、img目錄等;添加時間戳,開啟強制緩存;圖片壓縮等等其他的一些加快速度的功能。

比如有main.js,在cmd中輸入

node main.js

可以運行這個js文件

如果調用nodejs的commander模塊可以實現

node main.js [function-name] [flag]

這樣就可以實現在命令行中用參數運行指定的函數

但是現在的想法是,使這個[funciton-name]函數可以直接在全局使用,而不是在前面加上node main.js

現在很多發布在npm上的前端工具都是這樣的模式,很有興趣是怎麼實現的,比如fis,可以直接用fis server open 打開開發目錄,這是怎麼實現的呢?


  1. 在 main.js 開頭加上

    #!/usr/bin/env node

  2. 在 package.json 裡面添加

    "bin": {
    "mytool": "main.js"
    }

  3. 如果你只是想本地使用,運行 npm link(相當於將一個本地包 install -g)
  4. mytool 可以直接作為命令使用了。


唉那個不是在 bin 目錄下放個沒後綴的文件然後第一行加 #!/usr/bin/env node 么……npm 會幫你把它打包成一個 bash/cmd 腳本。


這類東西node環境里比較適合用grunt來解決。當然grunt本身是cli,實現cli也很簡單,參見Writing Command Line Tools with Node,不過就你想做的這些東西,我覺得先看看grunt比較好。


在.bashrc裡面alias一下再source


推薦閱讀:

js很奇怪的問題,關於加法運算的問題?
如何評價前端應用框架 dva?
如何在 JS 中嵌入 HTML 代碼?
js浮點數精度問題的前世今生?
為什麼JS中一個浮點數位或0會去掉小數部分?

TAG:前端開發 | JavaScript | Nodejs | 命令提示符cmd |