npm命令介绍(Node Package Manager)(Node包管理器)

文章目录

npm命令全解析

简介

npm (Node Package Manager) 是JavaScript运行时环境Node.js的默认包管理工具,为开发者提供了一种高效管理项目依赖的方式。作为世界上最大的软件注册表,npm包含了超过100万个开源包,极大地促进了JavaScript生态系统的繁荣发展。

基础命令

安装npm(npm -v检插版本)

npm随Node.js一起安装,可通过以下命令检查版本:

npm -v

在这里插入图片描述

初始化项目(npm init)

创建新项目时,首先需要初始化package.json文件:

npm init
# 或使用默认值快速创建
npm init -y

安装依赖包(npm install xxx、npm i xxx)

# 安装包并保存到dependencies
npm install lodash
# 简写形式
npm i lodash

# 安装指定版本
npm install lodash@4.17.21

# 安装开发依赖
npm install webpack --save-dev
# 或简写
npm i webpack -D

关于开发依赖,参考文章:npm开发依赖(仅在开发阶段需要,生产环境不需要的包)(npm install xxx --save-dev、npm i xxx -D、npm install --production)

卸载依赖包(npm uninstall xxx 或 npm uni xxx、npm remove xxx)

# 卸载包并从dependencies中移除
npm uninstall lodash
# 简写形式
npm rm lodash
# 或
npm remove lodash

# 卸载开发依赖
npm uninstall webpack --save-dev
# 或简写
npm rm webpack -D

列出已安装的包(npm list)

# 列出所有已安装的包
npm list

# 只显示顶层依赖
npm list --depth=0

# 查看特定包
npm list lodash

依赖管理精解

依赖类型区分(生产环境依赖dependencies、开发环境依赖devDependencies、宿主环境依赖peerDependencies、可选依赖optionalDependencies)

{
  "dependencies": {
    "react": "^17.0.2"    // 生产环境依赖
  },
  "devDependencies": {
    "webpack": "^5.52.0"  // 开发环境依赖
  },
  "peerDependencies": {
    "react": ">=16.8.0"   // 宿主环境依赖
  },
  "optionalDependencies": {
    "fsevents": "^2.3.2"  // 可选依赖,安装失败不会导致npm install失败
  }
}

版本控制策略

"lodash": "^4.17.21"  // ^表示兼容补丁和小版本更新
"express": "~4.17.1"  // ~表示兼容补丁版本更新
"moment": "4.17.1"    // 精确版本
"webpack": ">=5.0.0"  // 大于等于指定版本

依赖更新

检查过时的包(npm outdated)
npm outdated
更新特定包(npm update lodash)
npm update lodash
更新所有包(npm update)
npm update

脚本与自动化

自定义脚本

package.json中定义常用操作:

{
  "scripts": {
    "start": "node server.js",            // 启动应用
    "dev": "nodemon server.js",           // 开发模式
    "build": "webpack --mode production", // 构建生产版本
    "test": "jest",                       // 运行测试
    "lint": "eslint ."                    // 代码检查
  }
}

运行脚本:

npm run dev
# start、test、stop、restart可以省略run
npm test

钩子脚本(prebuild、postbuild编译前后打印)

{
  "scripts": {
    "prebuild": "echo '构建前执行'",  // build前自动执行
    "build": "webpack",
    "postbuild": "echo '构建后执行'"  // build后自动执行
  }
}

发布与共享

创建可发布包

注册npm账号(npm adduser)
发布包(npm publish)
发布特定标签版本(npm publish --tag beta

包版本管理

补丁版本号+1 (1.0.0 -> 1.0.1)(npm version patch)
次版本号+1 (1.0.0 -> 1.1.0)(npm version minor)
主版本号+1 (1.0.0 -> 2.0.0)(npm version major)

高级技巧

npm缓存操作

清除缓存(npm cache clean --force
验证缓存(npm cache verify)

包信息查询

查看包信息(npm info lodash)
npm info lodash
# 查看特定版本信息
npm info lodash versions
搜索包(npm search keyword)
npm search react-component

安全审计

检查安全漏洞(npm audit)
自动修复问题(npm audit fix)
仅修复开发依赖(npm audit fix --only=dev

私有注册表配置

设置私有注册表(npm config set registry https://registry.company.com/)
恢复默认注册表(npm config set registry https://registry.npmjs.org/)

全局包管理

全局安装包(npm install -g package)
# 全局安装包
npm install -g typescript
# 或简写
npm i -g typescript
全局卸载包(npm uninstall -g package)
npm uninstall -g typescript
查看全局安装位置(npm root -g)
npm root -g

高效工作流

交互式更新依赖

交互式选择更新的依赖(npx npm-check -u

并行运行脚本(npm-run-all)

使用npm-run-all包简化多脚本运行:

{
  "scripts": {
    "lint:js": "eslint .",                      // JS代码检查
    "lint:css": "stylelint '**/*.css'",         // CSS代码检查
    "lint": "npm-run-all --parallel lint:*",    // 并行运行所有lint脚本
    "dev:server": "nodemon server.js",          // 后端开发服务
    "dev:client": "webpack serve",              // 前端开发服务
    "dev": "npm-run-all --parallel dev:*"       // 并行运行所有dev脚本
  }
}

依赖可视化

安装依赖可视化工具(npm install -g npmgraph
生成依赖图(npmgraph <package-name>

本地包开发与链接(npm link)

定义

npm link 是用于本地包开发和测试的强大工具,主要解决以下问题:

  1. 开发阶段测试:当你开发自己的 npm 包时,可以通过 npm link 在不发布到 npm 仓库的情况下,在其他项目中测试这个包

  2. 工作原理

    • 在包目录执行 npm link 会在全局 node_modules 创建一个符号链接
    • 在使用该包的项目中执行 npm link package-name 创建指向全局链接的本地链接
  3. 实际使用场景

    • 同时开发多个相互依赖的包
    • 修改第三方库并在本地测试
    • 团队协作时共享尚未发布的包
  4. 优势:对本地包的任何修改都会立即反映在使用它的项目中,无需重新安装,大大提高了开发效率

解除链接可以使用 npm unlink package-namenpm uninstall package-name 命令。

命令

# 在本地包目录中执行,创建全局链接
npm link

# 在需要使用本地包的项目中执行
npm link package-name

最佳实践

锁定依赖版本

生成或更新package-lock.json(npm ci)
package-lock.json示例
{
  "name": "project-name",
  "lockfileVersion": 2,
  "requires": true,
  "packages": {
    "node_modules/lodash": {
      "version": "4.17.21",
      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
    }
  }
}

精简安装策略

仅安装生产依赖(npm install --production
使用ci命令精确还原依赖(npm ci)

环境检查与诊断(npm doctor)

npm doctor

通过本文全面掌握npm命令,能够显著提升JavaScript项目开发效率和质量。从基础命令到高级技巧,npm为现代JavaScript开发提供了强大而灵活的工具链支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dontla

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值