一 npm介绍
1.1 npm概述
npm是世界上最大的软件注册表。来自全球的javascript开源开发人员使用npm共享和借用软件包,许多组织也使用npm管理私人开发。
npm由三个不同部分组成:
使用该网站发现软件包,设置配置文件以及管理npm体验的其他方面。例如,您可以设置组织(组织)来管理对公共或私有软件包的访问。
命令行界面(CLI)
该CLI从终端运行,并且是如何大多数开发商NPM互动(NPM的cli是随同NodeJS一起安装的)
注册表 https://www.npmjs.com/signup
该注册表是JavaScript软件及其周围的元信息的大型公共数据库(注册账号后在npm网站自行发布npm包)
1.2 使用npm后
调整适用于您的应用程序的代码包,或直接合并它们。
下载您可以立即使用的独立工具。
运行软件包而不使用npx下载。
与任何npm用户在任何地方共享代码。
将代码限制为特定的开发人员。
创建组织(组织)来协调软件包的维护,编码和开发人员。
通过使用组织来组建虚拟团队。
管理多个版本的代码和代码依赖项。
基础代码更新时,可以轻松更新应用程序。
发现解决同一难题的多种方法。
查找正在从事类似问题和项目的其他开发人员。
1.3 入门
1.3.1 环境搭建
要开始使用npm,你得先安装nodejs,NPM是随同NodeJS一起安装的包管理工具:
nodejs下载地址:https://nodejs.org/zh-cn/download/
下载安装完成后,打开cmd终端输入
node -v
npm -v
查看是否安装成功:
1.3.2 注册表账号注册登录
方式一: 官网注登录页面自行注册登录
方式二: 终端命令行注册登录
注册:
$ npm adduser
// 会出现以下内容
Username: mcmohd // 用户名(注意别和已有的账号名称相同)
Password: // 密码
Email: (this IS public) mcmohd@gmail.com // 邮箱
=================================================================
登录:
$ npm login
// 依次输入以下内容
Username: // 用户名(拼写了现有帐户的用户名,则将使用拼写错误的名称创建一个新帐户。如需有关意外创建帐户的帮助,请联系npm支持)
Password: // 密码
Email: (this IS public) mcmohd@gmail.com // 邮箱
测试是否登录
npm whoami // 回车后显示你的用户名就说明登录成功
npm账号相关: https://docs.npmjs.com/getting-started/
1.3.3 npm Enterprise(企业) 配置和登录
https://docs.npmjs.com/configuring-your-registry-settings-as-an-npm-enterprise-user 配置
https://docs.npmjs.com/logging-in-to-an-npm-enterprise-registry-from-the-command-line 登录
1.4 共享软件包并与他人合作
如果您选择公开共享您的软件包,则无需付费。要使用和共享私人软件包,您需要升级您的帐户。要与他人共享,请创建名为npm Orgs的组织,并邀请其他人与您私下(收费)或公开(免费)合作。或者,您可以为公司注册npm的私有实例,称为npm Enterprise,这样您就可以在内部开发不公开共享的软件包。
官方针对不同类型的收费如下:
https://www.npmjs.com/products
1.5 CLI参考文档
https://docs.npmjs.com/cli-documentation/ 官网
https://www.npmjs.cn/cli/access/ 中文文档
二 使用npm包
2.1 关于软件包和模块
参考: https://docs.npmjs.com/about-packages-and-modules
2.1.1 关于包格式
软件包是以下任意一种:
a)包含package.json文件描述的程序的文件夹。
b)包含(a)的压缩tarball。
c)解析为(b)的URL。
d)<name>@<version>用(c)在注册表上发布的A。
e)<name>@<tag>指向(d)的A。
F)甲<name>,其具有latest满足标签(E)。
g)git克隆后得到(a)的URL。
可以通过以下方式格式化用于npm软件包的Git URL:
git://github.com/user/project.git#commit-ish
git+ssh://user@hostname:project.git#commit-ish
git+http://user@hostname/project/blah.git#commit-ish
git+https://user@hostname/project/blah.git#commit-ish
commit-ish可以是任何标签,沙,或分支,可以作为参数被供给git checkout。默认commit-ish值为master
2.1.2 关于模块
模块是在任何文件或node_modules目录可以由Node.js的加载require()功能。
要由Node.js require()函数加载,模块必须是以下之一:
具有package.json包含"main"字段的文件的文件夹。
包含index.js文件的文件夹。
一个JavaScript文件。
注意: 由于不需要模块具有package.json文件,因此并非所有模块都是软件包。只有具有package.json文件的模块才是包。
在Node程序的上下文中,module也是从文件加载的内容。例如,在以下程序中:
var req = require('request')
我们可能会说"变量req引用request模块"。
通常我们引用包会通过require或者import这两种引用模块的方法引入
2.2 npm软件包的范围,访问级别和可见性
npm软件包的可见性取决于包含该软件包的范围(名称空间),以及为该软件包设置的访问级别(私有或公共)。
注意:要创建组织范围的包,必须首先创建组织。有关更多信息,请参见" 创建组织 "。
范围 |
访问权限 |
可以查看和下载 |
可以写(发表) |
组织 |
私人的 |
对组织具有读取权限的团队成员 |
组织中的团队成员具有对该包的读写访问权限 |
组织 |
上市 |
大家 |
组织中的团队成员具有对该包的读写访问权限 |
用户 |
私人的 |
程序包所有者和已被授予读取权限的用户访问程序包 |
程序包所有者和已被授予对该程序包读写权限的用户 |
用户 |
上市 |
大家 |
程序包所有者和已被授予对该程序包读写权限的用户 |
无范围 |