深入浅出: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"
}

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

npm run start
npm run test

4.2 全局安装

有些工具需要全局安装,这样可以在任何地方使用它们。

例如,安装 nodemon 作为全局工具:

npm install -g nodemon

安装完成后,你可以在终端中直接使用 nodemon 命令。

4.3 缓存管理

npm 会缓存下载的包,以便下次安装时更快。你可以使用以下命令清除缓存:

npm cache clean --force

要查看缓存的内容,可以使用以下命令:

npm cache verify

4.4 配置管理

npm 提供了灵活的配置选项。

你可以使用以下命令查看和设置配置项:

npm config list
npm config set <key> <value>
npm config get <key>
npm config delete <key>

例如,设置 registry

npm config set registry https://registry.npm.taobao.org

4.5 发布包

如果你开发了一个有用的包,可以将它发布到 npm 仓库,与其他开发者分享。

首先,你需要登录 npm:

npm login

然后,在项目根目录下执行以下命令发布包:

npm publish

发布完成后,其他开发者就可以通过 npm install <package-name> 命令安装你的包。

5. 实践案例

让我们通过几个实践案例来加深对 npm 的理解。

5.1 创建一个简单的 Node.js 项目

首先,我们创建一个简单的 Node.js 项目,并使用 npm 管理其依赖。

初始化项目

在项目目录下,执行以下命令初始化项目:

npm init -y

这会生成一个基础的 package.json 文件。

安装依赖

安装 express 作为项目依赖:

npm install express
创建项目文件

在项目根目录下创建一个 app.js 文件,并添加以下内容:

const express = require('express');
const app = express();
const PORT = 3000;app.get('/', (req, res) => {res.send('Hello, world!');
});app.listen(PORT, () => {console.log(`Server is running on http://localhost:${PORT}`);
});
运行项目

package.json 文件中添加一个 start 脚本:

"scripts": {"start": "node app.js"
}

然后,执行以下命令启动服务器:

npm run start

现在,打开浏览器访问 http://localhost:3000,你应该会看到 “Hello, world!” 的信息。

5.2 使用 npm 管理前端项目

npm 不仅可以用于 Node.js 项目,还可以用于管理前端项目的依赖。让我们通过一个简单的前端项目来了解如何使用 npm 管理前端依赖。

初始化项目

在项目目录下,执行以下命令初始化项目:

npm init -y
安装前端依赖

安装 reactreact-dom 作为项目依赖:

npm install react react-dom
创建项目文件

在项目根目录下创建以下文件结构:

/publicindex.html
/srcindex.js
/package.json

public/index.html 文件中添加以下内容:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>React App</title>
</head>
<body><div id="root"></div><script src="../src/index.js"></script>
</body>
</html>

src/index.js 文件中添加以下内容:

import React from 'react';
import ReactDOM from 'react-dom';const App = () => (<div><h1>Hello, React!</h1></div>
);ReactDOM.render(<App />, document.getElementById('root'));
使用 Babel 和 Webpack

为了将 React 代码编译成浏览器可以理解的 JavaScript,我们需要使用 Babel 和 Webpack。首先安装这些工具:

npm install --save-dev @babel/core @babel/preset-env @babel/preset-react babel-loader webpack webpack-cli webpack-dev-server html-webpack-plugin
配置 Babel

在项目根目录下创建一个 .babelrc 文件,并添加以下内容:

{"presets": ["@babel/preset-env", "@babel/preset-react"]
}
配置 Webpack

在项目根目录下创建一个 webpack.config.js 文件,并添加以下内容:

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');module.exports = {entry: './src/index.js',output: {path: path.resolve(__dirname, 'dist'),filename: 'bundle.js'},module: {rules: [{test: /\.js$/,exclude: /node_modules/,use: {loader: 'babel-loader'}}]},plugins: [new HtmlWebpackPlugin({template: './public/index.html',filename: 'index.html'})],devServer: {contentBase: path.resolve(__dirname, 'dist'),compress: true,port: 9000}
};
添加 npm 脚本

package.json 文件中添加以下脚本:

"scripts": {"start": "webpack serve --mode development","build": "webpack --mode production"
}
运行项目

执行以下命令启动开发服务器:

npm run start

现在,打开浏览器访问 http://localhost:9000,你应该会看到 “Hello, React!” 的信息。

5.3 发布自己的 npm 包

发布自己的 npm 包是分享代码的重要方式。让我们通过一个简单的示例来了解如何发布 npm 包。

创建项目

在项目目录下,执行以下命令初始化项目:

npm init -y
创建包文件

在项目根目录下创建一个 index.js 文件,并添加以下内容:

module.exports = function greet(name) {return `Hello, ${name}!`;
};
创建 README 文件

在项目根目录下创建一个 README.md 文件,并添加以下内容:

# My First NPM PackageThis is a simple npm package that greets a user.## Installation```bash
npm install my-first-npm-package

Usage

const greet = require('my-first-npm-package');
console.log(greet('World')); // Outputs: Hello, World!

