npm 是什么?

一、包的概念

1. 什么是包?

Node.js 中的 第三方模块 又叫做 ,指的是同一个概念,只不过叫法不同。

2. 包的来源

不同于 Node.js 中的内置模块与自定义模块,包是由第三方个人或团队开发出来的,免费供所有人使用。

3. 为什么需要包

  • 由于 Node.js 的内置模块仅提供了一些底层的 API,导致在基于内置模块进行项目开发的时,效率很低。
  • 包是基于内置模块封装出来的,提供了更高级、更方便的 API,极大的提高了开发效率。
  • 包和内置模块之间的关系,类似于 jQuery 和 浏览器内置 API 之间的关系。

4. 从哪里下载包

  • 国外有一家 IT 公司,叫做 npm, Inc. 这家公司旗下有一个非常著名的网站: https://www.npmjs.com ,它是全球最大的包共享平台,你可以从这个网站上搜索到任何你需要的包,只要你有足够的耐心!
  • npm, Inc. 公司提供了一个地址为 https://registry.npmjs.org 的服务器,来对外共享所有的包,我们可以从这个服务器上下载自己所需要的包。

注意

5. 如何下载包

  • npm, Inc. 公司提供了一个包管理工具,我们可以使用这个包管理工具,从 https://registry.npmjs.org 服务器把需要的包下载到本地使用。
  • 这个包管理工具的名字叫做 Node Package Manager(简称 npm 包管理工具),这个包管理工具随着 Node.js 的安装包一起被安装到了用户的电脑上。
  • 可以在终端中执行 npm -v 命令,来查看自己电脑上所安装的 npm 包管理工具的版本号

二、包管理配置文件

npm 规定,在项目根目录中,必须提供一个叫做 package.json 的包管理配置文件。用来记录与项目有关的一些配置信息。例如:

  • 项目的名称、版本号、描述等
  • 项目中都用到了哪些包
  • 哪些包只在开发期间会用到
  • 哪些包在开发和部署时都需要用到

1. 初始化 package.json

使用 npm init 命令就可以初始化一个 package.json 文件,在初始化的过程中系统会一一提示设置相关配置,若不想填写则一路 回车 ,系统会设置默认值,最后会在项目根目录生成该配置文件

# 系统会一一提示设置相关配置。提示设置的字段均为必填字段(有的可以用回车键,即设置为空带过)
npm init

# 会直接创建一个package.json,只配置了一些字段并给出默认值。
npm init -y

2. 配置说明

