Node【二】NPM

news2025/1/19 17:08:38

文章目录

  • 🌟前言
  • 🌟NPM使用
    • 🌟NPM使用场景
    • 🌟NPM的常用命令
    • 🌟NPM命令使用介绍
      • 🌟 使用NPM安装模块
      • 🌟 下载三方包
      • 🌟 全局安装VS本地安装
          • 🌟 本地安装
          • 🌟 全局安装
          • 🌟 全局模块路径查看与路径修改
      • 🌟 卸载模块
      • 🌟 更新模块
      • 🌟 搜索模块
      • 🌟 NPM服务器发布包
  • 🌟NPM换源
    • 🌟 nrm
      • 🌟 全局安装 nrm:
      • 🌟 nrm ls 列出来现在已经配置好的所有的原地址
      • 🌟 nrm use是切换到哪个源上
      • 🌟 nrm add添加源
      • 🌟 nrm del删除源
      • 🌟 nrm test测试源的响应时间,可以作为使用哪个源的参考
      • 🌟 使用淘宝 NPM 镜像
      • 🌟 安装cnpm
        • 🌟安装包
        • 🌟同步模块
        • 🌟其它命令
  • 🌟写在最后

在这里插入图片描述

🌟前言

哈喽小伙伴们,新的专栏 Node已开启;这个专栏里边会收录一些Node的基础知识和项目实战;今天我们开始这个专栏的第二篇文章,带领大家初识一下NPM;让我们一起来看看吧🤘

🌟NPM使用

Node Package Manager 简称NPM,是Node.js的包管理器。Node本身提供了一些基本API模块,但是这些基本模块难以满足开发者需求。Node需要通过使用NPM来管理开发者自我研发的一些模块,并使其能够共用与其他开发者。简单来说,NPM就是Node.js的包管理器。

🌟NPM使用场景

  • 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
  • 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
  • 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

Nodejs已经集成安装了npm,可以通过输入 npm -v来测试是否成功安装。命令如下,出现版本提示表示安装成功:

$ npm -version
2.15.8

升级更新NPM

$ sudo npm install npm -g

🌟NPM的常用命令

序号命令描述
1npm -v显示版本,检查npm 是否正确安装。
2npm install express安装express模块
3npm install -g express全局安装express模块
4npm uninstall express卸载指定的模块
5npm link express把全局目录下的express模块链接到本地的node_modules下
6npm list列出已安装模块
7npm search express搜索指定的NPM包
8npm show express显示模块详情
9npm update升级当前目录下的项目的所有模块
10npm update express升级当前目录下的项目的指定模块
11npm update -g express升级全局安装的express模块
12npm init通过向导的方式生成package.json文件
13npm adduser添加用户 在npm官网注册的账号
14npm publish .可以发布自己制作的包到NPM服务器
15npm unpublish <包名>@<版本号>可以撤销发布自己发布过的某个版本包。

🌟NPM命令使用介绍

🌟 使用NPM安装模块

有一个简单安装任何Node.js模块,语法如下:

$ npm install <Module Name>

例如,下面是安装一个著名的Node.jsweb框架模块的命令叫 express:

$ npm install express

现在,你可以在js文件中使用此模块如下:

var express = require('express');

🌟 下载三方包

NPM建立了一个NodeJS生态圈,NodeJS开发者和用户可以在里边互通有无。

当你需要下载第三方包时,首先要知道有哪些包可用。npmjs.com提供了可以根据包名来搜索的平台,但是如果不知道包名可以百度一下。知道了包名后,就可以使用命令去安装了,例如:Express

npm install express

下载完成之后,express包就放在了工程目录下的node_modules目录中,在代码中只需要通过reuqire('express')的方式去引用,无需指定包路径。
以上命令默认下载最新版本第三方包,如果要下载指定版本,可以在包名后面追加@<version>,例如通过如下命令可以下载0.0.1版本的express。

npm install express@0.0.1

如果使用到的第三方包比较多,在终端下一个包一条命令的安装非常不方便,因此NPM对package.json的字段做了扩展,允许在其中添加三方包依赖。

npm install express --save
{
    "name":"test",
    "main":"./lib/main.js",
    "dependencies":{
        "express":"3.2.1"
    }
}

