深入浅出:npm常用命令详解与实践【保姆级教程】

在这里插入图片描述

大家好,我是CodeQi!

在我刚开始学习前端开发的时候,有一件事情让我特别头疼:管理和安装各种各样的依赖包。

那时候,我还不知道 npm 的存在,手动下载和管理这些库简直是噩梦。

后来,我终于接触到了 npm(Node Package Manager),它不仅帮我解决了依赖管理问题,还让我在开发效率上得到了质的飞跃。

今天,我决定把这些年来积累的 npm 使用经验分享给大家,希望能帮助你们更高效地进行开发。

在这篇【保姆级教程】中,我们将深入浅出地了解 npm 的常用命令,并通过具体的实践案例来加深理解。

准备好了吗?让我们开始吧!

1. 什么是 npm?

npm 全称为 Node Package Manager,是 Node.js 的包管理工具和默认包管理器。它的主要功能包括:

  • 包管理:安装、卸载、更新和查看包。
  • 依赖管理:自动处理包的依赖关系。
  • 脚本运行:通过 npm scripts 运行常见任务。
  • 包发布:将自己的包发布到 npm 仓库。

npm 是每个 Node.js 开发者必备的工具,熟练使用它可以大大提升我们的开发效率。

2. 安装和配置 npm

2.1 安装 Node.js 和 npm

要使用 npm,首先需要安装 Node.js。

可以在 Node.js 官网 下载并安装最新版本的 Node.js。

安装 Node.js 时会自动安装 npm

2.2 检查安装

安装完成后,打开终端(命令行),输入以下命令来检查 Node.js 和 npm 是否安装成功:

node -v
npm -v

如果显示出版本号,说明安装成功。

2.3 配置 npm

npm 提供了一些配置选项,可以通过命令行进行设置。

例如,我们可以设置全局安装包的路径和缓存路径:

npm config set prefix /usr/local
npm config set cache /home/user/.npm-cache

我们还可以通过以下命令查看所有的配置项:

npm config list

3. 基本命令详解

3.1 初始化项目

在开始使用 npm 管理项目之前,我们需要先初始化一个项目。

初始化项目会创建一个 package.json 文件,用于描述项目的基本信息和依赖关系。

npm init

执行该命令后,npm 会提示你输入一些项目信息,例如名称、版本号、描述、入口文件、作者等。

也可以使用 -y 参数跳过所有提示,使用默认值初始化项目:

npm init -y

3.2 安装依赖

安装依赖是 npm 最常用的功能之一。可以使用以下命令安装依赖包:

npm install <package-name>

例如,安装 lodash

npm install lodash

默认情况下,npm 会将包安装到 node_modules 目录,并将依赖信息添加到 package.json 文件中的 dependencies 字段。

开发依赖

如果某个依赖只在开发过程中需要,而不需要在生产环境中使用,可以将其安装为开发依赖:

npm install <package-name> --save-dev

例如,安装 eslint 作为开发依赖:

npm install eslint --save-dev

3.3 卸载依赖

卸载依赖包时,npm 会从 node_modules 目录中删除包,并从 package.json 文件中移除对应的依赖项。

例如,卸载 lodash

npm uninstall lodash

如果你想卸载一个开发依赖,可以使用以下命令:

npm uninstall eslint --save-dev

3.4 更新依赖

随着时间的推移,依赖包会发布新版本。

我们可以使用以下命令来更新依赖包:

npm update <package-name>

例如,更新 lodash

npm update lodash

这种方法只会更新 package.json 文件中指定版本范围内的依赖。

如果你希望更新到最新版本,可以使用 npm install <package-name>@latest 命令:

npm install lodash@latest

3.5 查看依赖

要查看当前项目中安装的所有依赖包,可以使用以下命令:

npm list

这会列出所有依赖包及其版本号。

如果只想查看顶级依赖(不包括子依赖),可以使用 --depth=0 参数:

npm list --depth=0

要查看全局安装的包,可以使用以下命令:

npm list -g --depth=0

4. 高级命令详解

4.1 运行脚本

npm 允许我们在 package.json 文件中定义脚本,并通过 npm run <script-name> 命令运行这些脚本。

例如,在 package.json 文件中添加以下内容:

"scripts": {"start": "node app.js","test": "mocha"
}

然后,我们可以使用以下命令运行这些脚本:

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

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

相关文章

Python深度理解系列之【排序算法——冒泡排序】

读者大大们好呀&#xff01;&#xff01;!☀️☀️☀️ &#x1f440;期待大大的关注哦❗️❗️❗️ &#x1f680;欢迎收看我的主页文章➡️木道寻的主页 文章目录 &#x1f525;前言&#x1f680;冒泡排序python实现算法实现图形化算法展示 ⭐️⭐️⭐️总结 &#x1f525;前…

Apache POI、EasyPoi、EasyExcel

目录 ​编辑 &#xff08;一&#xff09;Apache PoI 使用 &#xff08;二&#xff09;EasyPoi使用 &#xff08;三&#xff09;EasyExcel使用 写 读 最简单的读​ 最简单的读的excel示例​ 最简单的读的对象​ &#xff08;一&#xff09;Apache PoI 使用 &#xff08;二&…

Git 安装

目录 Git 安装 Git 安装 在使用 Git 前我们需要先安装 Git。Git 目前支持 Linux/Unix、Solaris、Mac 和 Windows 平台上运行。Git 各平台安装包下载地址为&#xff1a;http://git-scm.com/downloads 在 Linux 平台上安装&#xff08;包管理工具安装&#xff09; 首先&#xff0…

IIS在Windows上的搭建

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 目录 一 概念&#xff1a; 二网络…

深入理解C++中的锁

