npm、cnpm、yarn、pnpm、npx、nvm的区别:https://blog.csdn.net/weixin_53791978/article/details/122533843
npm、cnpm、yarn、pnpm、npx、nvm的区别:https://blog.csdn.net/weixin_53791978/article/details/122533843
包管理工具:npm、npx、yarn、cnpm、pnpm:https://blog.csdn.net/March_Q__/article/details/126675476
包管理工具详解npm 、 yarn 、 cnpm 、 npx 、 pnpm:https://blog.csdn.net/weixin_52851967/article/details/128620143
第六节:pnpm剖析(简介、硬/软链接、实操、配置、原理:https://www.cnblogs.com/yaopengfei/p/17203131.html
nvm npm cnpm nrm yarn pnpm:https://www.jianshu.com/p/c62023b475a7
安装步骤属于傻瓜式操作,一直next就行了,在此不做截图演示,其中有一步是选择已安装的nodejs的路径
在nvm安装路径下 setting.txt
文件中配置如下信息:
#设置nvm路径
nvm root E:\JAVA\nvm
#设置nvm路径(相当于setting.txt中的root:):
nvm node_mirror https://npm.taobao.org/mirrors/node/
#设置nodejs路径(相当于setting.txt中的path:):
nvm npm_mirror https://npm.taobao.org/mirrors/npm/
在电脑命令行输入nvm出现如下信息代表安装成功
命令 | 说明 |
---|---|
nvm list | 查看已经安装的版本 |
nvm list installed | 查看已经安装的版本 |
nvm list available | 查看网络可以安装的版本 |
nvm arch | 查看当前系统的位数和当前nodejs的位数 |
nvm install [arch] | 安装指定版本的node 并且可以指定平台 version 版本号 arch 平台 |
nvm on | 打开nodejs版本控制 |
nvm off | 关闭nodejs版本控制 |
nvm proxy [url] | 查看和设置代理 |
nvm node_mirror [url] | 设置或者查看setting.txt中的node_mirror,如果不设置的默认是 https://nodejs.org/dist/ |
nvm npm_mirror [url] | 设置或者查看setting.txt中的npm_mirror,如果不设置的话默认的是 https://github.com/npm/npm/archive/ |
nvm uninstall | 卸载指定的版本 |
nvm use [version] [arch] | 切换指定的node版本和位数 |
nvm root [path] | 设置和查看root路径 |
nvm version | 查看当前的版本 |
#安装指定版本node
nvm install 14.18.0
#使用指定版本node
nvm use 14.18.0
#卸载指定版本node
nvm uninstall 14.18.0
#查看已安装的node版本
nvm list
#安装激活使用版本后查看 node 和 npm 版本
node -v
npm -v
npm配置
#查看npm配置信息
npm config list
#全局npm,修改npm的包的全局安装路径
npm config set prefix "E:\JAVA\nvm\v14.18.0"
#修改npm的包的全局cache位置
npm config set cache "E:\JAVA\nvm\v14.18.0\npm-cache"
#全局安装npm
npm install npm -g
#配置环境变量
在系统变量中添加 NPM_HOME=E:\JAVA\nvm\v14.18.0, path中添加%NPM-HOME%
#常用命令
#g全局 D开发环境 S生产环境
npm install xxx -g -D -S
#卸载依赖
npm uninstall xxx
#查看下载源
npm config get registry
#修改为taobao源
npm config set registry https://registry.npm.taobao.org
npm install -g cnpm --registry=http://r.cnpmjs.org
npm install -g cnpm --registry=https://registry.npm.taoba.org
作用
#安装(自测安装后不能使用)
npm install nrm -g
#使用
nrm ls
#bug: 不出现星号
#C:\dev\dev-tools\npm\node_modules\nrm\cli.js && 改为 ||
if (hasOwnProperty(customRegistries, name) && (name in registries || customRegistries[name].registry === registry.registry)) {
registry[FIELD_IS_CURRENT] = true;
customRegistries[name] = registry;
}
if (hasOwnProperty(customRegistries, name) || (name in registries || customRegistries[name].registry === registry.registry)) {
registry[FIELD_IS_CURRENT] = true;
customRegistries[name] = registry;
}
#安装
npm install yarn -g
#查看源
yarn config get registry
#修改为taobao源
yarn config set registry https://registry.npmmirror.com
#查看配置列表
yarn config list
#查看 yarn 全局bin位置(prefix)
yarn global bin
#查看 yarn 全局安装位置(folder)
yarn global dir
#查看 yarn 全局cache位置(cache)
yarn cache dir
#改变 yarn 全局bin位置(prefix)
yarn config set prefix "C:\dev\dev-tools\npm\bin"
#改变 yarn 全局安装位置(folder)
yarn config set global-folder "C:\dev\dev-tools\yarn"
#改变 yarn 全局cache位置(cache)
yarn config set cache-folder "C:\dev\dev-tools\yarn-cache"
#初始化
yarn init
yarn add [package]
yarn add [package]@[version]
yarn add [package]@[tag]
#安装所有的依赖包
yarn
yarn install
npm 与 yarn命令比较
#安装
npm i -g pnpm
#pnpm版本
pnpm --version
#列出已缓存的每个包
pnpm cache list
#返回全局缓存位置
pnpm cache dir
#清除缓存
pnpm cache clean
#pnpm全局仓库路径(类似 .git 仓库)
pnpm config set store-dir "D:\dev\dev-tools\.pnpm-store"
#pnpm全局安装路径
pnpm config set global-dir "D:\dev\dev-tools\pnpm-global"
#pnpm全局bin路径
pnpm config set global-bin-dir "D:\dev\dev-tools\nodejs"
#pnpm创建pnpm-state.json文件的目录
pnpm config set state-dir "D:\dev\dev-tools\pnpm"
#pnpm全局缓存路径
pnpm config set cache-dir "D:\dev\dev-tools\nodejs\pnpm\cache"
#安装示例
pnpm install -g @vue/cli
pnpm install -g webpack webpack-cli
pnpm i -g nodemon
pnpm i -g concurrently
#安装完node,cmd能运行npm,但是PowerShell无法运行 npm
get-executionpolicy
set-executionpolicy remotesigned
#查看安装了哪些
npm list --depath=0 -g
#安装某依赖包
npm install xxx
npm i xxx
#卸载某个依赖包:
npm uninstall package
#--save-dev 等同于 -D
npm uninstall package --save-dev
npm uninstall package -D
#强制重新build
npm rebuild
#清除缓存
npm cache clean
npm的命令其实是非常多的:
安装npm包分两种情况:
npm install webpack -g
npm install webpack
依赖包想要实现全局安装 通过指令 npm install 插件包名字 -g
这样就可以在任意层级目录下面执行插件包里面的安装了
比如全局安装yarn:npm install yarn -g
但是很多人对全局安装有一些误会:
安装在特定项目的文件夹里面
他只会将插件包放置到当前文件夹下面的node_modules里面
只有当前这个项目才能使用这个插件包,其他项目是使用不了的
局部安装又分为开发依赖和生产依赖
npm i [email protected]
安装0.28.4版本的yarn
很多同学之前应该已经会了 npm install ,但是你是否思考过它的内部原理呢?
这是一幅我画出的根据 npm install 的原理图:
npm install会检测是否存在package-lock.json文件:
没有lock文件
有lock文件
不一致,那么会重新构建依赖关系,直接会走顶层的流程;
没有找到,会从registry仓库下载,直接走顶层流程;
package-lock.json
package-lock.json文件解析:
- 当前项目依赖axios,但是axios依赖follow-redireacts;
- axios中的属性如下:
- version表示实际安装的axios的版本;
- resolved用来记录下载的地址,registry仓库中的位置;
- requires/dependencies记录当前模块的依赖;
- integrity用来从缓存中获取索引,再通过索引去获取压缩包文件;
semver版本规范是X.Y.Z
版本号就是包名后面的一串数字
x.y.z
x :主版本号(major):做了不兼容的API修改(可能不兼容之前的版本);
y :次版本号(minor):做了向下兼容的功能性新增(新功能增加,但是兼容之前的版本);
z :修订号(patch):做了向下兼容的问题修正(没有新功能,修复之前版本的bug);
^和~的区别
在package.json文件中,每个包后面都有相应的版本号
x.y.z:表示一个明确的版本号;
^x.y.z:表示x是保持不变的,y和z永远安装最新的版本;
~x.y.z:表示x和y保持不变,z永远安装最新的版本;
npx是npm5.2之后自带的一个命令
npx运用
使用之前需要先安装yarn:npm install yarn -g
全局安装yarn
npm下载比较慢时,又不想更改npm下载地址 ,就可以使用yarn来进行下载其他的依赖包
注意:使用的时候不再是npm install …… 而是yarn add …… 因为他是依托于node
#下载包:
yarn add 包名
#移除包:
yarn remove 包名
#例如
#(安装到开发和生产环境dependencies)
yarn add vue
#(安装到开发环境devDependencies)
yarn add webpack
#(移除vue)
yarn remove vue
#(移除webpack)
yarn remove webpakc
npm init -y
新建项目并初始化,生成package.json文件
yarn add axios dayjs
(包名可连写) 安装插件指令
新建src文件夹,并在src里面新建main.js文件
const dayjs = require("dayjs");
console.log(dayjs);
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node ./main.js"
},
"start": "node ./src/main.js"
yarn start
使用yarn start运行 等同于 node ./main.js运行,在文件夹较多,跳转路径太麻烦时,这个方法就很方便
yarn start == yarn run start (run可以省略)
运行结果如下
yarn remove dayjs
yarn remove axios
#连写
yarn remove dayjs axios
安装cnpm :npm i cnpm -g
全局安装
由于一些特殊的原因,某些情况下我们没办法很好的从 https://registry.npmjs.org下载下来一些需要的包,这时可以使用镜像
npm config set registry https://www.npmmirror.com/
npm config get registry
查看是否切换成功#下载某个包
cnpm add 包名
#删除某个包
cnpm remove 包名
#运行配置过的文件
cnpm start
使用方法与yarn区别不大,参考yarn的使用,把yarn写成cnpm就行了
中文文档:https://www.pnpm.cn/
npm和yarn的问题
当使用 npm 或 Yarn 时,如果你有 100 个项目,并且所有项目都有一个相同的依赖包,那么, 你在硬盘上就需要保存 100 份该相同依赖包的副本。
pnpm运行起来非常的快,超过了npm和yarn
pnpm采用了一种巧妙的方法,利用硬链接和符号链接来避免复制所有本地缓存源文件,这是yarn的最大的性能弱点之一
使用链接并不容易,会带来一堆问题需要考虑。
pnpm继承了yarn的所有优点,包括离线模式和确定性安装
#官网提供了很多种方式来安装pnpm:https://www.pnpm.cn/installation
#如果已经安装了Node,Node中有npm,所以我们通过npm安装即可;
#(全局安装pnpm)
npm install pnpm -g
#通过 npx 安装 pnpm
npx pnpm add -g pnpm
#一旦安装完 pnpm 之后,就无需使用其它软件包管理器来更新 pnpm 了。 你可以让 pnpm 自己来更新自己,如下所示:
pnpm add -g pnpm
#设置pnpm的磁盘存储目录
pnpm config set store-dir E:\JAVA\pnpm\.pnpm-store
#查看pnpm的安装目录
pnpm store path
#从store中删除当前未被引用的包来释放store的空间
pnpm store prune
pnpm命令类似于前面的 yarn 和 cnpm
npm命令 | npnm 等价命令 |
---|---|
npm init | pnpm init |
npm install | pnpm install |
npm install 包名 | pnpm add 包名 |
npm install 包名 -D | pnpm add 包名 -D |
npm uninstall 包名 | pnpm remove 包名 |
npm run < cmd > | pnpm < cmd > |
更多命令和用法可以参考pnpm的官网:https://pnpm.io/zh/
https://blog.csdn.net/zwl5670/article/details/129598244
使用pnpm的时候突然提示我的pnpm不是最新版本,提示执行“pnpm add -g pnpm”可以更新到最新版本。
然而执行“pnpm add -g pnpm”,结果出现如下提示。
ERROR Unable to find the global bin directory
Run "pnpm setup" to create it automatically,
or set the global-bin-dir setting,
or the PNPM_HOME env variable. The global bin directory should be in the PATH.
执行pnpm setup依然报错。
看提示有“set the global-bin-dir setting”、“PNPM_HOME”、 “PATH”。然后进行如下设置:
#pnpm全局仓库路径(类似 .git 仓库)
pnpm config set store-dir "E:\JAVA\pnpm\store"
#pnpm全局安装路径
pnpm config set global-dir "E:\JAVA\pnpm\global"
#pnpm全局bin路径
pnpm config set global-bin-dir "E:\JAVA\pnpm\global-bin"
#pnpm创建pnpm-state.json文件的目录
pnpm config set state-dir "E:\JAVA\pnpm\state"
#pnpm全局缓存路径
pnpm config set cache-dir "E:\JAVA\pnpm\cache"