当前位置: 首页 > news >正文

Node.js 包管理利器:npm 核心功能与操作指南

简介

npm(Node Package Manager)是 JavaScript 的包管理工具,主要用于 Node.js 生态系统中依赖项的安装、管理和共享。它是全球最大的软件注册表之一,包含超过 100 万个开源包。

核心功能

  • 依赖管理:通过package.json文件记录项目依赖,支持版本控制和自动安装。
  • 脚本执行:通过scripts字段定义并运行自定义命令(如构建、测试)。
  • 模块发布:开发者可将自己的模块发布到 npm 仓库供他人使用

常用指令

初始化项目,生成package.json文件

npm init

安装依赖

npm install <package-name>

全局安装

npm install -g <package-name>

安装指定版本

npm i <package-name>@版本号

单独安装生产依赖,即dependencies内部依赖

npm i --production

更新依赖

npm update

查看所有依赖

npm list

查看某个包发布了哪些版本

npm view <package-name> versions

查看某个包当前项目使用了哪个版本

npm ls <包名>

查看过期包

npm outdated

清理npm缓存

npm cache clean --force

登录用户

npm adduser (旧) npm login

发布包

npm publish

卸载包

npm unpublish --froce

符号含义

类型版本升级说明
主版本号(Major)1.0.02.0.0存在破坏性更改(Breaking Change)
次版本号(Minor)1.1.01.2.0新增功能,向后兼容
补丁号(Patch)1.1.11.1.2Bug 修复,向后兼容

*:最新版本

^:允许更新 minor 和 patch,锁定 major

例如^2.0.0,允许更新到2.x.x最新版本,不会更新到3.x.x。

~:允许更新 patch,锁定 minor、锁定 major

例如^2.0.0,允许更新到2.0x最新版本,不会更新到2.1.0以上版本。

空:锁定Patch,下载固定版本。

脚本

在package.json的scripts标签里面可以注册指令,可以通过npm run <指令名称>去运行。

{ "name": "mypackage", "version": "0.0.0-SNAPSHOT", "scripts": { "dev": "npm run serve", "buildjsByParallel":"node build1.js & node build2.js", "buildjsBySerial":"node build1.js && node build2.js", }, }

脚本执行顺序管理说明

  • 并行执行(&连接):使用&连接的脚本会同时运行。例如在buildjsByParallel中,build1.jsbuild2.js的执行完成顺序无法确定。
  • 串行执行(&&连接):使用&&连接的脚本会按顺序执行。例如buildjsBySerial会先运行build1.js,待其执行完毕后再运行build2.js

npm常用工具包

cross-env

cross-env是一个简单而强大的npm工具包,它解决了在不同操作系统平台上设置环境变量的一致性问题。

安装步骤

# 作为开发依赖安装 npm install --save-dev cross-env # 或使用yarn yarn add -D cross-env

基本使用方法

{ "scripts": { "build": "cross-env NODE_ENV=production webpack --config build/webpack.config.js", "dev": "cross-env NODE_ENV=development webpack-dev-server" } }

使用详解文档:https://jishuzhan.net/article/1923909146051727362

http://www.cnnetsun.cn/news/2593889.html

相关文章:

  • 从单体到多智能体:实战解析AI Agent架构演进与设计原则
  • AI驱动的一小时全栈开发实战:从零构建智能书摘管理工具
  • 抖音无水印视频下载终极指南:如何免费批量保存高清内容
  • 如何用Zotero Style插件打造高效文献管理体验:3大核心优势与5分钟上手教程
  • 跨平台直播聚合应用架构设计:Dart Simple Live的技术实现深度解析
  • Windows Cleaner深度解析:基于PyQt5的现代化Windows系统优化工具架构揭秘
  • Windows Subsystem for Android 终极配置指南:从零到专业级实战
  • 国家中小学智慧教育平台电子课本下载工具:3分钟快速获取官方教材PDF完整指南
  • 保姆级图解:用Wireshark抓包分析PCI总线读写的完整时序(附实战案例)
  • Windows音频处理层级优化:Equalizer APO驱动级均衡技术解析
  • 构建Audio AI Agent Pipeline:从语音识别到自动化任务执行
  • 过半机制如何避免Zookeeper集群脑裂
  • 6天127美元:我用Claude Opus从零打造俄语AI门户全记录
  • 终极指南:Windows Subsystem for Android 完全配置与优化教程
  • 安装libreoffice
  • 告别WebView黑盒调试!手把手教你用Chrome DevTools调试Android混合开发页面(附Androidx-WebKit实战)
  • 深度解析猫抓浏览器扩展:技术架构与流媒体资源嗅探实践
  • 从 Shadow AI 到企业级工作流治理:技术团队怎么落地
  • 百炼多模态全家桶:图像、语音、视频一站式搞定
  • 融合双子系统时滞的智能汽车纵横向运动多模型智能递阶控制【附程序】
  • Embedding 到底是什么:从词向量到句子向量、相似度与局限性
  • JSON驱动PDF生成:GenUI.sh API如何革新动态报告工作流
  • 终极指南:如何快速逆向Wallpaper Engine资源并提取TEX纹理
  • UVa 294 Divisors
  • Tomato-Novel-Downloader:三步构建你的个人小说图书馆
  • 面向AI智能体的API设计:从人类可读到机器可理解的技术演进
  • Keil MDK中AC6工具链兼容性问题解决方案
  • MCP数据库连接器:2026年四大高潜力赛道与开发实战指南
  • Python循环不会写?for和while实战技巧大公开
  • CefFlashBrowser终极指南:免费Flash浏览器完整使用教程