几分钟玩转npm

npm doc 任意门

目录

入门知识

使用过程遇到的问题

私有仓库 

使用举例



入门知识

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

  • 作用
  1. 列举依赖的packages
  2. package的名称、版本等信息
  3. 允许二次开发
  • fields
必须字段name指明package名称 (必须小写,可包含连字符或下划线)
version格式为major(based-1).minor(新特性 based-0).patch(fix bug based-0)
其他字段authorYour Name <email@example.com> (http://example.com)
dependencies

prod 使用的依赖

例如
"dependencies": {
      "my_dep": "^1.0.0",
      "another_dep": "~2.2.0"
}

devDependencies

local 使用的依赖

例如
"devDependencies" : {
      "my_test_framework": "^3.1.0".
      "another_dev_dep": "1.0.0 - 1.2.0"
}
补充
~1.2.5 : 1.2.x - 1.2.5
^1.2.5: 1.x.x - 1.2.5

  • 创建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 uninstall package-name (当前目录删除package)
  • npm uninstall --save package-name (从prod依赖删除)
  • npm uninstall --save-dev package-name (从dev依赖删除)
  • npm uninstall -g <package_name>

使用过程遇到的问题

  • 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.

解决办法

  1. 登录npm官网,看到下图绿框的提示:你还没有验证邮箱地址,点击send it again。
  2. 前往邮箱,收到如下邮件,按照内容进行验证。 
  3.  再次执行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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值