Node.js 入门教程 26 npm 依赖与开发依赖 27 Node.js 包运行器 npx
创始人
2024-03-01 21:02:57
0

Node.js 入门教程

Node.js官方入门教程

Node.js中文网

本文仅用于学习记录,不存在任何商业用途,如侵删

文章目录

      • Node.js 入门教程
      • 26 npm 依赖与开发依赖
      • 27 Node.js 包运行器 npx
        • 27.1 轻松地运行本地命令
        • 27.2 无需安装的命令执行
        • 27.3 使用不同的 Node.js 版本运行代码
        • 27.4 直接从 URL 运行任意代码片段

26 npm 依赖与开发依赖

当使用 npm install 安装 npm 软件包时,是将其安装为依赖项。

该软件包会被自动地列出在 package.json 文件中的 dependencies 列表下(在 npm 5 之前:必须手动指定 --save)。

当添加了 -D--save-dev 标志时,则会将其安装为开发依赖项(会被添加到 devDependencies 列表)。

开发依赖是仅用于开发的程序包,在生产环境中并不需要。 例如测试的软件包、webpack 或 Babel。

当投入生产环境时,如果输入 npm install 且该文件夹包含 package.json 文件时,则会安装它们,因为 npm 会假定这是开发部署。

需要设置 --production 标志(npm install --production),以避免安装这些开发依赖项。

27 Node.js 包运行器 npx

npx 是一个非常强大的命令,从 npm 的 5.2 版本(发布于 2017 年 7 月)开始可用。

如果不想安装 npm,则可以安装 npx 为独立的软件包。

npx 可以运行使用 Node.js 构建并通过 npm 仓库发布的代码。

27.1 轻松地运行本地命令

Node.js 开发者过去通常将大多数可执行命令发布为全局的软件包,以使它们处于路径中且可被立即地执行。

这很痛苦,因为无法真正地安装同一命令的不同版本。

运行 npx commandname 会自动地在项目的 node_modules 文件夹中找到命令的正确引用,而无需知道确切的路径,也不需要在全局和用户路径中安装软件包。

27.2 无需安装的命令执行

npx 的另一个重要的特性是,无需先安装命令即可运行命令。

这非常有用,主要是因为:

  1. 不需要安装任何东西。
  2. 可以使用 @version 语法运行同一命令的不同版本。

使用 npx 的一个典型演示是使用 cowsay 命令。 cowsay 会打印一头母牛,并在命令中说出你写的内容。 例如:

cowsay "你好" 会打印:

 _______
< 你好 >-------\   ^__^\  (oo)\_______(__)\       )\/\||----w |||     ||

只有之前已从 npm 全局安装了 cowsay 命令,才可以这样做,否则,当尝试运行该命令时会获得错误。

【笔者当前没有在全局安装,只是在本地】

在这里插入图片描述

但是!

npx 可以运行该 npm 命令,而无需在本地安装:

npx cowsay "你好"

在这里插入图片描述

在这里插入图片描述

这样就会执行这个工作。

这是一个有趣但无用的命令。 其他场景有:

  • 运行 vue CLI 工具以创建新的应用程序并运行它们:npx @vue/cli create my-vue-app
  • 使用 create-react-app 创建新的 React 应用:npx create-react-app my-react-app

还有更多其他的场景。

27.3 使用不同的 Node.js 版本运行代码

使用 @ 指定版本,并将其与 node npm 软件包 结合使用:

npx node@10 -v #v10.18.1
npx node@12 -v #v12.14.1

这有助于避免使用 nvm 之类的工具或其他 Node.js 版本管理工具。

27.4 直接从 URL 运行任意代码片段

npx 并不限制使用 npm 仓库上发布的软件包。

可以运行位于 GitHub gist 中的代码,例如:

在这里插入图片描述

当然,当运行不受控制的代码时,需要格外小心,因为强大的功能带来了巨大的责任。

相关内容

热门资讯

(图表)十年来全国检察机关共办... 新华社图表,北京,2025年12月22日 记者从最高人民法院、最高人民检察院12月22日举行的发布...
反思独居蒋女士离世事件:补齐制... 家住上海虹口区的46岁独居人士蒋女士,12月14日因病离世,但她的遗产不能用来购买墓地,引发舆论广泛...
俄副外长:保证不进攻欧盟北约,... 【文/观察者网 柳白】 据俄新社报道,当地时间12月22日,俄罗斯外交部副部长谢尔盖·里亚布科夫在...
贵州一策律师事务所:让法治精神... 今年10月,贵州一策律师事务所荣获2025年度贵州省绿色网络工作室荣誉称号,成为全省20家获此殊荣的...
日本多名教职人员因性暴力或性犯... 新华社东京12月22日电(记者陈泽安 李子越)据日本文部科学省22日公布的数据,日本2024财年(2...
贵州仁山律师事务所:以法为炬传... 今年10月,贵州仁山律师事务所凭借深耕婚姻法律网络科普的扎实成效、线上线下融合的普法创新实践,斩获贵...
法治青年说|涉及网约车、公用电... 12月22日,全国人大常委会法工委关于2025年备案审查工作情况的报告提请全国人大常委会会议审议。在...
原创 再... 电视人朴娜莱向前任经纪人追加提起刑事诉讼,使得原本就紧绷的法律纠纷进一步升级。 据韩国媒体报道称:...
因涉嫌犯罪,交建股份实控人俞发... 12月22日晚间,交建股份(603815.SH)公告,公司收到公司实际控制人俞发祥家属通知,俞发祥因...
新疆火炬(603080)披露公... 截至2025年12月22日收盘,新疆火炬(603080)报收于22.81元,较前一交易日上涨0.35...