当前位置: 首页 > news >正文

npm基础

npm是什么

npm是一个世界上最大的软件注册表,包含超过60万个包(package)。包的结构可以轻松跟踪依赖性和版本。 

npm由三个独立的部分组成

网站: 网站 是开发者查找包(package)、设置参数以及管理 npm 使用体验的主要途径。

注册表 :注册表 是一个巨大的数据库,保存了每个包(package)的信息。

命令行工具  (CLI) :CLI 通过命令行或终端运行。开发者通过 CLI 与 npm 打交道。

如何安装npm并管理

npm是Node.js编写的,所以需要安装Node.js去使用npm,可以通过Node.js网站安装npm,也可以安装NVM(Node Version Manager)。

强烈建议使用nvm这样的Node版本管理器来安装Node.js和npm。不建议使用 Node 安装程序,因为 Node 安装过程会将 npm 安装在具有本地权限的目录中,并且在全局运行 npm 包时可能会导致权限错误

Node 版本管理器允许你在系统上安装和切换多个版本的 Node.js 和 npm,以便你可以在多个版本的 npm 上测试你的应用,以确保它们适用于不同版本的用户。

npm的更新比node.js频繁,可使用下述命令来查看现在安装版本

npm -v

若不是最新可使用下述命令,更新到官方测试最新版本

npm install npm@latest -g

npm包和模块

公共 npm 注册表

公共 npm 注册表是 JavaScript 包的数据库,每个包都由软件和元数据组成。开源开发者和公司的开发者使用 npm 注册表向整个社区或其组织的成员贡献包,并下载包以在他们自己的项目中使用。

npm 注册表包含包,其中许多也是 Node 模块,或者包含 Node 模块。

关于包

包是由 package.json 文件描述的文件或目录。包必须含 package.json 文件才能发布到 npm 注册表。

包可以不限定范围或限定给用户或组织,限定范围的包可以是私有的或公共的。

关于模块

模块是 node_modules 目录中可以由 Node.js require() 函数加载的任何文件或目录。

要由 Node.js require() 函数加载,模块必须是以下之一:

  • 包含 package.json 文件的文件夹,其中包含 "main" 字段。

  • 一个 JavaScript 文件。

注意:由于模块不需要有 package.json 文件,因此并非所有模块都是包。只有具有 package.json 文件的模块也是包。

关于范围(需npm版本2及以上)

当你注册 npm 用户账户或创建组织时,你将获得与你的用户或组织名称匹配的范围。你可以将此范围用作相关包的命名空间。

范围允许你创建与其他用户或组织创建的包同名的包,而不会发生冲突。

当在 package.json 文件中列为依赖时,范围包的前面是它们的作用域名称。范围名称是 @ 和斜杠之间的所有内容:

  • "npm" 范围:

@npm/package-name

关于公共包

作为 npm 用户或组织成员,你可以创建和发布任何人都可以下载并在自己的项目中使用的公共包。

  • 无范围公共包存在于全局公共注册表命名空间中,可以在 package.json 文件中仅使用包名称进行引用:package-name。

  • 作用域公共包属于用户或组织,当作为依赖包含在 package.json 文件中时,必须以用户或组织名称开头:

    • @username/package-name

    • @org-name/package-name

关于私有包(需版本2.7及以上,一个付费用户或组织账户)

使用 npm 私有包,你可以使用 npm 注册表来托管仅对你和选定的协作者可见的代码,从而允许你在项目中管理和使用私有代码以及公共代码。

私有包总是有一个范围,而范围包默认是私有的。

  • 用户范围的私有包只能由你和你授予读取或读/写访问权限的协作者访问。

  • 组织范围内的私有包只能由已被授予读或读/写访问权限的团队访问。

npm包访问矩阵

只有用户账户可以创建和管理无范围的包。组织只能管理范围包。

package.json文件

创建package.json文件

你可以将 package.json 文件添加到你的包中,以方便其他人管理和安装。发布到注册表的包必须包含 package.json 文件。
{
//必填,字段包含你的软件包的名称,必须小写且不带空格。可能包含连字符、点和下划线。
"name": "my-awesome-package",
//必填,字段必须采用 x.x.x 格式,并且遵循 语义版本控制指南
"version": "1.0.0",
//作者信息
"author": "Your Name <email@example.com> (https://example.com)"
}

你可以通过运行 CLI 问卷或创建默认 package.json 文件来创建 package.json 文件。

