npm是什么 ?

npm是Node.js生态系统的基石,它不仅让你能够轻松安装和管理软件包(或称为“模块”),还提供了丰富的功能来增强你的开发流程。想象npm如同一个巨大的工具箱,里面装满了各种工具,从基础的螺丝刀到高级的电子测量仪器,应有尽有,只需一句命令就能为你所用。👩‍🔧🚀

安装与配置npm

首先,确保你已经安装了Node.js,因为npm通常随Node.js一同被安装。你可以通过终端或命令提示符输入 node -vnpm -v 来检查它们的版本。💡

如果你打算在中国大陆使用npm,可能遇到访问速度慢的问题,这时可以考虑使用淘宝npm镜像。安装cnpm作为替代方案非常简单:

npm install -g cnpm --registry=https://registry.npm.taobao.org

 这样,你就可以用cnpm代替npm来加速下载过程。🚀

初始化项目

开始新项目前,通过 npm init 创建一个 package.json 文件是惯例。这个文件就像是项目的身份证,记录着项目的基本信息和依赖关系。执行 npm init 后,npm会问你一系列问题,比如项目名称、版本、描述等。如果你想快速初始化,可以加上 -y 参数跳过提问,直接生成默认配置:

 npm init -y

 生成的 package.json 可能看起来像这样:

{"name": "my-awesome-project","version": "1.0.0","description": "An awesome project","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"author": "Your Name","license": "ISC"
}

安装和管理依赖

局部安装

当你需要在项目中使用某个库时,比如Express框架,只需运行:

npm install express

这会在 node_modules 目录下安装Express,并在 package.jsondependencies 字段自动添加Express的条目,记录版本信息。👍

全局安装

某些工具或命令行程序,如Webpack构建工具,更适合全局安装:

 npm install -g webpack

全局安装的包会放在系统路径中,使得在任何地方都能直接调用。🔧

版本控制

npm遵循语义化版本控制(Semantic Versioning, SemVer),这意味着当你指定依赖时,可以使用符号 ^~ 来控制更新策略:

  • ^: 允许安装最新次要版本和补丁版本,如 ^1.2.3 可接受 1.2.x 和 1.3.x,但不包括 1.4.0
  • ~: 仅允许安装最新补丁版本,如 ~1.2.3 接受 1.2.x,但不包括 1.3.0

npm脚本

package.json 中的 scripts 字段允许你定义自定义命令,极大提升了开发效率。例如:

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

这样,你就可以通过 npm run start 来启动服务器,npm run build 来打包项目,或者 npm test 运行测试。🎯

更新与卸载

  • 更新依赖:当有新版本可用时,使用 npm update <package> 更新单个包,或者 npm update 更新所有包(遵循 package.json 的版本规则)。
  • 卸载依赖:移除不再需要的包很简单,npm uninstall <package> 即可,记得也要从 package.json 中手动移除相关条目。

一些高级技巧

  • npm audit:检查项目依赖是否存在已知的安全漏洞,并提供修复建议。
  • npm ci:相比 npm install,这是一个更快的安装方式,适用于持续集成/持续部署(CI/CD)环境,因为它不重新解析 package-lock.json 文件,直接安装锁定的版本。
  • npm shrinkwrap(或使用 package-lock.json):确保团队成员和生产环境中安装的是相同版本的依赖,避免“依赖地狱”。

示例:创建一个简单的Web服务器

让我们通过一个实际的例子来结束这次讲解。假设我们要创建一个使用Express的简单Web服务器。

  1. 初始化项目:

npm init -y

 2、安装Express:

npm install express

 3、创建服务器: 在项目中创建一个名为 server.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 at http://localhost:${port}`);
});

4、运行服务器: 添加一个npm脚本并运行:

// package.json
"scripts": {"start": "node server.js"
}

然后运行:

npm run start

 访问 http://localhost:3000,你应该能看到 "Hello, World!" 的消息。🎉

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

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

相关文章

Delphi编程之旅:从零开始到实战精通