#### 添加 .gitignore 文件在项目根目录下创建一个 `.gitignore` 文件,忽略 `node_modules` 目录:```plaintext
node_modules/
登录 npm

在发布包之前,需要登录 npm 账户。

如果还没有账户,可以在 npm 官网 注册。然后使用以下命令登录:

npm login
发布包

确保 package.json 文件包含以下字段:

{"name": "my-first-npm-package","version": "1.0.0","description": "A simple npm package that greets a user.","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"keywords": ["greet","example"],"author": "Your Name","license": "ISC"
}

然后,在项目根目录下执行以下命令发布包:

npm publish

发布完成后,其他开发者就可以通过以下命令安装你的包:

npm install my-first-npm-package

6. 常见问题与解决

在使用 npm 的过程中,可能会遇到一些常见问题。

以下是一些常见问题及其解决方法。

6.1 权限问题

在全局安装包时,可能会遇到权限问题。

解决方法是使用 sudo 命令(在 Unix 系统上)或配置 npm 使用用户目录来安装全局包:

npm config set prefix ~/npm-global
export PATH=~/npm-global/bin:$PATH

将以上命令添加到 .bashrc.zshrc 文件中,以便每次启动终端时自动配置路径。

6.2 缓存问题

有时,npm 的缓存可能会导致安装依赖失败。

可以通过清除缓存来解决:

npm cache clean --force
6.3 网络问题

如果遇到网络问题,可以尝试更换 npm 源。

例如,使用淘宝的 npm 镜像:

npm config set registry https://registry.npm.taobao.org
6.4 包版本冲突

在项目中可能会遇到依赖包版本冲突问题。

可以使用 npm ls 命令查看依赖树,找出冲突的包并手动解决。

7. 总结

通过这篇文章,我们深入浅出地探讨了 npm 的常用命令及其实际应用。

从初始化项目、安装和管理依赖,到发布自己的 npm 包,我们系统地了解了 npm 的强大功能。

关键点回顾
  1. 初始化项目:使用 npm init 创建项目的 package.json 文件。
  2. 安装依赖:使用 npm install 安装项目依赖,并区分生产依赖和开发依赖。
  3. 卸载和更新依赖:学习如何使用 npm uninstallnpm update 管理依赖包。
  4. 运行脚本:通过 npm run 执行自定义脚本,提升开发效率。
  5. 发布包:掌握如何创建、打包并发布自己的 npm 包。

希望这篇【保姆级教程】能够帮助你掌握 npm 的基本和高级用法,并在实际开发中得心应手。

如果你有任何问题或需要进一步的帮助,请随时联系我。


祝你编码愉快!Happy coding!

关注我,原创文章第一时间推送, 点赞和收藏就是最大的支持❤️

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

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

相关文章

Java + MySQL 实现存储完整 Json

Java MySQL 实现存储完整 Json 一、应用场景二、数据库配置三、后端代码配置1、实体类2、Service 实现类3、xml 文件 四、测试1、新增接口2、查询接口3、数据表内容 一、应用场景 将前端传过来的 Json 完整存储到 MySQL 中&#xff0c;涉及技术栈为 Java、MyBatis、MySQL。 …

风暴统计案例复现 | 先单后多的影响因素分析

今日要复现的是最最基础的影响因素分析文章&#xff0c;文章包括了①基本情况表、②卡方检验、③多因素logistic回归&#xff0c;复现过程将会详细截图讲解具体步骤&#xff0c;尤其是新手小白&#xff0c;请大家跟上脚步哦&#xff01; 本文为常见的先单后多影响因素分析的文章…

类型“{}”上不存在属性“xxxx”。ts(2339)

解决&#xff1a;类型“{}”上不存在属性“xxxx”和非类型化函数调用不能接受类型参数等问题。 问题发现 今天一个学生&#xff0c;发我一张图&#xff08;如下&#xff09;。 他从远端拉取到本地&#xff08;自家电脑&#xff09;后打开的代码视图&#xff0c;一大堆抛红。问…

Qualcomm QCA206x EasyMesh For Ubuntu

1. 引言 关于EasyMesh概念我们这里就不再过多的赘述&#xff0c;此篇文档的目的是&#xff0c;让广大初学者&#xff0c;有一个很方便的平台进行EasyMesh的学习和测试。 2. X86 Ubuntu平台 2.1 硬件环境准备 备注&#xff1a;QCA206x WiFi module推荐使用移远的FC64E/FC66E。…

我不小心把生产的数据改错了!同事帮我用MySQL的BinLog挽回了罚款

之前在生产做修改数据的时候不小心改错了一行数据&#xff0c;本来以为会被通报批评&#xff0c;但是同事利用binlog日志查看到了之前的旧数据&#xff0c;并且帮我回滚了&#xff0c;学到了&#xff0c;所以写了一篇binlog的文章分享给大家。 MySQL的Binary Log&#xff08;简…

查询 条件列值用notepad++批量添加单引号和逗号

