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版本和命令版本,解决了不同项目使用不同版本的命令的问题。