Delphi编程之旅&#xff1a;从零开始到实战精通 Delphi基础&#xff1a;启动你的编程引擎安装与环境搭建第一个程序&#xff1a;“Hello, Delphi!” Pascal语言精要基本语法面向对象编程 实战案例&#xff1a;构建一个简易记事本应用UI设计功能实现保存与加载文本 安全性与性能…

【网络与并发编程】

网络与并发编程 1. 网络编程1.1 网络基础知识1.1.1 什么是网络1.2.3 网络功能1.2.3 网络分类1.2.4 网络性能衡量指标1.2.5 网络编程中的几个关键概念1.2.6 网络通信要解决的问题1.2.7 网络通信协议1.1.8 网络通信标准1.1.9 通信地址 1.2 UDP 传输方法1.2.1 套接字简介1.2.2 UDP…

MyBatis系统学习篇 - MyBatis的缓存

MyBatis的缓存实现原理主要基于三级缓存机制&#xff0c;包括一级缓存&#xff08;本地缓存&#xff09;、二级缓存&#xff08;全局缓存&#xff09;和三级缓存&#xff08;跨会话缓存&#xff09;。这个缓存在我们实际开发中可以避免我们查询重复的数据&#xff0c;在一定程度…

rust 学习--所有权

所有权是rust的核心功能。 Rust 是通过所有权来管理内存回收的 栈&#xff08;Stack&#xff09; 栈是后进先出的 栈中存储的数据在编译时是固定内存大小的数据 数据移除栈叫出栈&#xff0c;数据存入栈叫入栈 入栈要比在堆上分配内存块&#xff0c;入栈时分配器无需为存储…

【全开源】智能名片系统源码(Fastadmin+ThinkPHP和Uniapp)

数字时代的新名片&#xff0c;连接未来的桥梁 引言 在数字化浪潮的推动下&#xff0c;传统名片已经逐渐淡出人们的视线。取而代之的是智能名片系统&#xff0c;它以其高效、便捷和智能化的特点&#xff0c;成为了商务交流的新宠。而智能名片系统源码&#xff0c;作为其核心驱…

Spring Cloud应用框架

一、引言 随着微服务架构的兴起&#xff0c;如何有效地管理和协调微服务之间的通信、配置、服务发现、熔断等成为了关键问题。Spring Cloud作为一套微服务解决方案&#xff0c;提供了丰富的组件和功能&#xff0c;帮助开发者快速构建和部署微服务应用。本文将详细介绍Spring C…

SAP销售手工发票录入

销售手工发票录入用于处理未启用 SD 模块标准处理流程的零星销售业务。 科目设置 收入类科目&#xff1a;设置税务类型&#xff0c;允许含税/不含税过账应收账款: 留空。其他应收款的设置类似 编辑选项设置 在中国&#xff0c;编辑选项一般设置为基于总额计税。使用事务码 FB…

2024 Etsy替代品:推荐探索手工艺品销售的其他平台

在寻找一个适合销售手工艺品的平台时&#xff0c;Etsy可能是许多人首先想到的选择。然而&#xff0c;除了Etsy之外&#xff0c;还有许多其他平台可以帮助手工艺品制作者推广和销售他们的作品。在本篇文章中&#xff0c;我们将探索一些Etsy的替代品&#xff0c;为您提供更多销售…

操作系统课程实验3-可变分区存储管理

操作系统课程实验3-可变分区存储管理 一、实验介绍 1.1 实验目的 加深对可变分区存储管理的理解&#xff1b;提高用C语言编制大型系统程序的能力&#xff0c;特别是掌握C语言编程的难点&#xff1a;指针和指针作为函数参数&#xff1b;掌握用指针实现链表和在链表上的基本操作…

React Native 之 图片使用(六)

静态图片资源 React Native项目中&#xff0c;图片文件的查找会和 JS 模块的查找方式一样。它提供了一个统一的方式来管理 iOS 和 Android 应用中的图片。要往 App 中添加一个静态图片&#xff0c;只需把图片文件放在代码文件夹中某处&#xff0c;然后像下面这样去引用它&…

如何设计足够可靠的分布式缓存体系,以满足大中型移动互联网系统的需要?no.31