这样处理后,在工程目录下就可以使用npm install命令批量安装三包了。最重要的是,当以后吧test项目上传到了NPM服务器,别人下载这个包时,NPM会根据包中声明的三方依赖包进行自动下载依赖。这样用户只需要关心要使用的包,不用管其依赖的三方包。

🌟 全局安装VS本地安装

🌟 本地安装

默认情况下,NPM安装指定包默认会安装到本地。本地安装指的是包安装在当前目录中node_modules文件夹中。本地安装的包都可以通过require()方法进行访问。例如我们安装Express模块:

$ npm install express

列出所有本地安装的模块

$ npm ls

本地安装request模块:

npm install request

在实际工作中,安装包时可能需要指定包的版本号,命令格式如下:

npm install <包名>@<版本号>

例如,安装2.44版本的request模块:

npm install request@2.44

也可以使用版本号范围,安装某一版本范围的包版本。比如,安装版本号前缀为2.4的版本的request模块:

npm install request@2.4.x

可以通过以下命令,安装版本号大于2.0的request模块:

npm install request@">2.0"

还可以使用如下命令组合,安装指定范围的版本号的包:

npm install request@">=2.0 <2.5"
🌟 全局安装

全局安装包都存储在系统目录中。我们可以在nodejs的CLI(命令行界面)使用,但是不能直接使用require()方法进行访问。例如安装http-server包:

//全局安装 -g
$ npm install -g http-server
//使用node CLI  
$ http-server
🌟 全局模块路径查看与路径修改

查看部分npm默认设置

npm config ls

查看全部npm默认设置

npm config ls -l

npm包全局安装目录:

  • windows: C:\Users\Administrator\AppData\Roaming\npm
  • MacOSX: /usr/local/lib/node_modules

修改全局模块安装路径

npm config set prefix "D:\install\node\node_global"
npm config set cache"D:\install\node\node_cache"

🌟 卸载模块

使用下面的命令卸载Node.js模块

npm uninstall express

🌟 更新模块

更加package.json并更新

npm update express

🌟 搜索模块

搜索使用NPM包名

npm search express

🌟 NPM服务器发布包

第一次使用NPM发布自己的包需要在npmjs.com注册一个账号

npm adduser                 # 添加用户  在npm官网注册的账号
Username: allcky            # 用户名
Password:                   # 密码
Email: (this IS public) allcky@qq.com
npm publish .               # 可以发布自己制作的包到NPM服务器
npm unpublish <包名>@<版本号> # 可以撤销发布自己发布过的某个版本包。

🌟NPM换源

npm全称Node Package Manager,是node.js的模块依赖管理工具。由于npm的源在国外,所以国内用户使用起来各种不方便。下面整理出了一部分国内优秀的npm镜像资源,国内用户可以选择使用。

🌟 nrm

nrm 是一个管理 npm 源的工具。用过 ruby 和 gem 的同学会比较熟悉,通常我们会把 gem 源切到国内的淘宝镜像,这样在安装和更新一些包的时候比较快。nrm 同理,用来切换官方 npm 源和国内的 npm 源(如: cnpm),当然也可以用来切换官方 npm 源和公司私有 npm 源。

包名网址
nrmhttp://www.cnblogs.com/songqingbo/articles/5611588.html

🌟 全局安装 nrm:

npm i nrm -g

🌟 nrm ls 列出来现在已经配置好的所有的原地址

查看当前 nrm 内置的几个 npm 源的地址:

# nrm ls
结果如下:
  npm ---- https://registry.npmjs.org/
  cnpm --- http://r.cnpmjs.org/
* taobao - https://registry.npm.taobao.org/
  nj ----- https://registry.nodejitsu.com/
  rednpm - http://registry.mirror.cqupt.edu.cn/
  npmMirror  https://skimdb.npmjs.com/registry/
  edunpm - http://registry.enpmjs.org/

🌟 nrm use是切换到哪个源上

nrm use npm

🌟 nrm add添加源

nrm add  <registry> <url> [home]

🌟 nrm del删除源

nrm del <registry>

🌟 nrm test测试源的响应时间,可以作为使用哪个源的参考

nrm test

🌟 使用淘宝 NPM 镜像

淘宝 NPM 镜像是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。

你可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:

🌟 安装cnpm

$ npm install -g cnpm

这样就可以使用 cnpm 命令来安装模块了:

🌟安装包

$ cnpm install [模块名]

🌟同步模块

