npm是什么?
NPM 的全称是 [Node] Package Manager,是随同 NodeJS 一起安装的包管理和分发工具,它很方便让 JavaScript 开发者下载、安装、上传以及管理已经安装的包。
npm 之于 Node.js ,就像 pip 之于 Python, gem 之于 Ruby, pear 之于 PHP 。
npm 是 Node.js 官方提供的包管理工具,他已经成了 Node.js 包的标准发布平台,用于 Node.js 包的发布、传播、依赖控制。
npm 提供了命令行工具,使你可以方便地下载、安装、升级、删除包,也可以让你作为开发者发布并维护包。总的来说就是一个开源、免费的包管理器。便于我们下载和分享资源。 cnpm、yarn、pnpm等工具都是基于npm包管理器的一些变种。解决了早期npm的一些缺点,例如下载速度慢,不能离线下载等。 npx是[npm@5.2]版本的一个命令。
npx是什么?
npx 是一个工具,它是npm v5.2.0引入的一条命令(npx),是npm的一个包执行器,是为了提高从npm注册表使用软件包的体验 。 npm使得它非常容易地安装和管理托管在注册表上的依赖项, npx使得使用CLI工具和其他托管在注册表。
就像npm极大地提升了我们安装和管理包依赖的体验,在npm的基础之上,npx让npm包中的命令行工具和其他可执行文件在使用上变得更加简单。它极大地简化了我们之前使用纯粹的npm时所需要的大量步骤。
所以现在大部分的开发者都可以直接使用到 npx 的功能。npx 仍然是一个简单的 cli 工具,来让我们更加方便的执行一些 npm 包,而不用通过 npm 来将包安装到开发者的电脑上面。
npm 和 cnpm 的区别
- 两者之间只是 node 中包管理器的不同哟,
- npm是node官方的包管理器。cnpm是个中国版的npm,是淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:
- 如果因为网络原因无法使用npm下载,那cnpm这个就派上用场了。 npm和cnpm只是下载器的不同,好像npm用人力板车去拉包,而cnpm却使用货车去运包。 而存包的地址则在下文nrm的查看,
pnpm是什么?
pnpm全称“Performant NPM”(NPM 全称Node Package Manager),即高性能NPM。按官网介绍,速度快、节省磁盘空间的软件包管理器。主要优势有:
- 快速:是同类工具速度的将近2倍
- 高效:node_modules中的文件均克隆或硬链接自单一存储位置
- 支持单体仓库:内置了对单个源码仓库中包含多个软件包的支持
- 权限严格:创建的node_modules默认并非扁平结构,因此代码无法对任意软件包进行访问
以上引用自中文官网
npx 与 npm 主要区别
1、一个永远存在,一个临时安装,用完后删除
// 例子:用创建一个react项目的对比
// npm 创建
npm install -g create-react-app
create-react-app test-app
//npx 创建
npx create-react-app test-app
区别:npm他会在本地全局性的安装create-react-app,这个包会存储在node目录下面去,以后创建react项目直接执行create-react-app命令就可以了。
npx 命令他会把create-react-app安装包临时安装上,等项目初始化完成以后,就删除掉。
2、npx 可以执行依赖包里的二进制文件
// 例子:执行webpack里面的文件
// npm执行
npm i -D webpack ./node_modules/.bin/webpack -v
// 结果是:6.9.0
// 或者执行
npm i -D webpack `npm bin` /webpack -v
// npx执行
npm i -D webpack
npx webpack -v
也就是说 npx 会自动查找当前依赖包中的可执行文件,如果找不到,就会去环境变量里面的 PATH 里找。如果依然找不到,就会帮你安装!
3、npx 可以执行文件,但是 npm 不可以
npx 甚至支持运行远程仓库的可执行文件:npx github:piuccio/cowsay hello
再比如使用命令 npx http-server 可以一句话帮你开启一个静态服务器!(第一次运行会稍微慢一些)
指定node版本来运行npm scripts:npx -p node@8 npm run build