关于npx的用法,我也是先读了阮一峰的博文,写得比较清楚了。
npx需要node@5.2及以上版本支持,如果不支持可以用npm安装。
本文就简洁地讲一下重点:
什么是npx?
npx是一个用来执行其他命令的命令。
// 查看node版本
node -v
// npx命令查看node版本,与上面命令等效(假设只有全局node模块被安装)
npx node -v
npx 有什么作用?
npx在执行命令时,既可以检查当前项目中已安装的命令,也可以检查全局命令。比如:
// 在当前项目路径下安装了create-react-app,但没有全局安装,此时初始化一个react项目
./node_modules/.bin/create-react-app myapp
// 因为没有全局安装,所以直接执行 create-react-app 会报错,只能引用本地命令的路径
// 使用npx,就可以直接访问当前项目下的命令
npx create-react-app myapp
以上npx运行的时候,会到node_modules/.bin路径和环境变量$PATH里面检查命令是否存在。 由于 npx 会检查环境变量$PATH,所以系统命令也可以调用。当然如果环境变量里也没有这个命令,npx会在当前工程路径下载这个命令(临时),执行完后会删除这个命令。所以npx每次都有可能调用最新的命令。
npx的用法根据参数配置来实现,具体看文档。看不懂源文档可以看阮一峰的。其中 -p -c –no-install –ignore-existing 浅显易懂。
使用体会
解决了在当前工程目录的命令执行问题,通常命令会写在package.json的scripts里,现在可以简化了。
需要思考的是,什么时候使用项目模块或全局模块。
比如在react项目中,强烈建议用npx执行create-react-app命令。曾经我遇到的node版本导致的项目跨团队开发startup问题,以及某些包依赖的版本问题,用npx完全可以解决,并且这是一个不错的选择,至少减少了文档中冗余的说明和沟通的成本。