直接通过 sync 命令马上同步一个模块, 只有 cnpm 命令行才有此功能:

cnpm sync [模块名]

🌟其它命令

支持 npm 除了 publish 之外的所有命令, 如:

$ cnpm info [模块名]

🌟写在最后

更多Node知识以及API请大家持续关注,尽请期待。各位小伙伴让我们 let’s be prepared at all times!

✨原创不易,还希望各位大佬支持一下!
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!

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

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

相关文章

研读Rust圣经解析——Rust learn-5(所有权,强大的String)

研读Rust圣经解析——Rust learn-5&#xff08;所有权,强大的String&#xff09;所有权栈和堆相同点栈堆所有权规则作用域StringString创建String创建空字符串从字符串字面量创建&#xff08;将&str转化为String&#xff09;str特点创建str所有权转移String源码深克隆clone…

Matplotlib基本图形使用折线图-柱状图-散点图-饼图的完整代码含示例

目录 Matplotlib基本折线图的使用 1. 导入matplotlib库 2. 准备数据 3. 绘制折线图 4. 加上标签和标题 5. 自定义样式 6. 完整代码 ​编辑 绘制散点图 导入 matplotlib 库和 numpy 库 准备数据 绘制散点图 ​编辑 绘制饼图 导入 matplotlib 库和 numpy 库 准备数…

JS尺寸相关

文章目录元素偏移量 offset 系列offset 系列常用属性offset 与 style 区别获取鼠标在盒子内的坐标模态框放大镜效果元素client 系列元素client系列属性元素滚动 scroll 系列元素 scroll 系列属性页面被卷去的头部兼容性解决方案监听滚动效果仿淘宝固定侧边栏缓动动画筋斗云案例…

实战打靶集锦-015-djinn3

提示&#xff1a;本文记录了作者一次曲折的打靶提权经历 目录1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 Lighttpd探查4.1.1 浏览器探查4.1.2 EXP搜索4.1.2.1 CVE-2019-110724.1.2.2 CVE-2018-190524.2 Werkzeug探查4.2.1 浏览器探查4.2.2 EXP搜索4.2.2.1 目录遍历4.2.2…

Stable Diffusion Web UI + Anaconda环境 + 本地Windows系统部署

Stable Diffusion Web UI Anaconda环境 本地Windows系统部署 最近的很多AIGC模型层出不穷&#xff0c;Stable Diffusion 模型作为一个开源的热门生成式模型&#xff0c;或许对未来的各行各业都能产生深远的影响&#xff0c;了解这个模型并会使用可能是很多人目前想要学习的&…

车载Mini LED持续升温,各家厂商进展如何?

去年&#xff0c;Mini LED背光技术在车载显示赛道上初露头角&#xff0c;多款搭载 Mini LED 屏幕的汽车陆续发布。随着新能源车渗透率的提高&#xff0c;车载显示成为明确增长的赛道&#xff0c;为Mini LED背光进入车载带来利好。 结合今年各家厂商披露的信息来看&#xff0c…

浮点型数据在内存的存储方式

目录 大体规则 特殊规定 由于浮点型在内存中的存储方式相较于整型的要复杂一些&#xff0c;而且很容易忘掉&#xff0c;所以就将部分知识点整理了一下&#xff0c;写成一篇博客。 大体规则 根据国际标准&#xff08;电气和电子工程协会&#xff09;IEEE 754&#xff0c;任意…

【数据结构】- 初识数据结构之空间复杂度(下)

文章目录前言一、空间复杂度1.1空间复杂度简解1.2常见空间复杂度的计算举例二、常见复杂度的对比总结前言 将喜欢的一切留在身边 这便是努力的意义. 本章是关于初识数据结构之空间复杂度(下) 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、空间复…

真的干不过,00后整顿职场已经给我卷麻了,想离职了...

在程序员职场上&#xff0c;什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事&#xff0c;我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事&#xff0c;可遇不可求&#xff0c;向他学习还来不及呢。 真正让人反感的&#xff0c;是技术平平&#x…

D. Li Hua and Tree(set操作)

Problem - D - Codeforces 李华有一个有n个顶点和n -1条边的树。树的根是顶点1。每个顶点i的重要性为a。将子树的大小表示为该子树中顶点的数量&#xff0c;将重要性表示为该子树中顶点的重要性之和。将非叶顶点的重子结点表示为具有最大子树大小的子结点。如果存在多个重子&am…

