深入了解 npm:Node.js 包管理工具详解

文章目录

    • 一、npm 基本概念
      • 1.1 什么是 npm?
      • 1.2 package.json 文件
    • 二、npm 常用命令
      • 2.1 初始化项目
      • 2.2 安装依赖
        • 2.2.1 安装单个包
        • 2.2.2 全局安装包
        • 2.2.3 安装开发依赖
      • 2.3 移除依赖
      • 2.4 更新依赖
      • 2.5 查看已安装的包
      • 2.6 发布包
    • 三、npm 高级用法
      • 3.1 使用 npm scripts
      • 3.2 使用 npx 运行包
      • 3.3 使用 npm 版本管理
      • 3.4 使用私有 npm 仓库
      • 3.5 使用 npm Hook
    • 四、常见问题与解决方案
      • 4.1 依赖冲突
      • 4.2 npm 缓存问题
      • 4.3 权限问题
    • 五、总结

在这里插入图片描述

🎉欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量


  • ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹
  • ✨博客主页:IT·陈寒的博客
  • 🎈该系列文章专栏:Java学习路线
  • 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习
  • 🍹文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
  • 📜 欢迎大家关注! ❤️

npm(Node Package Manager)是 Node.js 的包管理工具,也是全球最大的 JavaScript 包管理生态系统。它是每个 Node.js 开发者的必备工具,不仅可以用来管理项目中的依赖包,还可以用于发布和管理自己的 JavaScript 库。本文将详细介绍 npm 的基本概念、常用命令以及如何使用 npm 高效地管理项目。
在这里插入图片描述

一、npm 基本概念

1.1 什么是 npm?

npm 是一个包管理工具,主要功能包括:

  • 安装第三方包:从 npm 官方库下载并安装第三方包。
  • 管理依赖包:管理项目中的依赖包,包括添加、删除、更新等操作。
  • 发布自己的包:将自己的库发布到 npm 官方库,供其他开发者使用。

1.2 package.json 文件

package.json 是 npm 项目的核心文件,包含了项目的基本信息、依赖包信息、脚本等内容。一个典型的 package.json 文件如下:

{"name": "my-project","version": "1.0.0","description": "A sample project","main": "index.js","scripts": {"start": "node index.js","test": "echo \"Error: no test specified\" && exit 1"},"author": "Your Name","license": "ISC","dependencies": {"express": "^4.17.1"},"devDependencies": {"nodemon": "^2.0.7"}
}

二、npm 常用命令

2.1 初始化项目

在创建新的 npm 项目时,首先需要生成 package.json 文件。可以使用 npm init 命令:

npm init

这会启动一个交互式的问答过程,帮助你生成 package.json 文件。你也可以使用 -y 参数跳过所有提问,生成默认配置的 package.json 文件:

npm init -y

2.2 安装依赖

2.2.1 安装单个包

使用 npm install 或者 npm i 命令来安装依赖包:

npm install express
2.2.2 全局安装包

有些工具包需要全局安装,可以使用 -g 参数:

npm install -g nodemon
2.2.3 安装开发依赖

开发依赖(devDependencies)是仅在开发环境中需要的包,可以使用 --save-dev-D 参数:

npm install --save-dev jest

2.3 移除依赖

使用 npm uninstall 命令来移除不需要的依赖包:

npm uninstall express

2.4 更新依赖

使用 npm update 命令可以更新项目中的依赖包:

npm update

2.5 查看已安装的包

使用 npm list 命令可以查看当前项目中已安装的所有包:

npm list

2.6 发布包

使用 npm publish 命令可以将自己的包发布到 npm 官方库。首先,需要在项目根目录下创建一个 .npmignore 文件,类似于 .gitignore,用于指定哪些文件不需要被发布。

npm publish

三、npm 高级用法

3.1 使用 npm scripts

npm scripts 可以在 package.json 文件的 scripts 字段中定义一些脚本命令,方便项目开发和管理。常见的脚本命令包括启动项目、运行测试、构建项目等。

"scripts": {"start": "node index.js","test": "jest","build": "webpack --config webpack.config.js"
}

然后,可以使用 npm run 来执行这些脚本:

npm run start
npm run test
npm run build

3.2 使用 npx 运行包

npx 是 npm 版本 5.2.0 以后自带的一个命令,允许开发者在不全局安装包的情况下执行命令。例如:

npx create-react-app my-app

3.3 使用 npm 版本管理

npm 版本管理可以通过 npm outdated 查看过时的依赖包,通过 npm audit 检查并修复已知的安全漏洞:

npm outdated
npm audit
npm audit fix

3.4 使用私有 npm 仓库

