npx¶
npx 是一个随 npm 一起安装的命令行工具,它可以让你执行 npm package 中的命令,而无需全局安装或在项目中单独配置依赖。它是从 npm 5.2.0 版本开始引入的,旨在简化运行临时命令和工具的过程。
在传统的 Node.js 项目中,如果你需要使用某个工具(如 webpack、create-react-app 等),你通常需要全局安装这些工具。然而,使用 npx,你可以直接运行这些工具,而无需安装它们。它会自动在执行时临时下载并运行这些工具。
原理¶
npx的运作原理是:
在运行时,它会先到node_modules/.bin路径和环境变量$PATH里面,检查命令是否存在。
如果存在,就会执行;
如果不存在,那么会检查是否已经全局安装了对应的模块,
如果还没有安装,就会去仓库中下载对应的模块,下载完成后就执行。
执行完毕就会删除,不会留下任何痕迹。
使用¶
使用 create-react-app 创建一个新的 React 项目:
npx create-react-app my-app
# 等同于
npm install -g create-react-app
create-react-app my-app
在项目中安装了 webpack,而没有全局安装 webpack,你可以使用 npx 来运行本地安装的 webpack 命令:
npx webpack --config webpack.config.js
# 会运行项目中 node_modules/.bin 目录下的 webpack,而无需手动指定路径
运行 GitHub 仓库中的命令:
npx github:facebook/create-react-app
# 从 GitHub 上直接下载并运行 create-react-app
进阶使用¶
指定版本执行:
npx create-react-app@4.0.0 my-app
避免缓存(使用 –no-install):
npx --no-install create-react-app my-app
运行自定义脚本:
// package.json
{
"scripts": {
"start": "webpack-dev-server"
}
}
# 执行
npx run start
优缺点¶
使用npx的好处有很多。比如:
1. 可以避免全局安装可执行依赖包,避免长期污染;
2. 可以执行依赖包中的命令,安装完成后会自动运行;
3. 可以自动加载node_modules中的依赖包,无需手动指定$PATH。
4. 此外,npx还支持指定特定的Node版本和命令版本,解决了不同项目使用不同版本的命令的问题。