freeCodeCamp 旅途19 - 用 npm 来管理模块

npm

Node 包管理(npm)是一个是开发者共享和管理模块(或者包)的命令行工具, 它由 JavaScript 代码编写,广泛应用于 Node.js。

当开始一个新的项目时,npm 会生成一个package.json文件。这个文件列出了你项目的包依赖。由于 npm 的包更新很频繁,package.json文件允许你指定依赖的版本。这样就能保证包的升级不会破坏你的项目。

npm 把包保存在一个名为node_modules文件夹里。这些包可以通过两种方式安装:

  • 1.安装在全局的 root node_modules文件夹下,可以被所有的项目访问。
  • 2.安装在项目自己的node_modules文件夹下,只能被自己访问。这样每一个项目都有一个完整的依赖库。

How to Use package.json, the Core of Any Node.js Project or npm Package

package.json 是任何 Node.js 项目或 npm 包的中心。它存储项目的相关信息,就像 HTML 文档中的区域是用来描述网页的通用信息(元信息)一样。package.json 由单个 JSON 对象组成,它以键值对的形式存储项目的信息。一个最小的 package.json 文件至少包含两个必须字段:name 和 version。

author 字段:指定了谁是项目的创建者。它可以是字符串,也可以是带有联系人详细信息的对象。"author": "Jane Doe"

Add a Description to Your package.json

一个好的 package.json 文件的下一部分就是 description 字段,通过简洁的文字来描述你的项目。

如果你计划将来把这个包发布到 npm,请注意 description 字段的作用是告知用户这个包的用途,这样用户就可以决定是否要安装你发布的包。然而,这并不是描述信息的唯一使用场景:它也是一种很好的总结项目的方式,对于一个普通的 Node.js 项目来说,它可以帮助其它开发者、未来的维护者以及你自己快速地了解项目,这同样非常重要。

无论你如何计划项目,都建议你使用描述信息。我们来添加类似这样的信息:"description": "A project that does something awesome"

Add Keywords to Your package.json

你可以在 keywords 字段中使用相关的关键字描述项目,这个字段的结构是一个由双引号字符串组成的数组。。"keywords": [ "descriptive", "related", "words" ]

Add a License to Your package.json

license 字段是你告知用户允许他们拿这个项目干什么的地方。常见的开源协议是 MIT 和 BSD。http://choosealicense.com 了解更多协议。"license": "MIT"

Add a Version to Your package.json

在 package.json 中 version 和 name 是所必填的字段之一。version 字段描述了当前项目的版本。"version": "1.2"

Expand Your Project with External Packages from npm

使用包管理器的最大原因之一是它们强大的依赖管理特性。在新的计算机上开始一个项目时,不用手动确认你已安装所有的依赖,npm 会自动为你安装它们。但是 npm 如何准确的知道你项目需要哪些依赖呢?我们来看看 package.json 中 dependencies 这一部分。

在 dependencies 这一部分,你的项目需要按照下面这种格式来存储这些依赖包:

"dependencies": {
  "package-name": "version",
  "express": "4.14.0",
  "moment": "^2.24.0"
}

Manage npm Dependencies By Understanding Semantic Versioning

在 package.json 中,dependencies 这部分的 npm 包的版本号遵循所谓的语义化版本(SemVer),它是一种软件版本控制的行业标准,旨在使管理依赖项更加容易。在 npm 上发布的库、框架或其它工具都应该使用语义化版本(SemVer),以便让使用该依赖包的用户能够在依赖包需要升级时,提前规划自己的项目需要为之做出的改动。

在没有公共 API 的项目中,语义化版本(SemVer)没有意义——除非你的项目与上面的例子类似,否则请使用其它的版本控制方式吧。

根据语义化版本(SemVer)官方网站,它是这样规定的:

  版本格式:主版本号.次版本号.修订号,版本号递增规则如下:

  主版本号:当你做了不向下兼容的公共 API 修改,

  次版本号:当你添加了向下兼容的新功能,

  修订号:当你做了向下兼容的问题修正。

这意味着修订号是用来修复错误的,次版本号则是添加了新功能,但它们都没有破坏之前的功能。最后,主版本号的变更则是添加了对早期版本不兼容的更改。例如,一个语义化的版本号:1.3.8。

用波浪字符始终使用依赖项的最新补丁版本

如果想让项目各个部分保持相互兼容,锁定依赖包版本是一个有效的办法。但是大多数情况下,我们并不希望错过依赖项的问题修复,因为它们通常包含重要的安全补丁,而且它们理论上也会兼容我们既有的代码。

为了让 npm 依赖项更新到最新的修订版,你可以在依赖包的版本号前加一个波浪符号(~)。"some-package-name": "~1.3.8" 定义这个包允许使用的版本为 1.3.x。

用插入字符可以使用依赖项的最新次要版本

使用插入符号(^)允许 npm 来安装功能更新,不同之处在于:插入符号(^)允许次版本和修订版更新。

你项目中的 moment 依赖包的版本应该是 ~2.10.2,这意味着 npm 可以安装 2.10.x 版的 moment,如果使用插入符号(^)来替换版本号的前缀,那么 npm 可以安装的版本则是 2.x.x。"some-package-name": "^1.3.8" 定义这个包允许使用的版本为 1.x.x

Remove a Package from Your Dependencies

果想要删除不需要的依赖包,该怎么办呢?你可能已经猜到了——只需要删除 dependencies 中的键值对就行了。同样的方法也适用于删除 package.json 中的其它字段。

你可能感兴趣的:(freeCodeCamp 旅途19 - 用 npm 来管理模块)