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个变量的妙用。
npm link 安装本地模块,将本地模块cli化的更多相关文章
- 如何调用npm已经安装在全局位置的模块
参考链接 https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders npm install xxx -g ...
- npm link 命令解析
文字转的 对开发者而言,这算是最有价值的命令.假设我们开发了一个模块叫 test ,然后我们在 test-example 里引用这个模块 ,每次 test 模块的变动我们都需要反映到 test-exa ...
- npm中本地安装命令行类型的模块是不注册Path的
http://www.jianshu.com/p/c04dea6e46de 首先有必要解释下什么是命令行(Command Line)类型的模块.npm的模块一共分为三类: 绑定型(Binding):本 ...
- 使用npm link 创建本地模块
1. npm link 介绍 创建一个全局的符号链接,优点是方便我们进行本地node模块的开发调用,和后期发布私服,或者npm 仓库调用是一致的 以下为官方的说明: First, npm link i ...
- 9.使用 npm 命令安装模块
转自:http://www.runoob.com/nodejs/nodejs-tutorial.html npm 安装 Node.js 模块语法格式如下: $ npm install <Modu ...
- npm 模块开发调试技巧之最优方案npm link
在我们平时写项目中,当我们需要新开发或修改的 npm 模块时,如何在本地项目中调试呢? 本地项目路径:G:\npm\project 开发的模块路径:G:\npm\model 方法一: 在cmd命令窗口 ...
- 使用node中mysql模块连接本地数据库
连接数据库的方法迄今为止学了三种: cmd方式.可视化工具,今天记第三种----node端连接数据库. 一:mysql模块介绍与下载 1.mysql模块是node端专门连接数据库的第三方模块 2.下载 ...
- npm安装package.json中的模块依赖
npm 一键安装 package.json里的依赖时有2种情况: 1.package.json不存在时 运行命令: npm init可自动创建package.json文件 2.package.json ...
- Node.js的安装以及Node.js的模块管理
索引: Node.js的安装以及Node.js的模块管理Node.js开发环境搭建以及对ES6的支持Node.js构建Vue.js项目Vue.js单文件组件的开发基于Vue.js的UI组件(Eleme ...
随机推荐
- Javascript中闭包问题(转载)
学习Javascript闭包(Closure) 作者: 阮一峰 日期: 2009年8月30日 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现 ...
- javascript数据结构-数组
github博客地址 简介 数组是最简单的数据结构,javascript语言也很早就原声支持了数组Array数据类型,和其他语言略微不同的是:js中的数组可以存储不同类型的值,看起来很厉害的样子,但是 ...
- With great power comes great responsibility
We trust you have received the usual lecture from the local SystemAdministrator. It usually boils do ...
- css中选择器的使用技巧
td:first-child{选择第一个} td:last-child{选择最后一个} td:nth-child(3){选择第3个} 一个简单的选择方法,很方便
- 【XLL 框架库函数】 TempActiveRow/TempActiveRow12
创建一个包含所有激活工作表行的 XLOPER/XLOPER12 LPXLOPER TempActiveRow(WORD row); LPXLOPER12 TempActiveRow12(ROW row ...
- SpringMVC基本配置
1 springmvc 框架 1.1 回顾mvc结构 1.2springmvc的介绍 是一个基于mvc的web层框架,使用spring的一个子项目 在使用springmvc的时候,不用单独和spri ...
- 14. Longest Common Prefix
题目: Write a function to find the longest common prefix string amongst an array of strings. Subscribe ...
- 编辑 Ext 表格(一)——— 动态添加删除行列
一.动态增删行 在 ext 表格中,动态添加行主要和表格绑定的 store 有关, 通过对 store 数据集进行添加或删除,就能实现表格行的动态添加删除. (1) 动态添加表格的行 gridS ...
- 逻辑回归(Logistic Regression)
转载请注明出自BYRans博客:http://www.cnblogs.com/BYRans/ 本文主要讲解分类问题中的逻辑回归.逻辑回归是一个二分类问题. 二分类问题 二分类问题是指预测的y值只有两个 ...
- ngx_image_thumb模块生成缩略图
ngx_image_thumb是nginx中用来生成缩略图的模块. 编译前确定已经安装了libcurl-dev libgd2-dev libpcre-dev gd-devel pcre-devel l ...