前言
在现在随着三大框架的崛起,我们都会安装 Node.js,使用里面的包管理工具(npm)。虽然平时我们只需要会安装会启动以及打包就行了,但是我们也是需要更加了解其更多知识。
模板加载
核心模块加载
核心模块是指 Node.js 自带的模块。node启动时,核心模块文件已经被编译到了二进制文件中了,我们只需要按照名字来加载就可以了。
第三方模块加载(平时使用)
这里的第三方模块也就是我们平时通过 npm 进行下载的东西,比如:你现在想下载一个时间格式化插件(moment.js)。你 npm install moment,这个 moment 插件就是第三方模块。
加载方式:
- 先找到当前文件所处目录中的 node_modules 目录
- 然后根据文件目录下的package.json(非外层)找到文件中的 main 属性
- main 属性中就记录了 moment.js 的入口模块
- 然后加载使用这个第三方包,但是实际上最终加载的还是文件
- 如果 package.json 文件不存在或者 main 指定的入口模块也是没有
- 则 node 会自动找该目录下的 index.js,也就是说 index.js 会作为一个默认备选项
- 如果以上所有任何一个条件都不成立,则会进入上一级目录中的 node_modules 目录查找
- 如果上一级还没有,则继续往上上一级查找
- 如果直到当前磁盘根目录还找不到,最后报错: can not find module xxx
所以我们平时会使用 global 指令,例如:npm install moment --global。它就会存在磁盘根目录。
常见命令
初始化
// 通过向导在当前目录生成一个package.json文件
npm init
// 跳过向导快速在当前目录生成一个package.json文件
npm init -y 或 --yes
安装
// 安装模块,默认会安装最新的版本
npm install packagename
// 安装指定版本的模块
npm install packagename 0.0.1
// --save、-S参数意思是把模块的版本信息保存到dependencies(生产环境依赖)中,即你的package.json文件的dependencies字段中
npm install packagename --save 或 -S
// --save-dev 、 -D参数意思是吧模块版本信息保存到devDependencies(开发环境依赖)中,即你的package.json文件的devDependencies字段中
npm install packagename --save-dev 或 -D
// 安装全局的模块(不加参数的时候默认安装本地模块)
npm install packagename -g 或 --global
查看
// 查看所有已经安装的模块
npm list 或 npm ll 或 npm la 或 npm ls
//查看全局安装目录,并且只看一级
npm ls -g --depth 0
// 查看当前安装的包版本
npm ls packagename
// 查看全局安装的包版本
npm ls packagename -g
// 查看所有版本信息
npm view packagename versions
// 查看最新版本信息
npm view packagename version
更新
// 更新模块还可以使用(up, upgrade)。当然你也可以指定版本、指定是否全局、指定是否为开发依赖。
npm update [name [version]][-g][--save][--save-dev]]
卸载
// 卸载已经安装的模块,还可以使用(remove、rm、r, un、unlink)。当然你也可以指定版本、指定是否全局、指定是否为开发依赖。
npm uninstall [name [version]][-g][--save][--save-dev]]
缓存
// 验证缓存
npm cache verify
// 清除缓存
npm cache clean --force
package.json 和 package-lock.json 作用分析
- package.json 文件里记录有项目所安装的依赖项,当 node_modules 被删除时,可以再根据该文件安装所需的依赖项。
- npm 5 以前不会有 package-lock.json 这个文件,npm5 之后才加入这个文件。
- 当安装的时候,npm 都会生成或者更新 package-lock.json 这个文件。
- npm 5 之后的版本安装包的时候不需要加 --save 参数,它会自动保存依赖的信息。
- 当安装包的时候,会自动创建或者更新 package-lock.json 文件。
- package-lock.json 文件会保存 node_modules 中所有包的信息(版本、下载地址),重新 npm install 的时候速度会提升。它主要用来锁定版本号,防止自动升级新版,从而造成兼容性问题。
切源操作
cnpm(China Node Package Manager)
npm install cnpm -g --registry=https://registry.npm.taobao.org
nrm
nrm 其实就是一个切源工具,它记录了大部分的镜像以及可以自己管理自己的镜像地址(你可以添加或者删除)。
npm install -g nrm
具体命令:
nrm ls // 镜像列表
nrm -h // 查看所有指令
nrm test // 测试镜像速度
nrm use taobao // 使用淘宝镜像
nrm add registry http://registry.npm.frp.trmap.cn/ // 增加源
nrm del <registry> // 删除源
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!