目录
入门知识
what
npm作为js程序的注册表,开发者通过npm可共享js程序,可使用他人共享的js程序,而且提供增值服务,如购买私有空间。如果你做过java开发,可以认为npm与maven类似。
三个部分
- websit,用于搜索js程序、账户相关配置
- cli,开发者与npm进行交互的终端
- regitry,js程序的数据库
安装
建议通过notejs进行安装,win7可安装的notejs版本下载地址 https://nodejs.org/dist/v12.16.2 。
package 和 module
- package
代表一个文件,特指内部包含package.json文件的文件夹。(package.json用于发布到npm注册表)
- module
代表任意文件,属于一种package,指的是在node_modules文件夹内的文件夹。(Node.js通过require()进行加载)
- scope
增值服务,指定归属,解决js程序名冲突,允许scope内的js程序 与 非当前scope的js程序 重名。
scope和package的可见性
- 非scope package都是公共的
- 私有的package 是 scope的
- scope的package默认是私有的
package.json
- 作用
- 列举依赖的packages
- package的名称、版本等信息
- 允许二次开发
- fields
必须字段 | name | 指明package名称 (必须小写,可包含连字符或下划线) |
version | 格式为major(based-1).minor(新特性 based-0).patch(fix bug based-0) | |
其他字段 | author | Your Name <email@example.com> (http://example.com) |
dependencies | prod 使用的依赖 例如 | |
devDependencies | local 使用的依赖 例如 |
- 创建package(创建自己的js组件的第一步,创建package.json)
进入package目录 cd x/x/packageName
npm init (按照提示,输入field内容)
npm init --yes (field使用默认内容)
cli指令
登录 | npm login | 按照提示输入npm用户名密码与绑定的邮箱 |
发布 | npm publish | |
修改版本 | npm version version-value npm publish | |
撤销发布 | npm unpublish <package-name>@<version> npm unpublish <package-name> -f | |
下载安装依赖 | npm install <package_name> | l在当前目录常见node_modules目录,在该目录下载package,例如nodejs需要使用这些package时。 |
npm install -g <package_name> | 将package的code作为pc的工具集,之后可在命令行执行该code。 | |
升级依赖 | npm update package-name npm update package-name -g | |
卸载依赖 |
|
使用过程遇到的问题
- npm publish 出现403
现象如下
npm ERR! code E403
npm ERR! 403 403 Forbidden - PUT https://registry.npmjs.org/npmtestchl1 - Forbidden
npm ERR! 403 In most cases, you or one of your dependencies are requesting
npm ERR! 403 a package version that is forbidden by your security policy, or
npm ERR! 403 on a server you do not have access to.
解决办法
- 登录npm官网,看到下图绿框的提示:你还没有验证邮箱地址,点击send it again。
- 前往邮箱,收到如下邮件,按照内容进行验证。
- 再次执行npm publish,无错误出现;npm中可看到上传的package。
私有仓库
与maven一样,我们也可以拥有自己的私有仓库,满足私人的js仅供私人项目依赖使用的需求。verdaccio - npmhttps://www.npmjs.com/package/verdaccio
// 安装 npm install --global verdaccio // 运行 verdaccio // 另一个命令行窗口,配置npm仓库地址 npm set registry http://localhost:4873/ // 添加用户,按照提示输出用户名 密码 邮箱 npm adduser --registry http://localhost:4873 // 发布package npm publish // 浏览器打开localhost:4873,可以看到发布的package了
使用举例
- 自定义package,提供其他package使用的依赖。
// step1:初始化package.json
D:\workspace\npmtest\npmtest1>npm init
// step2:新建index.js
module.exports = {
test: function(a,b,c){
console.log("there is test. param is " + a)
}
}
module.exports.test("s")
// step3:自测
命令行输入 node index.js,输出
there is test. param is s
// step4:注释module.exports.test("s")
// step5:发布
npm publish
- 自定义package,使用上边的依赖。
// step1:初始化
npm init
// step2:添加依赖
npm install npmtestchl1
// step3:编辑index.js
var npmtestchl1 = require('npmtestchl1')
npmtestchl1.test(" npmtest2 ")
// step4:自测
node index.js
输出
there is test. param is npmtest2