运行CLI问卷
1.在命令行上,导航到包的根目录。
cd /path/to/package
2.运行命令
npm init
3.回答命令行问卷中的问题
创建默认package.json文件
要使用从当前目录中提取的信息创建默认 package.json,请使用带有 --yes  -y 标志的 npm init 命令。
1.在命令行上,导航到包的根目录。
cd /path/to/package
2.运行命令
npm init --yes

设置init命令的配置选项

你可以为 npm init 命令设置默认配置选项。例如,要设置默认作者电子邮件、作者名称和许可证,请在命令行上运行以下命令
> npm set init-author-email "example-user@example.com"
> npm set init-author-name "example_user"
> npm set init-license "MIT"

在 package.json 文件中指定 dependencies 和 devDependencies

运行 npm install 时,npm 将下载 package.json 中列出的满足每个列出的 语义版本 要求的 dependencies ( 生产中所需的包)和 devDependencies( 仅用于本地开发和测试的包)。
可以从命令行或通过手动编辑package.json文件将依赖添加到package.json文件。
使用命令行
将条目添加到package.json文件的 "dependencies" 属性( npm install 的默认行为),请在命令行上运行以下命令, --save-prod 标志,也称为 -S
npm install <package-name> [--save-prod]
要将条目添加到 package.json 文件的 "devDependencies" 属性,请在命令行上运行以下命令, --save-dev 标志,也称为 -D
npm install <package-name> --save-dev
手动编辑
"name": "my_package",
"version": "1.0.0",
"dependencies": {
"my_dep": "^1.0.0",
"another_dep": "~2.2.0"
},
"devDependencies" : {
"my_test_framework": "^3.1.0",
"another_dev_dep": "1.0.0 - 1.2.0"
}

README.md文件

我们强烈建议在你的软件包目录中包含一个 README.md 文件,因为它可以帮助开发者在 npm 上找到你的软件包,并在他们的项目中使用你的代码时获得良好的体验。在大多数情况下,README.md 文件包含安装、配置和使用包中代码的说明;以及用户可能觉得有用的任何其他信息。与任何 GitHub 存储库一样,README.md 文件将渲染在软件包页面上。

创建并将README.md文件添加到包中

  1. 在文本编辑器中,在你的包根目录(README.md 文件必须位于包的根级目录中)中,创建一个名为 README.md 的文。

  2. 在 README.md 文件中,添加有关你的包的有用信息。

  3. 保存 README.md 文件。

更新现有的README.md文件

仅当你发布软件包的新版本时,README.md 文件才会在软件包页面上更新。要更新你的 README.md 文件

  1. 在文本编辑器中,更新 README.md 文件的内容。

  2. 保存 README.md 文件。

  3. 在命令行上,在包根目录中,运行以下命令:

npm version patchnpm publish

创建和发布包

npm用户可以创建无范围的包在自己的项目中使用,并将将它们发布到npm公共注册表以供其他人在他们的项目中使用。无范围的包始终是公共的,并且仅由报名册引用:package-name

要在用户或组织命名空间中公开共享你的代码,你可以将公共用户范围或组织范围的包发布到 npm 注册表。

要与一组有限的用户或团队共享你的代码,你可以将私有用户范围或组织范围的包发布到 npm 注册表。

创建无范围的公共包/范围公共包/私有包

对于创建范围公共包/私有包,如果你使用 npmrc 去 管理多个注册表上的账户,请在命令行上切换到相应的配置文件。

npmrc <profile-name>

1. 在命令行上,为你的包创建一个目录。

mkdir my-test-package

2. 导航到包的根目录。

cd my-test-package

3. 如果你使用 git 管理你的包代码,请在包根目录中运行以下命令,将 git-remote-url 替换为你的包的 git 远程 URL。

git init git remote add origin git://git-remote-url

4、

无范围的公共包,在包根目录下,运行命令。

npm init

范围公共包/私有包, 在包根目录中,运行 npm init 命令并将范围传递给 scope 标志。

对于组织范围的包,将 my-org 替换为你的组织名称。

npm init --scope=@my-org

对于用户范围的包,将 my-username 替换为你的用户名。

npm init --scope=@my-username

5.根据提示生成 package.json 文件。

6.创建一个 README 文件,说明你的包代码是什么以及如何使用它。

7.在你首选的文本编辑器中,为你的包编写代码。

