web前端开发之JavaScript:npm简介
包简介
单个js文件就是一个模块,放文件夹里面就是package。报就是将一组相关的模块组合到一起,行程一组完成的工具。CommonJS的包规范由包结构和包描述文件两个部分组成。包描述文件用于表达非代码相关的信息,它是一个json格式的文件,位于包的根目录下,是包的重要组成部分。json文件里不能写注释。
包实际上就是一个压缩文件,解压以后还原为目录。符合规范的目录,应该包含如下文件:
-package.json 描述文件
-bin 可执行二进制文件
-lib js代码
-doc 文档
-test 单元测试
package.json
它位于模块的目录下,用于定义包的属性。该文件中定义了当前项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据 ) 。package.json文件就是一个JSON对象,该对象的每一个成员就是当前项目的一项设置。
package.json中的字段 json文件中不能有注释
------name(包名)、description(描述)、version(版本)、keywords(关键字)、maintainers(主贡献)、contributors(贡献者)、bugs(bug地址)、licenses(协议)、repositories(仓库git地址)、dependencies(依赖)、homepage(主页)、os(系统)、cpu、engine(引擎)、builtin、directories、implements、scripts、author、bin(可执行文件)、main(包的主要的文件)、devDependencies。
NPM简介
NPM(Node Package Manager),npm帮助node完成第三方模块的发布、安装和依赖。npm是javaScript世界的包管理工具并且是Node.js平台的默认包管理工具,通过npm可以安装、共享、分发代码,管理项目依赖关系。简单来说就是一个个别人写好的模块,通过下载引用后,就可以直接使用其API,帮助自己更快的开发,它被集成在node中,安装node便会自动安装nom。
常用的命令:
npm -v --查看版本
npm
npm search 包名
npm install 包名 --install可以简写为i
npm install 包名 -g --全局安装(一般都是一些工具)
npm init --初始化命令,会在目录下创建package.json。
npm version --查看所有模块的版本
npm remove 包名 --删除包,可以简写为npm r 包名
npm install 包名 --save --安装包并添加到依赖中
npm install --下载当前项目所依赖的包
npm install 文件路径 --从本地安装
npm install 包名 -registry=地址 --从镜像源安装
npm config set registry 地址 --设置镜像源
node的安装分为全局模式和本地模式。一般情况下会以本地模式运行,包会被安装到Node的安装目录下的node_modules下。
全局安装命令为npm install -g moduleName。或者使用npm set global=true来设定安装模式,npm get global可以查看当前使用的安装模式。
示例:npm install express默认会安装express的最新版本,也可以通过在后面加版本号的方式安装指定版本,如 npm install express@3.0.6
npm install <name> -g将包安装到全局环境中但是代码中,直接通过require()的方式是没有办法调用全局安装额包的。全局的安装时供命令行使用的
通过package.json进行npm安装
如果我们的项目依赖了很多package,一个一个地安装那将是个体力活。我们可以将项目依赖的包都在package.json这个文件里声明,然后一行命令搞定:
npm install
使用场景
常见的使用场景有以下几种:
允许用户从NPM服务器下载别人编写的第三方包到本地使用。
允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以通过输入 "npm -v" 来测试是否成功安装。命令如下,出现版本提示表示安装成功:
配置CNPM
命令行代码:npm install -g cnpm --registry=https://registry.npm.taobao.org
node搜索包的流程
通过npm下载的包都放到node_modules文件夹中,直接通过包名引入即可使用。如var math = require("math"),然后math.add(x,y)。node在使用模块名字来引入模块时,它首先会在当前目录的node_modules中寻找是否含有该模块-如果有则直接使用,如果没有则去上一级目录的node_modules中寻找-如果有则直接使用,如果没有则再去上一级目录寻找,直到找到为止,一直到找到磁盘的根目录,如果依然没有,则报错。
书山有路勤为径,学海无涯苦作舟。下次见!
- 点赞
- 收藏
- 关注作者
评论(0)