一、node包
JS模块的基本单位是单个JS文件,但复杂些的模块往往由多个子模块组成,为了便于管理和使用,把由多个子模块组成的叫做包。
组成一个包的所有模块中,需要一个入口模块,入口模块的导出对象被作为包的导出对象。入口模块在package.json中指定。
二、CommonJS规范的包
完全符合CommonJS规范的包应该包含如下这些文件:
1.package.json 包描述文件
2.bin 用于存放可执行的二进制文件的目录
3.lib 用于存放JavaScript代码的目录
4.doc 用于存放文档的目录
5.test 用于存放单元测试用例的代码
NodeJS对包要求没有那么严格,只要顶层目录下有package.json,并符合基本规范即可
三、package.json
name:包的名称,必须是唯一
main: 指定了程序的主入口文件
version:符合语义化版本识别规范的版本字符串
description:包的简要说明
keywords:关键字数据,通常用于搜索
maintainers:维护者数组,每个元素要包含name、email、web可选字段
contributors:贡献者数组,格式与maintainers相同。包的坐着应该是贡献者数据的第一个元素
bugs:提交bug的地址,可以是网址或者电子邮件地址
licenses:许可证数组,每个元素要包含type和url字段
repositories:仓库托管地址数组,每个元素要包含type、url和path字段
dependencies:包的依赖,一个关联数组,由包名称和版本号组成。
devDependencies:开发依赖项,表示一个包在开发期间用到的依赖项
注意:
pacakge.json文件必须包含如下三个属性:name,version,main
如果package.json或main字段不存在,则会尝试在包的顶级目录寻找index.js作为包的接口。
四、自定义包
目录结构:
add.js
function add(a, b) {
return a + b;
}
module.exports = add;
sub.js
function sub(a, b) {
return a - b;
}
module.exports = sub;
main.js
const add = require('./add');
const sub = require('./sub');
module.exports = {
add,
sub
}
package.json
{
"name": "calc",
"main": "./lib/main.js"
}
五、使用自定义包
calctest.js
const calc = require('./calc');
console.log(calc.add(1,2));
结果:
使用node运行js代码
六、npm的使用
npm是随NodeJS一起安装的包管理工具
1.查看npm版本
npm -v
2.初始化包
npm init 创建包,package.json文件是必不可少的,我们可以使用npm init生成package.json文件
npm init -y 快速创建包
生成的package.json如下:
3.安装包
npm install 安装package.json指定的所有依赖
npm install <package> 本地安装,将安装包放在./node_modules下(运行npm命令所在的目录),如果没有node_modules目录,会在当前执行npm命令的目录下生成node_modules目录
可以通过require()来引入本地安装的包
npm install <package> --save 安装到生产依赖,会把依赖包名称添加到package.json文件dependencies下
npm install <package> --save-dev 安装到开发依赖,会把依赖包名称添加到package.json文件devDependencies下
npm install <package>@<version> 下载指定版本的包
npm install <package> -g 全局安装安装,将安装包放在node的安装目录的lib下的node_modules下
34查看包安装信息
npm list -g 查看所有全部安装的包
npm list <package> 查看某个包的版本号
5.卸载包
npm uninstall <package> 卸载包
6.更新包
npm update <package> 更新包
7.清空NPM本地缓存
npm cache clear 可以清空NPM本地缓存
8.执行脚本
npm run <scriptname> 执行pacakge.json配置的scripts对象,如:npm start,npm run test
9.package.json与package-lock.json的区别
当执行npm install的时候,node会先从package.json文件中读取所有dependencies的信息,然后根据dependencies的信息与node_modules中的模块进行对比,没有的直接下载,node是从package.json文件读取模块名称,从package-lock.json文件中获取版本号,然后进行下载或者更新
例如对于jquery的依赖:
package.json
"dependencies": {
"jquery": "^3.4.1"
}
package-lock.json
"dependencies": {
"jquery": {
"version": "3.4.1",
"resolved": "https://registry.npm.taobao.org/jquery/download/jquery-3.4.1.tgz",
"integrity": "sha1-cU8fjZ3eS9+lV2S6N+8hRjDYDvI="
}
}
yarn.lock
jquery@^3.4.1:
version "3.4.1"
resolved "https://registry.npm.taobao.org/jquery/download/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2"
integrity sha1-cU8fjZ3eS9+lV2S6N+8hRjDYDvI=
使用npm安装包会有package-lock.json
package.json的jquery版本^是定义向后(新)兼容依赖,如果jquery版本超过3.4.1,大版本上(3)上相同,就允许下载最新的包,package.json只能锁定大版本,即版本号的第一位,不能锁定后面的小版本。
package-lock.json就是锁定具体版本号,使得jquery版本不会自动下载升级,如果要升级package-lock.json里面的包,npm install <package>@<version>。
使用yarn安装包会有yarn.lock
yarn.lock与package-lock.json都是用来锁定版本号
七、yarn的使用
npm安装包是顺序进行的,而yarn安装包的并行的;yarn安装有缓存,会直接从自己的缓存中拿到包。
npm install yarn -g 安装yarn
1.查看版本
npm init
yarn init
2.安装包
npm install
yarn 或 yarn install
npm install <package> --save
yarn add <package>
npm install <package> --save-dev
yarn add <package> --dev
3.移除包
npm uninstall <package>
yarn remove <package>
4.更新包
npm update <package>
yarn upgrade <package>
5.执行脚本
npm run <scriptname>
yarn run <scriptname>
6.设置镜像的地址
npm config get registry 查看当前npm源
yarn config get registry 查看当前yarn源
npm config set registry <url> npm设置镜像地址,设置淘宝镜像npm config set registry https:
//registry.npm.taobao.org
yarn config set registry <url> yarn设置镜像地址
npm config delete registry npm删除镜像地址
yarn config delete registry yarn删除镜像地址
更多请阅读