node 包与包结构
一、包结构
一、一个标准的包,应该包含哪些内容
包实际上就是一个压缩文件,解压以后还原为目录,符合 CommonJS 规范的目录,应该包含如下文件和文件夹
1、package.json 描述文件 ---------- 描述文件(包的 “说明书”,必须要要有)
2、bin 可执行二进制文件 ------------ 可执行二进制文件
3、lib js代码 ----------------------------- 经过编译后的js代码
4、doc 文档 ----------------------------- 文档(说明文档、修复文档、版本变更记录文档)
5、test 单元测试 ----------------------- 一些测试报告
二、如何让一个普通文件夹变成一个包
让这个文件夹拥有一个: package.json文件即可,且package.json里面的内容要合法。执行命令: npm init
包名的要求;不能有中文、不能有大写字母、同时尽量不要以数字开头、不能与npm仓库上其他包同名。
三、安装
安装之前必须保证文件夹内有 package.json,且里面的内容格式合法
1、npm install xxxxx --save 或 npm i xxxxx -S 或 npm i xxx
备注:
(1)、局部安装完第三方包,放在当前目录中 node_modules 这个文件夹里
(2)、安装完毕会自动产生一个 package-lock.json (npm版本中在5以后才有),里面缓存的是每一个下载的包的地址,目的是下次安装时速度快一些
(3)、当安装完一个包,该包的名字会自动写入 package.json中的【dependencies(依赖)】里,nmp5及之前版本要加上 --sava 后缀
2、npm install xxxxx -sava-dav 或 npm i xxxxx -D 安装包并将该包写入到【devDependencies(开发依赖中)】
什么是生产依赖与开发依赖
1、只有在开发时(写代码时)才用到的库,就是开发依赖 ---- 例如:语法检查、压缩代码、扩展css前缀的包
2、在生产环境中(项目上线)不可缺少的,就是生产依赖 ---- 例如:jquery、bootStrap 等等
3、注意:某些包即属于开发依赖,又属于生产依赖 ----- 例如:jQuery
3、npm i xxxxx -g 全局安装xxxx包(一般来说,带有指令集的包都要进行全局安装,例如:browserify、bobel等)
4、npm i xxx@yyy :安装xxx包的yyy版本
5、npm i :安装package.json中声明的所有包
四、移除
npm remove xxxxx 在node_module 中删除 xxxx 包,同时会删除该包在package.json中的声明
五、其他命令
1、npm aduit fix :检测项目依赖中的一些问题,并且尝试着修复
2、npm view xxxxx versions :在查看远程npm仓库中xxxx包的所有版本信息
3、npm view xxxxx version : 查看npm仓库中xxxx包的最新版本
4、npm ls xxxx :查看我们所安装的xxxx包的版本
六、关于版本号的说明
”^3.x.x“ :锁定大版本,以后安装包的时候,保证是3.x.x版本,x默认是取最新的
”~3.1.x“ :锁定小版本,以后安装包的时候,保证是3.1.x版本,x默认是取最新的
”3.1.1“ :锁定完整版本,以后安装包的时候,保证必须是3.1.1版本