NPM package.json 文件的主要用途是什么?

2023-11-22

我读自here如果人们通过 npm 安装您的项目,则 package.json 文件中的依赖项允许人们安装依赖项 -

最后,dependency字段用于列出所有依赖项 您的项目可在 npm 上找到。当有人安装你的 通过 npm 进行项目,列出的所有依赖项都将安装为 出色地。另外,如果有人在根目录中运行 npm install 您的项目,它将安装所有依赖项 ./node_modules。

如果有人不在项目的根目录中运行 npm install ,所有依赖项将安装到哪里?

另外,如果他们选择通过 Github 克隆这个项目怎么办?不管怎样,它已经准备好了,对吧?那么除了向用户提供有关项目的元数据之外,package.json 文件的用途是什么?


如果有人不在项目的根目录中运行 npm install ,所有依赖项将安装到哪里?

如果您的意思是“如果您在不同的目录中运行命令,它们将安装在哪里”,NPM 将向上搜索父目录,直到找到package.json,然后将依赖项安装在node_modules该文件旁边的文件夹。 IE。它们将始终位于项目根目录中。

另外,如果他们选择通过 Github 克隆这个项目怎么办?不管怎样,它已经准备好了,对吧?那么除了向用户提供有关项目的元数据之外,package.json 文件的用途是什么?

事实并非如此!节点项目几乎总是有一个.gitignore明确排除的文件node_modules从致力于版本控制,并期望你运行npm install下载源码后。

没有什么充分理由将依赖项放在 GitHub 存储库中 - 只要项目遵循语义版本控制(绝大多数包都是这样做的),npm install永远不会导致下载不兼容的版本,如果你绝对需要锁定依赖项的版本,你可以使用npm shrinkwrap.

EDIT:正如 Matt 的评论非常有帮助地指出的那样,NPM 有几个功能超出了简单的元数据 - 我可能最常用的是Scripts,它允许您为命令行操作创建特定于项目的别名。

这对我来说很方便的一个例子是运行 Webpack 开发服务器 - 它安装在我的项目本地devDependencies(你可以使用--save-dev安装软件包时的选项),所以如果我手动执行此操作,我将不得不输入以下内容:

"./node_modules/.bin/webpack-dev-server" --inline --hot

坦率地说,这会有点痛苦。相反,我可以将其添加到我的 package.json 中(请注意node_modules/.bin使用 NPM 脚本时会自动添加到系统路径,因此您无需每次都键入):

"scripts": {
    "dev": "webpack-dev-server --inline --hot"
}

然后我所要做的就是:

npm run dev

除了这个简单的用例之外,还有几个“特殊”脚本名称,它们会在某些事件时自动调用 - 例如,prepublish在将包发布到注册表之前运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NPM package.json 文件的主要用途是什么? 的相关文章