在一些企业项目中,可能需要使用私有 npm 仓库。可以通过配置 .npmrc 文件来实现:

registry=https://registry.your-company.com/

3.5 使用 npm Hook

npm 支持在特定生命周期阶段执行自定义命令,这些命令称为 Hook。例如,preinstallpostinstall 是两个常用的 Hook:

"scripts": {"preinstall": "echo Before installation","postinstall": "echo After installation"
}

四、常见问题与解决方案

4.1 依赖冲突

在多包项目中,可能会遇到依赖包版本冲突的问题。可以通过 npm ls 命令查看详细的依赖树,找出冲突的具体包:

npm ls

4.2 npm 缓存问题

有时安装包时会遇到缓存问题,可以通过清理缓存来解决:

npm cache clean --force

4.3 权限问题

在全局安装包时,可能会遇到权限问题。可以通过以下命令解决:

sudo npm install -g <package>

五、总结

npm 是 Node.js 生态系统中不可或缺的一部分。通过本文的介绍,你应该已经掌握了 npm 的基本使用方法和一些高级技巧。无论是管理项目依赖,还是发布自己的包,npm 都提供了丰富的功能来满足开发者的需求。希望本文能够帮助你更加高效地使用 npm,提升项目开发效率。


🧸结尾 ❤️ 感谢您的支持和鼓励! 😊🙏
📜您可能感兴趣的内容:

  • 【Java面试技巧】Java面试八股文 - 掌握面试必备知识(目录篇)
  • 【Java学习路线】2023年完整版Java学习路线图
  • 【AIGC人工智能】Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么
  • 【Java实战项目】SpringBoot+SSM实战:打造高效便捷的企业级Java外卖订购系统
  • 【数据结构学习】从零起步:学习数据结构的完整路径

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/327654.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构之二叉树详解[1]

在前面我们介绍了堆和二叉树的基本概念后&#xff0c;本篇文章将带领大家深入学习链式二叉树。 1.预备知识 2.二叉树结点的创建 3.二叉树的遍历 3.1前序遍历 3.2中序遍历 3.3 后序遍历 4.统计二叉树的结点个数 5.二叉树叶子结点的个数 6.二叉树第k层的结点个数 7.总结 …

589.N叉树的前序遍历

刷算法题&#xff1a; 第一遍&#xff1a;1.看5分钟&#xff0c;没思路看题解 2.通过题解改进自己的解法&#xff0c;并且要写每行的注释以及自己的思路。 3.思考自己做到了题解的哪一步&#xff0c;下次怎么才能做对(总结方法) 4.整理到自己的自媒体平台。 5.再刷重复的类…

高级个人主页

高级个人主页 效果图部分代码领取源码下期更新预报 效果图 部分代码 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" name"viewport" content"widthdevice-width, initial-scale1, maximum-scale1, use…

数据驱动测试在接口测试和网站测试中的应用

什么是数据驱动测试 据驱动测试是一种测试方法&#xff0c;其中测试数据和测试逻辑是分开的&#xff0c;测试数据被存储在外部源中&#xff08;如Excel表格、JSON文件、数据库等&#xff09;&#xff0c;测试逻辑则独立于测试数据。在测试过程中&#xff0c;测试数据被读取并传…

代码随想录算法训练营第五十三天

今天同事说他要离职啦&#xff0c;还挣挺多的&#xff0c;我也慢慢努力吧&#xff01;&#xff01; 儿子似乎有点斜颈&#xff0c;还好不是很大的病&#xff0c;儿子也开始面对人生的苦难啦。都好好加油生活&#xff01; 1143.最长公共子序列 二维可以理解一点。 class Solut…

用面向对象的思想编写实时嵌入式C程序

实时嵌入式系统的软件一般由C语言编写&#xff0c;程序结构基本上都是这样的&#xff1a; // 主程序 int main(void) {init(); // 初始化while(1){tick(); // 业务逻辑}return 0; }// 计时器 static unsigned int g_timer_tick_cnt 0; // 时钟中断回调 void isr_time…

[c++]多态的分析

多态详细解读 多态的概念多态的构成条件 接口继承和实现继承: 多态的原理:动态绑定和静态绑定 多继承中的虚函数表 多态的概念 -通俗的来说&#xff1a;当不同的对象去完成某同一行为时&#xff0c;会产生不同的状态。 多态的构成条件 必须通过基类的指针或者引用调用虚函数1虚…

超级简单的地图操作工具开发可疑应急,地图画点,画线,画区域,获取地图经纬度等

