阅读 9743

npx和npm之间的关系

今天在做项目的时候碰到用npx执行的命令,现在就把npm和npx之间的关系整理一下,方便自己和大家查阅

npx是什么?
复制代码

npx是一个工具,它是npm v5.2.0引入的一条命令(npx),是npm的一个包执行器,只要为了提高从npm注册表使用软件包的体验 。 npm使得它非常容易地安装和管理托管在注册表上的依赖项, npx使得使用CLI工具和其他托管在注册表。

就像npm极大地提升了我们安装和管理包依赖的体验,在npm的基础之上,npx让npm包中的命令行工具和其他可执行文件在使用上变得更加简单。它极大地简化了我们之前使用纯粹的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 可以一句话帮你开启一个静态服务器!(第一次运行会稍微慢一些)

npx http-server
复制代码

指定node版本来运行npm scripts:

npx -p node@8 npm run build
复制代码

主要特点: 1、临时安装可执行依赖包,不用全局安装,不用担心长期的污染。 2、可以执行依赖包中的命令,安装完成自动运行。 3、自动加载node_modules中依赖包,不用指定$PATH。 4、可以指定node版本、命令的版本,解决了不同项目使用不同版本的命令的问题。

文章分类
阅读
文章标签