传统 CAP 的突破 随着分布式系统的不断演进&#xff0c;会不断遇到各种问题&#xff0c;特别是当前&#xff0c;在大中型互联网系统的演进中&#xff0c;私有云、公有云并行发展且相互融合&#xff0c;互联网系统的部署早已突破单个区域&#xff0c;系统拓扑走向全国乃至全球的…

新书推荐:6.2 else if语句

本节必须掌握的知识点&#xff1a; 示例代码二十 代码分析 汇编解析 ■if语句表达形式3 if(表达式1) statement1 else if(表达式2) statement2 else if(表达式3) statement3 …… else statementN 解析&#xff1a; 如果表达式1非0&#xff0c;则执行statement1&#…

记录github小程序短视频系统的搭建过程

GitHub - lkmc2/AwesomeVideoWxApp: 《倾心短视频》微信小程序 这个项目按readme中的来可以部署成功&#xff0c;但是会发现图片、视频全是空的&#xff0c;如下图&#xff1a; 修改源代码&#xff0c;更换图片上传与保存地址 大概涉及到这些代码块&#xff0c;进行更改即可。…

什么样的数据摆渡设备,可以满足不同网间数据的安全传输需求?

数据摆渡设备是用来在不同的网络环境间安全地传输数据的硬件或软件解决方案。它们通常用于确保在具有不同安全级别的网络&#xff08;如内网和外网&#xff09;之间进行数据交换时的安全性和合规性。以下是一些常见的数据摆渡设备和方法&#xff1a; 移动介质拷贝&#xff1a;使…

生产制造边角料核算说明及ODOO演示

今天群里有伙伴提到边角料的处理问题&#xff0c;我们梳理了一下&#xff0c;在生产过程中&#xff0c;如果产生了边角料&#xff0c;核算产成品的投料成本时需要考虑边角料的价值&#xff0c;以确保成本核算的准确性。以下是注意的几点&#xff1a; 一、边角料的入账价值 在生…

OSPF路由聚合

原理概述 与RIP不同&#xff0c;OSPF不支持自动路由聚合&#xff0c;仅支持手动路由聚合。OSPF的路由聚合有两种机制&#xff1a;区域间路由聚合和外部路由聚合。区域间路由聚合必须配置在ABR路由器上&#xff0c;指的是ABR在把与自己直接相连区域&#xff08;Area&#xff09…

K8s 二进制部署---下篇(多master节点 负载均衡 高可用)

一 master02 节点部署 master01192.168.11.5kube-apiserver&#xff0c;kube-controller-manager&#xff0c;kube-scheduler&#xff0c;etcdmaster02192.168.11.12kube-apiserver&#xff0c;kube-controller-manager&#xff0c;kube-scheduler&#xff0c;etcdnode01192.1…

RHEL7及之后系统 系统服务脚本(Rocky 9.4)

目录 源码安装 准备工作 步骤1: 下载软件 步骤2: 安装apr 步骤3: 安装apr-util 步骤4: 安装Apache HTTP Server 总结步骤 后续步骤 源码安装 准备环境&#xff1a;首先&#xff0c;确保你的系统中安装了必要的编译工具和依赖库。对于C/C程序&#xff0c;这通常包括编译器&#…

网络流量监控与流量回溯分析:全面指南

目录 什么是网络流量监控&#xff1f; 网络流量监控的主要功能 什么是流量回溯分析&#xff1f; 流量回溯分析的优势 网络流量监控与流量回溯分析的结合 如何实现有效的网络流量监控与回溯分析&#xff1f; 网络流量监控与流量回溯分析的应用场景 企业网络 数据中心 …

PEI转染试剂残留检测

转染试剂是瞬时转染生产病毒载体的主要原材料之一。聚乙烯亚胺&#xff08;Polyethylenimine, PEI&#xff09;以其适用性广泛、成本低廉、操作简便、细胞毒性低、可以在多种哺乳动物细胞中达到较高的转染效率&#xff0c;适用于无血清悬浮转染环境&#xff0c;包装容量不受限制…