使用echars的地图画点,画线,画区域,获取地图经纬度等 解压密码:10086007 地图也是用临时的bmap.js和china.js纯离线二选一 一共就这么多文件 画点,画线,画区域 点击地图获取经纬度-打印到控制台,这样就能渲染航迹,多变形,结合其他算法算圆等等操作 下载资源:https://download…

Databend 开源周报第 144 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 了解 Databend …

Redis-详解(基础)

文章目录 什么是Redis&#xff1f;用Redis的特点&#xff1f;用Redis可以实现哪些功能&#xff1f;Redis的常用数据类型有哪些?Redis的常用框架有哪些?本篇小结 更多相关内容可查看 什么是Redis&#xff1f; Redis&#xff08;Remote DictionaryServer&#xff09;是一个开源…

【AI学习】对指令微调(instruction tuning)的理解

前面对微调&#xff08;Fine-tuning&#xff09;的学习中&#xff0c;提到指令微调。当时&#xff0c;不清楚何为指令微调&#xff0c;也一直没来得及仔细学习。 什么是指令微调&#xff1f;LLM经过预训练后&#xff0c;通过指令微调提升模型的指令遵循能力。所谓指令&#xf…

uniapp怎么使用jsx

安装vitejs/plugin-vue-jsx npm install vitejs/plugin-vue-jsx -Dvite.config.js配置 import { defineConfig } from "vite"; import uni from "dcloudio/vite-plugin-uni"; import vueJsx from vitejs/plugin-vue-jsxexport default defineConfig({plu…

全方位入门git-慕课网 笔记

目录 【上传github忽略某些文件】【配置用户名和邮箱】【想要删除不需要的文件时如何进行操作】【想要给文件重命名如何操作】【想要移动文件到其他位置时如何操作】【文件有变化时&#xff0c;如何查看前后变化】【操作失误的情况下如何实现一键还原】【不再追踪时如何实现撤销…

区块链 | NFT 水印:Review on Watermarking Techniques(一)

&#x1f34d;原文&#xff1a;Review on Watermarking Techniques Aiming Authentication of Digital Image Artistic Works Minted as NFTs into Blockchains 1 应用于 NFT 的水印技术 常见的水印技术类型可以分为&#xff1a; 可见 v i s i b l e \mathsf{visible} visi…

项目9-网页聊天室1(注册+Bycrpt加密)

1.准备工作 1.1.前端页面展示 1.2 数据库的建立 我们通过注册页面&#xff0c;考虑如何设计用户表数据库。 用户id&#xff0c;userId用户名&#xff0c;唯一&#xff0c;username用户密码&#xff0c;password&#xff08;包括密码和确认密码ensurePssword【数据库没有该字段…

【全开源】酷柚易汛ERP 源码部署/售后更新/上线维护

一款基于FastAdminThinkPHPLayui开发的ERP管理系统&#xff0c;帮助中小企业实现ERP管理规范化&#xff0c;此系统能为你解决五大方面的经营问题&#xff1a;1.采购管理 2.销售管理 3.仓库管理 4.资金管理 5.生产管理&#xff0c;适用于&#xff1a;服装鞋帽、化妆品、机械机电…

openssl 生成证书步骤

本地测试RSA非对称加密功能时&#xff0c;需要用到签名证书。本文记录作者使用openssl本地生成证书的步骤&#xff0c;并没有深入研究openssl&#xff0c;难免会有错误&#xff0c;欢迎指出&#xff01;&#xff01;&#xff01; 生成证书标准流程&#xff1a; 1、生成私钥&am…

jar包安装成Windows服务

一、前言 很多年前写过一篇《使用java service wrapper把windows flume做成服务》的文章&#xff0c;也是把jar包安装成windows服务&#xff0c;今天介绍另外一种更简便的方案。 二、正片 这次使用的工具是 winsw&#xff0c;一个Windows服务包装器。下面看详细介绍 首先从g…

运输层(计算机网络谢希仁第八版)——学习笔记五

课件&#xff1a;课程包列表 (51zhy.cn) 目录 运输层协议概述 用户报协议UDP 传输控制协议TCP概述 可靠传输的工作原理 TCP可靠传输的实现 TCP的流量控制 TCP的拥塞控制 TCP的运输连接管理 运输层协议概述 进程之间的通信 运输层的位置——只有位于网络边缘部分的主机的协议栈才…

Vue3实战笔记(13)—pinia安装笔记

文章目录 前言安装和配置pinia总结 前言 Pinia 是 Vue 的专属状态管理库&#xff0c;它允许你跨组件或页面共享状态。 Pinia是一个轻量级的状态管理库&#xff0c;它专注于提供一个简单的API来管理应用程序的状态。相比之下&#xff0c;Vuex是一个更完整的状态管理库&#xf…