第三方學習地址
http://mp.weixin.qq.com/s?__biz=MzAxMTU0NTc4Nw==&mid=2661157390&idx=1&sn=6d96e54f1c4ecd5201a03fe76cc5f5a9&chksm=80d5d7dab7a25ecc5d1c47e81b32a4c88e8d70b1fcfd849777ca9605d8326339dff9e29e6e37&mpshare=1&scene=23&srcid=1218i1tXLnRQfPHvJmqSyRHR#rd
1)初始化模塊
確認模塊名稱
$ npm info xxx
如果沒有找到對應的包,說明你可以使用這個名字,然后在github建立倉庫,clone到本地即可
$ npm init -y
2)cli二進制模塊
Node.js分2種模塊
-
普通模塊,供代碼調用
-
二進制模塊,提供cli調用
大家都知道,生成器是cli工具,所以我們應該使用cli二進制模塊
手動修改package.json文件,增加 bin 配置
{ "name": "a", "version": "1.0.0", "description": "", "main": "index.js", "bin": { "gen": "gen.js" }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC"
}
這里主要增加里一個bin
的配置,bin里的gen
為cli的具體命令,它的具體執行的文件gen.js,大家看到這是一個plain old object類型,所以可以配置多個命令的,各位可以按照自己的喜好來。
既然gen
的執行文件是gen.js
,我們當然需要創建創建它
$ touch gen.js
如果是windwo 也可以選擇這樣寫:#! E:\nodejs\node
#!/usr/bin/env node var argv = process.argv; var filePath = __dirname; var currentPath = process.cwd(); console.log(argv) console.log(filePath) console.log(currentPath)
說明
-
argv是命令行的參數
-
filePath是當前文件的路徑,也就是以后安裝后文件的路徑,用於存放模板文件非常好
-
currentPath是當前shell上下文路徑,也就是生成器要生成文件的目標位置
至此,二進制模塊的代碼就寫完了,下面我們測一下
1)本地安裝此模塊
在package.json文件路徑下,執行
$ npm link
/Users/sang/.nvm/versions/node/v4.4.5/bin/gen -> /Users/sang/.nvm/versions/node/v4.4.5/lib/node_modules/a/gen.js/Users/sang/.nvm/versions/node/v4.4.5/lib/node_modules/a -> /Users/sang/workspace/github/i5ting/a
此時說明已經安裝成功了。
2)執行gen測試
$ gen
[ '/Users/sang/.nvm/versions/node/v4.4.5/bin/node', '/Users/sang/.nvm/versions/node/v4.4.5/bin/gen' ]/Users/sang/workspace/github/i5ting/a/Users/sang/workspace/github/i5ting/a
可以換不同的目錄來測試一下,看看結果的不同,來體會上面3個變量的妙用。