安全防御 --- 入侵检测 --- IDS、IPS

入侵检测 1、入侵检测经典理论 系统访问控制要针对三类用户 &#xff08;1&#xff09;合法用户 &#xff08;2&#xff09;伪装 --- 攻破[流程控制]&#xff08;超出了合法用户的行为范围&#xff09; 身份仿冒&#xff08;可能是最早提出不能仅依赖于身份认证&#xff0c;还…

STM32F4+FreeRTOS+LVGL实现嵌入式快速开发(缝合怪)

极速进行项目开发&#xff0c;只需要懂一款芯片架构一个操作系统一个GUI。各种部件程序全靠抄 &#xff0c;成为究极缝合怪。本文用stm32f407FreeRTOSlvgl演示一些demo。 原文链接&#xff1a;STM32F4FreeRTOSLVGL实现快速开发(缝合怪) lvgl官方的音乐播放器demo&#xff1a;…

微信小程序学习笔记

一、Node.js主题 1、npm&#xff1a;node.js包管理工具&#xff0c;有超过60万个JavaScript代码包可供下载 2、Node.js&#xff1a;运行在服务端的JavaScript&#xff0c;基于Chrome JavaScript建立的一个平台&#xff0c;基于Google V8引擎。 3、Nodejs安装教程&#xff1a…

Redis篇之主从复制及哨兵模式

主从复制及哨兵模式 1、概念 主从复制&#xff1a; 是指将一台 Redis 服务器的数据&#xff0c;复制到其他的 Redis 服务器。前者称为主节点&#xff08;Master/Leader&#xff09;,后者称为从节点&#xff08;Slave/Follower&#xff09;&#xff0c; 数据的复制是单向的&a…

毕业设计 基于51单片机的智能水表水流量计流量报警器温度设计

基于STM32的语音IC卡停车管理系统1、快速完成毕设的方法2、项目资料2.1 系统框架2.2 系统功能3、部分电路设计3.1 STC89C52单片机最小系统电路设计3.2 继电器控制电路设计3.3 DS18B20温度检测电路设计3.4 LCD1602液晶显示电路设计4、部分代码展示4.1 LCD1602液晶显示屏引脚初始…

2023年第十四届蓝桥杯 C++ B组参赛经验总结

没错&#xff0c;今年本菜狗又来啦~~ hhh &#xff0c; 文章当时比赛完就写完了&#xff0c; 发的有点晚 比赛成绩 &#xff08;等出来我就写这里&#xff09; 感觉最多省二 估计没省一了555 赛前准备 赛前把蓝桥杯课基本都刷了 &#xff0c; 但是还是感觉有点慌 刷题经验 …

【mysql是怎样运行的】-B+树索引深入理解

文章目录1. 无索引查找方式1.1 在一个页中查找1.2 在多个页中查找2. 索引3. 简易索引方案4. InnoDB 中的索引方案5. **常见索引概念**数据页与记录关系&#xff1a;各个数据页可以组成一个 双向链表&#xff0c;而每个数据页中的记录会按照主键值从小到大的顺序组成一个 单向链…

Linux主机上的用户信息传递(查询用户(w,who,last,lastlog),用户对谈(write,mesg,wall),用户邮箱mail)

文章目录Linux主机上的用户信息传递查询用户&#xff1a;w、who、last、lastlog用户对谈&#xff1a;write、mesg、wall用户邮箱&#xff1a;mail使用案例给自己的QQ邮箱发送一封邮件①获取授权码②使用mailx发送邮件③测试是否可以发送邮件Linux主机上的用户信息传递 想过吗如…

阿里版 ChatGPT 突然上线!

转自:纯洁的微笑 其实早本月初&#xff0c;就传出过不少阿里要推出类ChatGPT的消息。 前几天率先流出的天猫精灵“鸟鸟分鸟”脱口秀版GPT&#xff0c;就是基于大模型的“压缩版”&#xff0c;已经以其惊艳表现吸引了众目光。 如今“原版大菜”上桌&#xff0c;自然一点即着&a…

PHP反序列化魔术方法详细解析及实例公私有属性对比

目录 一、魔术方法利用点分析 <__construct&__destruct> <__toString> <__call> <__get> <__set> <__sleep> <__wakeup> <__isset> <__unset> <__invoke> <总结> 二、对象变量属性及序列化…