掌握npm的基本操作

195 阅读4分钟

关于npm

npm 是世界上最大的软件注册表。来自全球的开源开发人员使用 npm 来共享和借用包,当然也可以创建私有包在私有项目中使用

1. npm组成

  • 网站:(webSite): 提供了搜索、浏览和管理 npm 包的用户界面,同时也是一个社区交流的平台
  • 命令行工具: 用于在本地安装和管理 Node.js 应用程序的依赖包,
  • npm 注册表(Registry): :一个庞大的在线数据库,存储了数以万计的可重用的 JavaScript 模块

2. npm初始化

使用npm init或者npm init -y(直接选择所有默认值)可以快速生成一个node项目,同时当前文件夹下会存在一个package.json文件,大致内容如下:

{

  // 包的名称,必填项 小写,且不含任何空格。可以包含连字符、点和下划线
  "name": "npmtest",
  // 包版本 必填项,需要遵循[版本控制准则](https://docs.npmjs.com/about-semantic-versioning)
  "version": "1.0.0",
  "description": "", // 包的描述
  "main": "index.js", // 包的入口文件
  // 脚本命令
  "scripts": {
  "test": "echo \"Error: no test specified\" && exit 1"
   },
  // 作者
  "author": "",
  // 许可证:常见的 :
  // 1. ISC(它允许用户自由地使用、复制、修改、合并、出版发行、散布、再授权及贩售软件及软件的      副本)
  // 2. MIT(允许用户自由地使用、复制、修改、合并、出版发行、散布、再授权及贩售软件及软件的副   本,但必须包含版权声明和许可声明
  // 3. GPL 一个强 copyleft 许可证,要求任何使用或衍生该软件的作品都必须使用相同的许可证发布。这意味着任何使用 GPL 许可证的软件的项目也必须开源
  "license": "ISC"
}

3. 关于README .md

  1. 在文本编辑器的包根目录中,创建一个名为 .README.md的文件,它包括有关在包中安装、配置和使用代码的说明;以及用户可能认为有用的任何其他信息

4. 关于dependencies和devDependencies

npm 项目中,dependenciesdevDependenciespackage.json 文件中的两个重要字段,用于区分生产环境和开发环境的依赖项

dependencies

  • 定义dependencies 列出的是项目在生产环境中运行所必需的依赖项
  • 用途
    • 这些依赖项是项目正常运行所必需的。 - 当用户通过 npm install 安装项目时,这些依赖项会被自动安装
  • 例子:比如loadshaxios,exprss这些在正式上线或者打包后都需要用到的依赖
  • 安装命令: npm i package

devDependencies

  • 定义devDependencies 列出的是项目在开发和构建过程中所需的依赖项。
  • 用途
    • 这些依赖项主要用于开发、测试和构建过程,而不是运行时。
    • 当用户通过 npm install --production 安装项目时,这些依赖项不会被安装
  • 例子:比如eslintwebpack这些只在本地运行需要使用的依赖,在正式上线和打包后并不需要
  • 安装命令: npm i package -Dnpm i package --save-dev

关于语义版本控制

  • 补丁版本:1.0``1.0.x``~1.0.4
  • 次要版本:1``1.x``^1.0.4
  • 主要版本:*``x 在 a.b.c中,a就是主要版本,b为次要版本,c是补丁版本, 常见用法举例:
"dependencies": {
  // 安装准确版本
 "[package]":  '1.2.2'
  // 允许安装次要版本和补丁版本(即 `1.x.x`),但不跨越主要版本。如果在使用npm install安装依赖的时候,package.json中是^1.0.0,但是实际包已经更新到了1.2.3,那么实际下载的包会是1.2.3
 "[package]": "^1.0.0", 
 //允许安装补丁版本(即 `1.2.x`),但不跨越次要版本。
 "[package]": "~2.2.0" 
 //允许安装所有大于或等于 `2.2.0` 的版本。
 "[package]": ">=2.2.0" 
 // 允许安装所有小于 `2.2.0` 的版本。
 "[package]": "<2.2.0" 
 // 允许安装所有大于或等于 `1.2.3` 且小于 `2.0.0` 的版本
 "[package]": ">=1.2.3 <2.0.0" 
 },

关于npm的常见命令

  • npm install package@version或者npm install package 安装指定的包。
  • npm install
    • 如果 package-lock.json 文件不存在,npm i 会根据package.json创建一个 package-lock.json 文件。 - 如果 package-lock.json 文件存在,npm i 会根据 package.json 中的依赖版本范围和现有的 package-lock.json 文件来安装依赖,并在必要时更新 package-lock.json 文件。 - 如果 package.json 中的依赖版本范围发生变化,npm i 会更新 package-lock.json 文件以反映这些变化。
  • npm ci
    • 项目必须存在package-lock.json
    • 只会根据 package-lock.json更新整个项目,不能用来更新单个项目,它并不会更新package-lock.json
    • 如果node_modules已经存在,它会删除node_modules再更新
  • npm uninstall package 删除指定的包
  • npm cache clean 清楚npm缓存
  • npm config get registry 获取当前配置的 npm 注册表地址
  • npm config set registry 修改当前配置的 npm 注册表地址,一般会改成淘宝镜像源:registry.npmmirror.com