随机推荐

  • 杀死一个正在运行的线程

    如果我们强行终止正在运行的线程会发生什么 我有一个线程RecordThread 它调用一些复杂且耗时的函数 在我使用的这些函数中试着抓块 分配和释放内存以及使用临界区变量等 like void RecordThread AddRecord
  • 使用 python 请求获取 eBay 访问令牌(交换身份验证令牌)

    我正在尝试使用本指南获取访问令牌 这是我的主文件 import requests from utils import make basic auth header conf code
  • Xamarin.Forms:Android 项目生成错误 - AppData\Local\Xamarin 文件夹内缺少文件

    我正在尝试 Xamarin Forms 我创建了一个名为 App2 的解决方案 Visual Studio 自动创建了以下项目 应用程序2 便携式 App2 Droid App2 iOS 当我尝试编译 Android 项目 App2 Dro
  • 标准 Android 菜单图标,例如刷新 [关闭]

    Closed 这个问题是无关 目前不接受答案 Android SDK 通过以下方式提供标准菜单图标android R drawable X 然而 一些标准图标 例如ic menu refresh 刷新图标 缺失android R 有没有办法
  • 在 XCode 6 中如何设置观察点而不停止执行?

    您可以按照以下步骤轻松在 XCode 中设置观察点 顺便说一句 如果有更简单的方法 我想知道 运行你的程序 在使用变量的代码中设置断点 到达断点时 右键单击变量并选择 Watch nameOfTheVariable 继续执行 唯一的问题是每
  • Backbone集合集合属性(针对url)

    我需要将 id 传递给集合以在 url 中使用 例如 user 1234 projects json 但我不知道如何执行此操作 一个示例会很棒 我的应用程序的结构方式是在启动时提取并呈现 用户 集合 然后我希望当用户单击时 将其 文档 从服
  • 在 PHP PDO postgres 中处理布尔输入?

    有没有更好的方法来处理布尔输入postgresPHP 中的 PDO 驱动程序 在 PHP PDO 中转换布尔值false到 和true到 1 这会导致某些语句中出现如下错误 00000 7 ERROR invalid input synta
  • 简单的语音识别方法

    是的 我知道语音识别相当复杂 轻描淡写 我正在寻找的是一种区分的方法maybe20 30 个短语 分割单词的能力 离散语音很好 会很好 但不是必需的 该软件将取决于用户 即供我使用 我不是在寻找现有的软件 而是在寻找一种自己做这件事的好方法
  • 如何在Windows中使用C#检测进程的开始和结束?

    我在 C 方面有很好的工作经验 但现在我想开发一个简单的 可能是控制台应用程序 软件 它只检测我的计算机上启动或结束的进程的名称和时间 例如 我假设我的小应用程序已经在运行 如果用户打开 Firefox 那么它应该随时间将 firefox
  • 更改 QLineEdit 中占位符文本的颜色

    当我设置占位符文本时QLineEdit setPlaceholderText 显示为灰色 有什么办法可以将颜色更改为其他颜色 例如红色 你必须子类化QLineEdit并在其中绘制您自己的占位符paintEvent class CustomC
  • WSL 2,React 不重新加载文件更改?

    我最近安装了 WSL 2 但是当我使用 create react app 创建应用程序并使用 npm start 时 当我编辑某些文件时 该应用程序不会重新加载 我错过了什么吗 根据我的经验 当您的源位于 Windows 驱动器上时 例如
  • 处理 Backbone 中的不可保存值

    是否有标准方法来处理 Backbone 中不可保存的值 e g MyModel Backbone extend Backbone Model initialize function this set inches this get mm 2
  • 使用jQuery获取div的绝对或相对位置position

    我会尝试解释我想要得到什么 我有一个 div 的位置 固定 在页面底部 到该 div 中 还有一些其他 div 我想要的是显示与这些 div 右侧对齐的另一个 div 具有绝对位置 换句话说 我不想知道 div 的左侧位置 相对于文档 ID
  • Windows 上的 Cmake 不添加共享库路径(适用于 Linux)

    我在 Linux 上使用 CMake 和 Eclipse 一段时间了 并且一直在处理包含大量可执行文件和共享对象的多个目标项目 我使用源代码构建 在 Linux 上 二进制文件被放入它们自己的目录中 当我在 Linux 上执行此操作时 Ec
  • 如何捕获SQLServer超时异常

    我需要专门捕获 SQL Server 超时异常 以便可以以不同的方式处理它们 我知道我可以捕获 SqlException 然后检查消息字符串是否包含 Timeout 但想知道是否有更好的方法来做到这一点 try some code catc
  • 将表单移至特定屏幕

    我试图弄清楚如何将指定的 System Windows Forms Form 移动到主屏幕以外的另一个屏幕上 我有一个带有可用屏幕列表的组合框 用户可以在其中选择他喜欢的屏幕 并且我的应用程序应该将其窗口之一移动到该屏幕上 我的笔记本电脑上
  • 通过从 Javascript 中的特定日期减去 X 天数来查找日期

    我想通过从 JavaScript 中的特定日期减去 X 天数来查找日期 我的 JavaScript 函数接受 2 个参数 一个是日期值 另一个是需要减去的天数 例如 我将我的参数日期传递为 2009 年 7 月 27 日 将另一个参数传递为
  • C++11:g++-4.7 内部编译器错误

    以下代码 include
  • 在哪里可以找到 Windows mysql 服务器的 my.ini 文件?

    同样的问题一次又一次地重复 我是另一个重复这个问题的人 我已经设置了我的 mysql 服务器 它的位置是 C Program Files MySQL MySQL Server 5 5 但我无法在上述路径中找到 my ini 文件 当我输入命
  • NPM package.json 文件的主要用途是什么?

    我读自here如果人们通过 npm 安装您的项目 则 package json 文件中的依赖项允许人们安装依赖项 最后 dependency字段用于列出所有依赖项 您的项目可在 npm 上找到 当有人安装你的 通过 npm 进行项目 列出的