深入浅出: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.mfbz.cn/a/767260.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决Visual Studio 一直弹出管理员身份运行问题(win10/11解决办法)

不知道大家是否有遇到这个问题 解决办法也很简单 找到启动文件 如果是快捷方式就继续打开文件位置 找到这个程序启动项 右键 选择 兼容性疑难解答&#xff08;win11 则需要 按住 shift 右键&#xff09; win10 解决办法 这样操作完后就可以了 win11解决办法按以下选择就行

深入理解策略梯度算法

策略梯度&#xff08;Policy Gradient&#xff09;算法是强化学习中的一种重要方法&#xff0c;通过优化策略以获得最大回报。本文将详细介绍策略梯度算法的基本原理&#xff0c;推导其数学公式&#xff0c;并提供具体的例子来指导其实现。 策略梯度算法的基本概念 在强化学习…

AI大模型时代来临:企业如何抢占先机?

AI大模型时代来临:企业如何抢占先机? 2023年,被誉为大模型元年,AI大模型的发展如同一股不可阻挡的潮流,正迅速改变着我们的工作和生活方式。从金融到医疗,从教育到制造业,AI大模型正以其强大的生成能力和智能分析,重塑着行业的未来。 智能化:企业核心能力的转变 企…

【CUDA】 归约 Reduction

Reduction Reduction算法从一组数值中产生单个数值。这个单个数值可以是所有元素中的总和、最大值、最小值等。 图1展示了一个求和Reduction的例子。 图1 线程层次结构 在Reduction算法中&#xff0c;线程的常见组织方式是为每个元素使用一个线程。下面将展示利用许多不同方…

AI-算力集群通往AGI

背景&#xff1a; 自GPT-4发布以来&#xff0c;全球AI能力的发展势头有放缓的迹象。 但这并不意味着Scaling Law失效&#xff0c;也不是因为训练数据不够&#xff0c;而是结结实实的遇到了算力瓶颈。 具体来说&#xff0c;GPT-4的训练算力约2e25 FLOP&#xff0c;近期发布的几个…

双曲方程初值问题的差分逼近(迎风格式)

稳定性: 数值例子 例一 例二 代码 % function chap4_hyperbolic_1st0rder_1D % test the upwind scheme for 1D hyperbolic equation % u_t + a*u_x = 0,0<x<L,O<t<T, % u(x,0) = |x-1|,0<X<L, % u(0,t) = 1% foundate = 2015-4-22’; % chgedate = 202…

刷代码随想录有感(124):动态规划——最长公共子序列

题干&#xff1a; 代码&#xff1a; class Solution { public:int findLength(vector<int>& nums1, vector<int>& nums2) {vector<vector<int>>dp(nums1.size() 1, vector<int>(nums2.size() 1, 0));int res 0;for(int i 1; i <…

买华为智驾,晚了肯定要后悔

文 | AUTO芯球 作者 | 雷慢 晚了就来不及了&#xff01; 你买华为系的车&#xff0c;薅羊毛真的要趁早。 华为ADS2.0高阶智驾正在慢慢恢复原价&#xff0c; 你看啊&#xff0c;就在昨天&#xff0c;华为宣布ADS智驾优惠后价格调到3万元&#xff0c; 只有6000元的优惠了。…

153. 寻找旋转排序数组中的最小值(中等)

153. 寻找旋转排序数组中的最小值 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转&#xff1a;153. 寻找旋转排序数组中的最小值 2.详细题解 如果不考虑 O ( l o g n ) O(log n) O(logn)的时间复杂度&#xff0c;直接 O ( n ) O(n) O(n)时间复杂…

从百数教学看产品设计:掌握显隐规则,打造极致用户体验

字段显隐规则允许通过一个控件&#xff08;如复选框、单选按钮或下拉菜单&#xff09;来控制其他控件&#xff08;如文本框、日期选择器等&#xff09;和标签页&#xff08;如表单的不同部分&#xff09;的显示或隐藏。 这种规则通常基于用户的选择或满足特定条件来触发&#…

vue3实现echarts——小demo

版本&#xff1a; 效果&#xff1a; 代码&#xff1a; <template><div class"middle-box"><div class"box-title">检验排名TOP10</div><div class"box-echart" id"chart1" :loading"loading1"&…

【Portswigger 学院】路径遍历

路径遍历&#xff08;Path traversal&#xff09;又称目录遍历&#xff08;Directory traversal&#xff09;&#xff0c;允许攻击者通过应用程序读取或写入服务器上的任意文件&#xff0c;例如读取应用程序源代码和数据、凭证和操作系统文件&#xff0c;或写入应用程序所访问或…

API Object设计模式

API测试面临的问题 API测试由于编写简单&#xff0c;以及较高的稳定性&#xff0c;许多公司都以不同工具和框架维护API自动化测试。我们基于seldom框架也积累了几千条自动化用例。 •简单的用例 import seldomclass TestRequest(seldom.TestCase):def test_post_method(self…

GDB 远程调试简介

文章目录 1. 前言2. GDB 远程调试2.1 准备工作2.1.1 准备 客户端 gdb 程序2.1.2 准备 服务端 gdbserver2.1.3 准备 被调试程序 2.2 调试2.2.1 通过网络远程调试2.2.1.1 通过 gdbserver 直接启动程序调试2.2.1.2 通过 gdbserver 挂接到已运行程序调试 2.2.2 通过串口远程调试2.2…

紫鸟浏览器搭配IPXProxy代理IP的高效使用指南

​紫鸟指纹浏览器一款专门为跨境电商而生的防关联浏览器&#xff0c;能够帮助跨境电商卖家解决多店铺管理问题。紫鸟指纹浏览器为跨境电商卖家提供稳定的登录环境&#xff0c;并且搭配IP代理&#xff0c;能够解决浏览器指纹记录问题&#xff0c;提高操作的安全性。那如何利用紫…

广州AI绘图模型训练外包定制公司

&#x1f680;设计公司如何借助AI人工智能降本增效&#xff0c;广州这家AI公司值得借鉴— 触站AI&#xff0c;智能图像的创新引擎 &#x1f31f; &#x1f3a8; 触站AI&#xff0c;绘制设计界的未来蓝图 &#x1f3a8;在AI技术的浪潮中&#xff0c;触站AI以其前沿的AI图像技术…

RK3568驱动指南|第十六篇 SPI-第188章 mcp2515驱动编写:复位函数

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

Redux 使用及基本原理

什么是Redux Redux 是用于js应用的状态管理库&#xff0c;通常和React一起用。帮助开发者管理应用中各个组件之间的状态&#xff0c;使得状态的变化变得更加可预测和易于调试。 Redu也可以不和React组合使用。&#xff08;通常一起使用&#xff09; Redux 三大原则 单一数据源…

在uni-app使用vue3使用vuex

在uni-app使用vue3使用vuex 1.在项目目录中新建一个store目录&#xff0c;并且新建一个index.js文件 import { createStore } from vuex;export default createStore({//数据&#xff0c;相当于datastate: {count:1,list: [{name: 测试1, value: test1},{name: 测试2, value: …

从hugging face 下模型

支持国内下载hugging face 的东西 下模型权重 model_id 是红色圈复制的 代码 记得设置下载的存储位置 import os from pathlib import Path from huggingface_hub import hf_hub_download from huggingface_hub import snapshot_downloadmodel_id"llava-hf/llava-v1…