npm link 安装本地模块,将本地模块cli化

第三方学习地址

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个变量的妙用。

转载于:https://www.cnblogs.com/CyLee/p/6195022.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值