npx

931 阅读2分钟

前言: 在看create-react-app的时候看到了这样一条命令

npx create-react-app my-app

那么问题来了,npx是什么?
执行npm包里面的二进制文件,目的是为了提升开发者使用包内提供的命令行工具的体验。

那么为什么要引入npx? 在以往我们用create-react-app脚手架创建项目的时候是这样操作的

npm install -g create-react-app
create-react-app my-app

有了npx,我们只需要执行

npx create-react-app my-app

这条命令会临时安装create-react-app包,命令完成后create-react-app会删掉,不会出现在 global 中

默认情况下, npx 会自动查找当前依赖包中的可执行文件,如果找不到,就会去 PATH 里找。如果依然找不到,就会帮你安装! 一般情况下,我们在项目中执行一个脚本是放在package.json里面的script,例如create-react-app里面

"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },

通过执行 npm run start执行 react-scripts start,实际上npm run 执行的也是node_modules/.bin里面的可执行文件。因此这条命令就等同于npx react-scripts start 因为配置scripts脚本已经使我们熟知的方式,所以对于项目中常用的命令,仍推荐写在script里面。 而对于那些一次性操作,比如init create-react-app 这样的,推荐使用hpx.

##踩坑记录:
1、默认情况下npm 5.2.0 以上版本就会有npx,但是我发现我的npm是6的版本,却没有,因此执行了

npm install -g npx

查询错误原因,是node和npm的版本问题,利用n stable升级了node的版本,依然报错

目测是我的npm出了问题,于是我利用tnpm升级了npm,成功了,机智如我~