NPM - 管理包但不会让生活变得容易执行任何。
NPX - 的工具正在执行节点包。
NPX 与NPM 版本5.2+ 捆绑在一起
NPM 本身并不简单地运行任何包。事实上,它不运行任何包。如果要使用 NPM 运行包,则必须在 package.json 文件中指定该包。
当通过 NPM 包安装可执行文件时,NPM 会链接到它们:
-
本地 安装在
./node_modules/.bin/ 目录中创建了“链接”。
-
全局安装在 Linux 上从全局
bin/ 目录(例如 /usr/local/bin)或在 Windows 上的 %AppData%/npm 创建了“链接”。
Documentation you should read
NPM:
可能会在某个项目上本地安装一个包:
npm install some-package
现在假设您希望 NodeJS 从命令行执行该包:
$ some-package
以上将失败。只有全局安装的包可以通过键入它们的名称来执行only。
要解决这个问题并让它运行,您必须输入本地路径:
$ ./node_modules/.bin/some-package
您可以通过编辑您的 packages.json 文件并将该软件包添加到 scripts 部分来从技术上运行本地安装的软件包:
{
"name": "whatever",
"version": "1.0.0",
"scripts": {
"some-package": "some-package"
}
}
然后使用npm run-script(或npm run)运行脚本:
npm run some-package
NPX:
npx 将检查<command> 是否存在于$PATH 或本地项目二进制文件中,并执行它。所以,对于上面的例子,如果你想执行本地安装的包some-package,你只需要输入:
npx some-package
npx 的另一个主要优势是能够执行以前未安装的包:
$ npx create-react-app my-app
上面的示例将生成一个react 应用程序样板在命令运行的路径中,并确保您始终使用最新版本的生成器或构建工具,而无需升级每个是时候使用它了。
用例示例:
npx 命令可能对package.json 文件的script 部分有所帮助,
当不需要定义可能不常用或任何其他原因的依赖项时:
"scripts": {
"start": "npx gulp@3.9.1",
"serve": "npx http-server"
}
致电:npm run serve
相关问题:
- How to use package installed locally in node_modules?
- NPM: how to source ./node_modules/.bin folder?
- How do you run a js file using npm scripts?