参考&#xff1a;Notepad批量添加引号_notepad字符串统一加引号-CSDN博客 我需要批量修改数据表中某一列值指定的部分列&#xff0c;比如某个编号为CP0408242321001到CP0408242321101的条件。 我从数据表中把这个条件的所有编号复制出来了粘贴到了notepad里面。 如下图所示 从…

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:…

207.贪心算法:最大子数组和(力扣)

代码展示 class Solution { public:int maxSubArray(vector<int>& nums) {int result INT_MIN; // 初始化结果为最小可能的整数int sum 0; // 初始化当前子数组和为0// 遍历数组中的每一个元素for (int i 0; i < nums.size(); i){sum nums[i]; //…

昇思25天学习打卡营第9天|MindSpore-Vision Transformer图像分类

Vision Transformer图像分类 Vision Transformer(ViT)简介 近些年,随着基于自注意(Self-Attention)结构的模型的发展,特别是Transformer模型的提出,极大地促进了自然语言处理模型的发展。由于Transformers的计算效率和可扩展性,它已经能够训练具有超过100B参数的空前…

LinkedList底层原理

LinkedList特有方法 源码分析

使用工业自动化的功能块实现大语言模型应用

大语言模型无所不能&#xff1f; 以chatGPT为代表的大语言模型横空出世&#xff0c;在世界范围内掀起了一场AI革命。给人的感觉似乎大模型语言无所不能。它不仅能够生成文章&#xff0c;图片和视频&#xff0c;能够翻译文章&#xff0c;分析科学和医疗数据&#xff0c;甚至可以…

前端git约定式规范化提交-commitizen

当使用commitizen进行代码提交时&#xff0c;commitizen会提示你在提交代码时填写所必填的提交字段信息内容。 1、全局安装commitizen npm install -g commitizen4.2.4 2、安装并配置 cz-customizeable 插件 2.1 使用 npm 下载 cz-customizeable npm i cz-customizeable6.…

低代码组件扩展方案在复杂业务场景下的设计与实践

组件是爱速搭的前端页面可视化模块的核心能力之一&#xff0c;它将前端研发人员从无休止的页面样式微调和分辨率兼容工作中解放了出来。 目前&#xff0c;爱速搭通过内置的上百种功能组件&#xff08;120&#xff09;&#xff0c;基本可以覆盖大部分中后台页面的可视化设计场景…

软件鉴定测试的工作内容是什么?专业软件鉴定测试报告获取指南

软件鉴定测试是指对软件产品进行全面的检测和评估&#xff0c;以验证其是否符合规定的标准和要求。通过测试&#xff0c;能够发现软件中存在的问题和缺陷&#xff0c;并提供相应的改进建议。在不同的测试阶段&#xff0c;使用不同的测试方法和工具&#xff0c;包括功能测试、性…

数据分析如何在企业中发挥价值

数据分析如何在企业中发挥价值 数据分析的目的是什么为什么怎么做做什么 思考问题流程确认问题拆解问题量化分析 分析数据流程收集数据处理数据制作图表 全流程 数据分析的目的 是什么 通过数据量化企业当前的经营现状或业务事实&#xff0c;将业务细节转换为具体数据&#xf…

爬虫cookie是什么意思

“爬虫 cookie”指的是网络爬虫在访问网站时所使用的cookie&#xff0c;网络爬虫是一种自动化程序&#xff0c;用于在互联网上收集信息并进行索引&#xff0c;这些信息可以用于搜索引擎、数据分析或其他目的。 本教程操作系统&#xff1a;Windows10系统、Dell G3电脑。 “爬虫…

数据库取出来的日期格式是数组格式,序列化日期格式

序列化前&#xff0c;如图所示&#xff1a; 解决方式&#xff0c;序列化日期&#xff08;localdatetime&#xff09;格式 步骤一、添加序列化类 package com.abliner.test.common.configure;import com.alibaba.fastjson.serializer.JSONSerializer; import com.alibaba.fas…

Python编写简单爬虫

文章目录 Python编写简单爬虫安装必要的库编写爬虫代码解析和存储数据注意事项 Python编写简单爬虫 安装必要的库 在开始编写爬虫之前&#xff0c;你需要安装一些必要的库。我们将使用requests库来发送HTTP请求&#xff0c;使用BeautifulSoup库来解析HTML内容。你可以使用以下…

fiddler抓https包

1&#xff0c;安装fiddler省略 2&#xff0c;下载证书步骤&#xff1a;tools-options-https 点击确认&#xff0c;点击OK&#xff0c;点击是 把证书安装到谷歌浏览器上步骤&#xff1a;点击谷歌浏览器右上角的设置&#xff0c;在搜索框中搜索证书&#xff0c;点击“证书管理”…

win10下Python的安装和卸载

前言 之前电脑上安装了python3.9版本&#xff0c;因为工作需要使用3.6版本的Python&#xff0c;需要将3.9版本卸载&#xff0c;重新安装3.6版本。下面就是具体的操作步骤: 1. 卸载 在我的电脑中搜索到3.9版本的安装文件&#xff0c;如下图&#xff1a; 双击该应用程序&#xf…