目录 1.基本互斥锁&#xff08;std::mutex&#xff09; 2.递归互斥锁&#xff08;std::recursive_mutex&#xff09; 3.带超时机制的互斥锁&#xff08;std::timed_mutex&#xff09; 4.带超时机制的递归互斥锁&#xff08;std::recursive_timed_mutex&#xff09; 5.共享…

【python脚本】批量检测sql延时注入

文章目录 前言批量检测sql延时注入工作原理脚本演示 前言 SQL延时注入是一种在Web应用程序中利用SQL注入漏洞的技术&#xff0c;当传统的基于错误信息或数据回显的注入方法不可行时&#xff0c;例如当Web应用进行了安全配置&#xff0c;不显示任何错误信息或敏感数据时&#x…

【TS】TypeScript 原始数据类型深度解析

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 TypeScript 原始数据类型深度解析一、引言二、基础原始数据类型2.1 boolean2.2 …

苍穹外卖--sky-take-out(四)10-12

苍穹外卖--sky-take-out&#xff08;一&#xff09; 苍穹外卖--sky-take-out&#xff08;一&#xff09;-CSDN博客​编辑https://blog.csdn.net/kussm_/article/details/138614737?spm1001.2014.3001.5501https://blog.csdn.net/kussm_/article/details/138614737?spm1001.2…

Unity动画系统(2)

6.1 动画系统基础2-3_哔哩哔哩_bilibili p316 模型添加Animator组件 动画控制器 AnimatorController AnimatorController 可以通过代码控制动画速度 建立动画间的联系 bool值的设定 trigger p318 trigger点击的时候触发&#xff0c;如喊叫&#xff0c;开枪及换子弹等&#x…

错误 [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试 python ping

报错提示&#xff1a;错误 [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试 用python做了一个批量ping脚本&#xff0c;在windows专业版上没问题&#xff0c;但是到了windows服务器就出现这个报错 解决方法&#xff1a;右键 管理员身份运行 这个脚本 …

sql拉链表

1、定义&#xff1a;维护历史状态以及最新数据的一种表 2、使用场景 1、有一些表的数据量很大&#xff0c;比如一张用户表&#xff0c;大约1亿条记录&#xff0c;50个字段&#xff0c;这种表 2.表中的部分字段会被update更新操作&#xff0c;如用户联系方式&#xff0c;产品的…

在 WebGPU 与 Vulkan 之间做出正确的选择(Making the Right Choice between WebGPU vs Vulkan)

在 WebGPU 与 Vulkan 之间做出正确的选择&#xff08;Making the Right Choice between WebGPU vs Vulkan&#xff09; WebGPU 和 Vulkan 之间的主要区别WebGPU 是什么&#xff1f;它适合谁使用&#xff1f;Vulkan 是什么&#xff1f;它适合谁使用&#xff1f;WebGPU 和 Vulkan…

修改CentOS7 yum源

修改CentOS默认yum源为阿里镜像源 备份系统自带yum源配置文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下载ailiyun的yum源配置文件 CentOS7 yum源如下&#xff1a; wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun…

[OC]萝卜圈Python手动机器人脚本

这是给机器人设置的端口&#xff0c;对照用 代码 # #作者:溥哥’ ##机器人驱动主程序 #请在main中编写您自己的机器人驱动代码 import msvcrt def main():a"none"while True:key_input msvcrt.getch()akey_inputif abw:print(a)robot_drv.set_motors(1,40,2,40,3,…

uniapp学习笔记

uniapp官网地址&#xff1a;https://uniapp.dcloud.net.cn/ 学习源码&#xff1a;https://gitee.com/qingnian8/uniapp-ling_project.git 颜色网址&#xff1a;https://colordrop.io/ uniapp中如何获取导航中的路由信息&#xff1f; onLoad(e){console.log(e)console.log(e.w…

2.2.4 C#中显示控件BDPictureBox 的实现----ROI交互

2.2.4 C#中显示控件BDPictureBox 的实现----ROI交互 1 界面效果 在设定模式下&#xff0c;可以进行ROI 框的拖动&#xff0c;这里以Rect1举例说明 2 增加ROI类定义 /// <summary> /// ROI_single /// 用于描述图片感兴趣区域 /// type: 0:Rect1;1:Rect2;2:Circle ;3:…

工业路由器与家用路由器的区别

在现代网络环境中&#xff0c;路由器扮演着至关重要的角色。无论是在家庭网络还是在工业网络&#xff0c;选择合适的路由器都至关重要。本文将从多个角度&#xff0c;对工业路由器与家用路由器进行详细比较&#xff0c;帮助您更好地理解二者的区别。 1、安全性 工业路由器&…

大模型应用开发实战基础

大模型应用开发实战基础 1. 背景 大模型如日中天&#xff0c;各行各业都受它影响&#xff0c;但是作为程序员&#xff0c;除了让它翻译代码不知道用它干什么&#xff0c;就像是拿着锤子的木匠&#xff0c;找不到钉子在哪。一边听着别人说2024是AI元年&#xff0c;一边又不知所…

中控室监控台在水处理行业的作用

随着工业化和城市化的快速推进&#xff0c;水处理行业的重要性日益凸显。作为确保水质安全、提高水资源利用效率的关键环节&#xff0c;水处理厂需要高效、稳定地运行。在这个过程中&#xff0c;中控室监控台发挥着不可或缺的作用。本文将从以下几个方面&#xff0c;详细阐述中…

fyne的MultiLineEntry设置大小

MultiLineEntry设置大小 在另一篇文章讲过&#xff0c;放入border布局中&#xff0c;可以最大化MultiLineEntry。 这里再介绍另一种方法:SetMinRowsVisible() func (e *Entry) SetMinRowsVisible(count int) {e.multiLineRows counte.Refresh() }SetMinRowsVisible强制mult…