发布前删除敏感信息

在发布到注册表前删除如密码、个人身份信息等敏感信息,对不太敏感信息使用  .npmignore 或 .gitignore 文件来防止发布到注册表。

发布前进行测试,以减少错误。

npm install path/to/my-package

发布无范围的公共包/范围公共包/私有包

1、在命令行上,导航到包的根目录。

cd /path/to/package

2、 

无范围的公共包/私有包,要将你的公共包发布到 npm 注册表,请运行:

npm publish

要将范围公共包发布到 npm 注册表,请运行:

npm publish --access public

3、 要查看你的包页面,请访问 https://npmjs.com/package/*package-name*,将 *package-name* 替换为你的包名称。公共包会在 npm 网站上的包名下方显示 public。 私有包会在 npm 网站上的包名下方显示 private。

从注册表获取包

本地下载安转包

安转无范围的包
npm install <package_name>
安装范围公共包
npm install @scope/package-name
安装私有包
npm install @scope/private-package-name

测试包安装

ls node_modules

全局下载和安装包

npm install -g <package_name>
如果你收到 EACCES 权限错误,你可能需要使用版本管理器重新安装 npm 或手动更改 npm 的默认目录。

更新本地包

1. 导航到项目的根目录并确保它包含 package.json 文件
cd /path/to/project
2. 在你的项目根目录中,运行 update命令
npm update
3. 要测试更新,请运行 outdated命令。这不会有任何输出
npm outdated

更新全局安装的包

查看需要更新哪些全局包
npm outdated -g --depth=0
更新单个全局包
npm update -g <package_name>
更新所有全局安装的包
npm update -g

卸载本地包

卸载无范围包
npm uninstall <package_name>
卸载范围包
npm uninstall <@scope/package_name>
删除本地包而不从package.json中删除它
使用 --no-save 会告诉 npm 不要从你的 package.jsonnpm-shrinkwrap.json  package-lock.json 文件中删除包。
npm uninstall --no-save lodash

卸载全局包

无范围的包
npm uninstall -g <package_name>
范围包
npm uninstall -g <@scope/package_name>

故障排除

生成和定位npm-debug.log文件

当一个包安装或发布失败时,npm CLI 将生成一个 npm-debug.log 文件。此日志文件可以帮助你找出问题所在。

如果需要生成 npm-debug.log 文件,可以运行以下命令之一。

对于安装包:

npm install --timing

对于发布包:

npm publish --timing

你可以在 .npm 目录中找到 npm-debug.log 文件。要查找你的 .npm 目录,请使用 

npm config get cache

随机错误

一些奇怪的问题可以通过简单地运行以下命令并重试来解决。

npm cache clean

http://www.dtcms.com/a/358990.html

相关文章:

  • SNMPv3开发--snmpd.conf
  • Vue加载速度优化,verder.js和element.js加载速度慢解决方法
  • VGG改进(6):基于PyTorch的VGG16-SE网络实战
  • 项目管理方法适用场景对比
  • Linux kernel arm64 启动流程
  • ubuntu 安装conda, ubuntu24安装miniConda
  • python制作一个股票盯盘系统
  • 三重积分从入门到入土
  • 微风PLC编程软件下载(C4G02_Develop)
  • GESP5级2024年03月真题解析
  • Python实现全角数字转半角数字的完整教程
  • 一站式可视化运维:解锁时序数据库 TDengine 的正确打开方式
  • 数值分析——算法的稳定性
  • 鸿蒙服务端开发资料汇总
  • 中级统计师-统计实务-第三章 国民经济核算
  • 从支付工具到收益资产:稳定币在 Berachain 上的二次进化
  • 数位 dp
  • 函数(1)
  • React useState基本使用
  • 鸿蒙ArkTS 核心篇-13-if分支语句
  • 玄机靶场 | 第五届红明谷-异常行为溯源
  • Fortran二维数组去重(unique)算法实战
  • WSL使用指南
  • AUTOSAR进阶图解==>AUTOSAR_TR_FrancaIntegration
  • 【超全汇总】MySQL服务启动命令手册(Linux+Windows+macOS)(中)
  • 腾讯云OpenCloudOS 9系统部署OpenTenBase数据库详细教程
  • 轻量xlsx读取库xlsx_drone的编译与测试
  • 关联容器(Associative containers)
  • Windows server 2012安装步骤
  • 为什么要用 Markdown?以及如何使用它