查看官文文档配置详解,其中 nameversion 是必填项,名称和版本一起构成一个唯一标识符,下面列出一些常见的配置项

  • name必填项, 项目名称,更准确的解释是 包的名称,以后要发布包时,该名称必须是唯一的(也不能与 node 内置模块的名称相同),其他限制如下:
    • 名称必须小于等于 214 个字符
    • 包的名称不能以 下划线 开头
    • 包的名称中不能有 大写字母(也不要有 中文
    • 该名称最终成为URL、命令行参数和文件夹名称的一部分。因此,名称不能包含任何非url安全字符。
  • version必填项,包的版本号
  • desription:包的描述。它是一个字符串。这有助于人们发现你的包,因为它在npm搜索中列出。
  • keywords:关键词。它是一个字符串数组。这有助于人们在npm搜索中发现你的包。
  • homepage:项目主页的url。例如可以填写该项目再 github 上的url地址
  • bugs:开发者的联系方式,代码库的issues地址等。如果代码使用者发现了bug,可以通过这个配置项找到提bug的地方。
    {
      "url" : "https://github.com/owner/project/issues",
      "email" : "project@hostname.com"
    }
    
  • main:包的入口文件,默认为 index.js
  • scripts:指定了运行脚本命令的npm命令行缩写。
  • author:项目的作者。可以为字符串,对象。
    {
      "author": "Barney Rubble <b@rubble.com> (http://barnyrubble.tumblr.com/)"
    }
    
    {
      "name" : "Barney Rubble",
      "email" : "b@rubble.com",
      "url" : "http://barnyrubble.tumblr.com/"
    }
    
  • contributors:项目的贡献者。author 的数组
  • license:开源协议。默认为 ISC
  • dependencies:项目的依赖。开发环境线上环境 都用到的包( 核心依赖包),通过 npm install 包名 --save 或者 npm install 包名 安装的包会出现在这里。
  • devDependencies:项目的依赖。只有在 开发环境 用到的包(开发依赖包),通过 npm install 包名 --save-devnpm install 包名 -D 安装的包会出现在这里。

3. 多人协作的问题

第三方包的体积过大,不方便团队成员之间共享项目源代码。所以在共享时 剔除 node_modules,例如使用 git 管理代码时,要把 node_modules 添加到 .gitignore 忽略文件中。

4. 包的语义化版本规范

包的版本号是以“点分十进制”形式进行定义的,总共有三位数字,例如 2.24.0,其中每一位数字所代表的的含义如下:

  • 第1位数字:大版本(主版本)
  • 第2位数字:功能版本(次版本)
  • 第3位数字:Bug修复版本(修订版本)

版本号提升的规则:只要前面的版本号增长了,则后面的版本号归零。

三、发布包与删除包

1. 发布

  1. 登录 npm,在 npm 官网注册后,在终端执行 npm login,依次输入用户名、密码、邮箱
    # 登录前,必须把下载包的镜像源切换为 npm 官方的服务器
    npm login
    
  2. 将终端切换到包的根目录之后,运行 npm publish 命令,即可将包发布到 npm 上,(注意:包名不能雷同)。
    npm publish
    

2. 删除

  1. 与发布的第一步一样,必须先登录
  2. 运行 npm unpublish 包名 --force 命令,即可从 npm 删除已发布的包。
    npm unpublish 包名 --force
    

注意

  • npm unpublish 命令只能删除 72 小时以内发布的包
  • npm unpublish 删除的包,在 24 小时内不允许重复发布
  • 发布包的时候要慎重,尽量不要往 npm 上发布没有意义的包!

五、常用命令

  • 初始化 package.json

    npm init -y
    
  • 安装包(多个包一起安装时,包名与包名之间用空格隔开)

    # 完整写法
    npm install 包名
    
    # 简写
    npm i 包名
    
    # 一次性安装所有的包
    npm install
    
    # 全局安装包(后面的修饰符与包名的顺序无关紧要)
    npm i 包名 -g
    
    # 安装指定版本的包(默认情况下会自动安装最新的包)
    npm i moment@2.22.2
    
    # 安装开发环境用到的包(后面的修饰符与包名的顺序无关紧要)
    # 完整写法
    npm install 包名 --save-dev
    # 简写
    npm install 包名 --D
    
  • 卸载包

    # 卸载项目依赖包
    npm uninstall 包名
    
    # 卸载全局包
    npm uninstall 包名 -g
    
  • 查看某个包的所有版本号

    # 这里以 `vue` 包举例
    npm view vue versions
    
  • 查看 npm 配置

    npm config ls
    
  • 查看当前下载包的镜像源

    npm config get registry
    
  • 设置当前下载包的镜像源

    # 例如设置淘宝镜像源:npm config set registry=https://registry.npmmirror.com/
    npm config set registry=镜像源地址
    
  • 查看全局安装的包

    npm list -g
    
  • 查看当前项目安装的包

    npm list
    
  • 清理缓存

    npm cache clean --force
    
  • 登录 npm(依次输入用户名、密码、邮箱)

    # 登录前,必须把下载包的镜像源切换为 npm 官方的服务器
    npm login
    
  • 发布自己的包

    npm publish
    
  • 删除自己发布的包

    npm unpublish 包名 --force
    

六、工具包

常用工具包整理

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值