javascript - npx 和 npm 的区别?
问题描述
我刚刚开始学习 React,Facebook 通过提供以下现成的项目来帮助简化初始设置。
如果我必须安装骨架项目,我必须输入npx create-react-app my-app
命令行。
我想知道为什么 Github 中的 Facebook 有npx create-react-app my-app
而不是npm create-react-app my-app
?
解决方案
介绍 npx:一个 npm 包运行器
NPM
-管理包,但执行起来并不容易。
NPX
- 用于执行节点包的工具。
NPX
NPM
与版本捆绑在一起5.2+
NPM
它本身并不简单地运行任何包。事实上,它不运行任何包。如果要使用 NPM 运行包,则必须在package.json
文件中指定该包。
当通过 NPM 包安装可执行文件时,NPM 链接到它们:
- 本地安装在
./node_modules/.bin/
目录中创建了“链接”。 - 全局安装具有从Linux 或Windows上的全局
bin/
目录(例如)创建的“链接”。/usr/local/bin
%AppData%/npm
新PM:
可能会在某个项目上本地安装一个包:
npm install some-package
现在假设您希望 NodeJS 从命令行执行该包:
$ some-package
以上将失败。只有全局安装的包可以通过只输入它们的名字来执行。
要解决此问题并使其运行,您必须键入本地路径:
$ ./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
NP:
npx
将检查是否<command>
存在于$PATH
或本地项目二进制文件中,并执行它。所以,对于上面的例子,如果你想执行本地安装的包some-package
,你需要做的就是输入:
npx some-package
另一个主要优点npx
是能够执行以前未安装的包:
$ npx create-react-app my-app
上面的示例将在命令运行的路径中生成react
应用程序样板,并确保您始终使用最新版本的生成器或构建工具,而无需在每次要使用它时进行升级。
用例示例:
npx
当不需要定义可能不常用或任何其他原因的依赖项时,命令可能对文件script
部分有所帮助:package.json
"scripts": {
"start": "npx gulp@3.9.1",
"serve": "npx http-server"
}
致电:npm run serve
相关问题:
推荐阅读
- c# - TreeListControl 不会立即更新子项的值
- angular - 在生产构建期间,类型 Component 上不存在属性
- apache-kafka - 在(超级账本结构)kafka 排序服务中,哪个排序节点将签名并将块广播给所有锚节点
- ansible - msg": "通过 ssh 连接主机失败:权限被拒绝 (publickey,gssapi-keyex,gssapi-with-mic,password)
- mysql - SQL 变量未在 go 客户端的选择查询中更新
- linkedin-api - LinkedIn API v2 - 如何获得请求推荐工作的权限?
- python - Python 不会读取 CSV 文件的所有行
- javascript - 有没有更好的写法?
- bean-io - 如何使用bean io将固定长度文件写入CSV文件,所有值都出现在记录的不同列中
- mule - 数据处理慢 mulesoft 批处理