node.js 是一个基于Chrome V8引擎的JavaScript运行时环境,用于构建高性能、可扩展的网络应用程序。node的出现使JavaScript也能编写服务端应用程序。
在使用npm初始化项目的时候。npm会创建package.json,用来配置项目,它在后续打包、依赖安装起到关键作用。如果想要快速获取项目信息,就必须对package.json文件相关配置项有所了解。
第一位: 主版本号, 当你做了不兼容的API修改(重大改动)
第二位: 次版本号, 当你做了向下兼容的功能性新增(功能的新增)
第三位: 修订号, 当你做了向下兼容的问题修正(fix Bug 修复)
开发环境依赖,是指在开发阶段项目内为了开发使用的工具等,在项目上线用户不用接触的一些工具,在后面接 -D
就会将该依赖放在devDependencies
下,如: babel, webpack, eslint, jest, vite, rollup等
npm install --save-dev <package>
npm install -D <package>
生产环境依赖,也就是线上需要依赖的,在后面接 -S
就会将依赖放在dependencies
下,如: react, vue, lodash, jquery等
npm install --save <package>
npm install -S <package>
peerDependencies是指插件的运行依赖(开发插件、npm包), 也就是说, 如果你的插件依赖于另一个插件, 那么你的插件就应该将这个插件列入peerDependencies, 并且指定一个版本范围, 以确保它的存在, 否则会报错,一般来说,项目里面用不到这个,这个更适合插件开发和SDK开发使用。
npm install --save-peer <package>
npm install -P <package>
optionalDependencies是指插件的可选依赖, 也就是说, 如果你的插件依赖于另一个插件, 但是这个插件不是必须的, 那么你的插件就应该将这个插件列入optionalDependencies, 并且指定一个版本范围, 以确保它的存在, 否则会报错
npm install --save-optional <package>
npm install -O <package>
npm的命令大全
以上使官网npm的命令
其中比较重要的命令有以下几个
这各命令主要用于查看npm的一些信息
; "user" config from C:\Users\Administrator\.npmrc
//localhost:4873/:_authToken = (protected)
//registry.npmjs.org/:_authToken = (protected)
cache = "E:\\nodejs\\node_cache"
prefix = "E:\\nodejs\\node_global"
registry = "https://registry.npmmirror.com/"
; node bin location = E:\nodejs\node.exe
; node version = v20.5.0
; npm local prefix = C:\Users\Administrator
; npm version = 9.8.0
; cwd = C:\Users\Administrator
; HOME = C:\Users\Administrator
; Run `npm config ls -l` to show all defaults.
这里可以更换下载源,比如淘宝源、清华源等
npm config set registry 源地址
也可以使用插件来更换源,如:xmzs,这是一个用来管理Node版本和源等操作的命令行工具,支持中文,对国人很友好。具体使用如下:
npm install -g xmzs
mmp -V
mmp current
mmp use
mmp add
项目的依赖都会放在node_modules
下,采用扁平化(理想化)的方式安装,会将重复的依赖提升到顶层,其排序规则为:
.
系列 ===> @系列 ===>字母顺序
在寻找依赖时,使用广度优先遍历,优先处理更目录下的依赖,然后逐层处理每个包的依赖,处理依赖的时候会检查其版本是否符合依赖树中其他依赖的版本要求,不满足将尝试下载合适版本。
其安装过程如图:
全局的 .npmrc
在全局C盘AppData
文件中找.npmrc
文件
npm内置.npmrc
在安装的node
中找.npmrc
文件
检查项目是否存在package-lock.json
文件
package-lock.json
和package.json
版本是否一致node_modules
,并更新,没有则要下载资源。package.json
下载,并更新 package-lock.json
node_modules
,并更新,没有则要下载资源。package-lock.json
是npm5新增的文件, 用于锁定依赖包的版本号, 以便于其他开发者在npm install时生成相同的依赖关系树,其次它完成了缓存的相关,利用 integrity
+ version
+ 名称 生成唯一的key,在缓存文件node_cache中 index-v5 找索引是否存在相同的,如果找到就会将 content-v2 中对应的二进制文件解压放到node_modules
,上文已经说明怎么查看缓存文件位置,如果没有,就是目前没有建立缓存。
要执行这个命令,就必须在scripts
中配置相关执行命令
所有的可执行文件都放在 node_modules
下 .bin
目录下
.sh
文件 是给unix、Linux、Macos 使用.cmd
文件 是windows cmd 使用.ps1
文件 是windows power shell 使用过程:
命令识别:
npm ls -g
和命令一样在scripts
中配置
npx是npm5.2.0版本新增的命令, 用于执行依赖包中的命令, 例如: npx webpack, npx jest等
npx
侧重执行命令
npm
侧重管理依赖,安装或者卸载模块
npm config get registry
npm adduser
npm login
{
"files": [
"index.js"
]
}
npm init
npm publish
npm version patch
npm publish
npm unpublish
npm私服是一个npm仓库,用于存放npm包,类似于maven私服
npm install -g verdaccio
verdaccio
npm set registry http://localhost:4873
npm adduser --registry http://localhost:4873
npm login --registry http://localhost:4873
npm publish --registry http://localhost:4873
npm install --registry http://localhost:4873
以下是我私服管理的两个包
以上介绍了npm 的系列知识。