學(xué)習(xí)寫一個簡單的Node命令行工具(寫給自己看的??)
- 1 創(chuàng)建一個js文件
vi fed.js, 并且寫入console.log('這是我的命令行工具哦'); - 2 添加linux腳本的運(yùn)行環(huán)境,繼續(xù)
vi fed.js, 然后在文件的最上面一行添加#!/usr/bin/env node來告訴shell工具這個文件需要用nodejs來運(yùn)行,以后執(zhí)行運(yùn)行該文件就可以默認(rèn)采用node環(huán)境來運(yùn)行該文件了。 - 3 為該文件添加
可執(zhí)行的權(quán)限,命令行輸入chmod +x fed.js, 這樣以后可以直接在命令行工具上找到fed.js的文件位置并且可以直接運(yùn)行./fed.js,就可以打印出之前的console.log了,如果沒有添加可執(zhí)行的權(quán)限是不行的哦 - 4 剛才運(yùn)行的時候還是加了相對路徑
./fed.js的命令才運(yùn)行起來的,這樣顯然太麻煩,所以可以加入環(huán)境變量,那么不管在什么地方都可以直接運(yùn)行了,首先查看已有的環(huán)境變量echo $PATH - 5 為
fed.js創(chuàng)建一個全局變量的鏈接,ln ./fed.js /usr/local/bin/fed, 相當(dāng)于在全局的環(huán)境變量下創(chuàng)建了一個fed的變量并且鏈接到fed.js,現(xiàn)在就可以直接輸入fed來運(yùn)行之前的fed.js了
不足之處
- 上面生成的命令變量,如果依賴了node_module的包就找不到依賴了,所以就要借助npm來生成環(huán)境變量了
- 刪除剛才的全局變量
rm 'which fed', 然后npm init,一路回車,在package.json里面寫上bin: { 'fed': './fed.js' }創(chuàng)建一個連接 - 最后在命令行關(guān)聯(lián),
npm link即可,再試試fed就成功了