【Node.js】笔记整理 3 -npm

写在最前:跟着视频学习只是为了在新手期快速入门。想要学习全面、进阶的知识,需要格外注重实战和官方技术文档,文档建议作为手册使用

系列文章

  • 【Node.js】笔记整理 1 - 基础知识
  • 【Node.js】笔记整理 2 - 常用模块
  • 【Node.js】笔记整理 3 - npm

本文目录

  • 系列文章
    • 1、npm包相关命令
    • 2、require引入npm模块
    • 3、环境变量path
    • 4、npm配置命令别名
    • 5、镜像源
      • 5.1、安装镜像源
      • 5.2、配置镜像源
    • 6、yarn 包管理工具
    • 7、包管理工具的选择、判定
    • 8、npm包的发布、更新、删除
      • 8.1 制作并发布包
      • 8.2、 更新包
      • 8.3、删除包
    • 9、其他语言或者OS的包管理工具

node提供的包管理工具是npm —— Node Package Manager,不过yarn最稳定

使用命令npm init -y可以快速创建package.json文件

1、npm包相关命令

搜索npm包的网址:www.npmjs.com,需要魔法上网

npm命令(以下 i 都是 install 的简写)功能
npm install <包名>npm i <包名>下载对应包,默认下载最新版本
npm uninstall <包名>npm r <包名>npm remove <包名>卸载包
npm i -S <包名>npm i --save <包名>(默认)安装在生产环境下,包信息存储在package.jsondependencies属性下
npm i -D <包名>npm i --save-dev <包名>安装在开发环境下,包信息存储在package.jsondevDependencies属性下
npm i -g nodemon使用 -g 进行全局安装,这将会让你在命令行任何位置都能够使用这个包
npm root -g查看全局安装包的位置,注意全局安装包不是安装在你项目里的
**npm i **、npm install根据package.jsonpackage-lock.json安装该项目所需的所有依赖
npm i <包名>@x.xx.xx安装指定版本的包
npm uninstall <包名>@x.xx.xx卸载指定版本的包
**npm r -g <包名> **、npm remove -g <包名>全局卸载包
npm init初始化
npm run <别名>运行别名

2、require引入npm模块

  • 先npm install <包名>安装npm包
  • const xxx = require('包名')引入,注意:这种安装方式,会从node_modules开始一直向上查找指定包直到所在盘根目录
  • 使用

依赖:A包中安装了B包,那么B包就是A包的一个依赖包,称作A依赖B

  • 开发依赖:只在开发阶段使用的依赖包
  • 生产依赖:在开发阶段和最终上线运行都会使用的依赖包

3、环境变量path

将文件路径复制到我的电脑 --> 属性 --> 高级系统设置 --> 环境变量 --> 用户变量 --> PATH中,就可以在命令行任意位置使用该命令。这是因为配置到环境变量PATH中后,使用命令时就会去环境变量中查找路径

4、npm配置命令别名

package.json文件中的"script配置项下",按照这种语法配置别名:"别名": " 指令 "

比如:

{
	"script": {
        "serve": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
    }
}

其实有些包在安装时候或者项目初始化时候,一些别名就已经配置好了

在这里插入图片描述

5、镜像源

因为npm包放在外网服务器,有些时候下载可能会比较慢甚至中断下载报警,所以为了提高下载速度,有些时候需要用到国内一些公司部署的镜像源、比如淘宝源

5.1、安装镜像源

安装淘宝源:

npm install -g cnpm --registry=http://registry.npmmirror.com

指令其实就是把npm换成cnpm就行,其他镜像源的安装参照这个就行

5.2、配置镜像源

1、直接配置:

npm config set registry http://registry.npmmirror.com

2、使用nrm配置npm的镜像地址

  • 安装nrm

    npm i -g nrm
    
  • 修改镜像

    nrm use taobao
    
  • 检测是否配置成功

    npm config list
    
  • 查看配置的镜像源

    # 方法一:只有地址
    npm config get registry
    
    # 方法二:名字+地址
    nrm ls
    

6、yarn 包管理工具

yarn是Facebook(现mate)推出的JavaScript包管理工具

它的优点:

  • 速度更快:缓存每个下载过的包、并行下载、更大的资源利用率
  • 更安全:执行代码前,yarn会通过算法检验每个安装包的完整性
  • 更可靠:使用了详细、简洁的锁文件格式和明确的安装算法

安装

npm i -g yarn

启动项目时候,npm需要npm run dev,yarn只需要yarn dev

功能指令
初始化yarn inityarn init -y
安装yarn add <包名>yarn add <包名> --dev生产依赖、**yarn global add <包名>**全局安装
删除yarn remove <包名>、**yarn global remove <包名>**全局删除
安装项目依赖**yarn **
运行命令别名yarn <别名>

7、包管理工具的选择、判定

个人项目无所谓

公司项目:

  • npm的锁文件为package-lock.json
  • yarn的锁文件为yarn.lock

包管理工具不要在同一个项目里混用,以防意外

8、npm包的发布、更新、删除

8.1 制作并发布包

流程如下:

  • npm init

  • 给包命名,注意不能有test等字样,否则会被识别为垃圾包不予发布

  • 编写自己的npm包

下面是一个npm包的例子

/**
 * vertify if two one-dimensional arrays are identical
 * @param {Array} arr1 
 * @param {Array} arr2 
 * @returns Boolean
 */
function isArrEqual(arr1, arr2){
    return arr1 && arr2 && arr1.length === arr2.length && arr1.every((item) => arr2.includes(item))
}

/**
 * array deduplication
 * @param {Array} arr1
 */
function removeDuplicates(arr){
    return [...new Set(arr)]
}

module.exports = {
    isArrEqual,
    removeDuplicates
}
  • 登录npm官网,注册并激活账号

  • nrm use npm,使用官方镜像

  • npm login,填写用户相关信息登录,输入密码时默认不可见

  • npm publish提交包

  • 成功后便可以像其他包那样下载下来使用了

8.2、 更新包

  • 在本地更新代码
  • 修改package.json中的版本信息
  • npm publish发布

8.3、删除包

包可以被删除的条件:

  • 你是作者
  • 包的发布时间小于24h
  • 若大于24h,没有其他包依赖于此包,且每周小于300下载量,且维护者唯一

删除命令:npm unpublishnpm unpublish --force

9、其他语言或者OS的包管理工具

语言包管理工具
PHPcomposer
Pythonpip
Javamaven
Gogo mod
JavaScriptnpm / yarn / cnpm / …
RubyrubyGems
操作系统包管理工具
Centosyum
Ubuntuapt
MacOshomebrew
Windowschocolatey

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

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

相关文章

Linux常用命令——badblocks命令

在线Linux命令查询工具 badblocks 查找磁盘中损坏的区块 补充说明 badblock命令用于查找磁盘中损坏的区块。 硬盘是一个损耗设备&#xff0c;当使用一段时间后可能会出现坏道等物理故障。电脑硬盘出现坏道后&#xff0c;如果不及时更换或进行技术处理&#xff0c;坏道就会越…

山人求道篇:一、交易系统与现代战争

声明&#xff1a; 本人不进行任何投资建议&#xff0c;也不出售任何包括策略、算法的程序代码。 仅作为个人的2023年开发心路总结&#xff0c;有任何异议可以在评论区留言&#xff0c;可以讨论&#xff0c;如果你杠&#xff0c;那就是你对。 这世上有很多条路&#xff0c;每个…

零基础自学编程,中文编程工具下载,中文编程工具构件之弹出菜单构件简介

一、前言&#xff1a; 零基础自学编程&#xff0c;中文编程工具下载&#xff0c;中文编程工具构件之弹出菜单构件简介 编程系统化教程链接 https://jywxz.blog.csdn.net/article/details/134073098?spm1001.2014.3001.5502 给大家分享一款中文编程工具&#xff0c;零基础…

VSCode编译多个文件

打开tasks.json文件&#xff0c;找到"$ {file}“这一行。然后在其后面添加你想要编译的文件即可。 比如我这里是想要编译当前文件夹下的所有.cpp文件&#xff0c;那么我就直接把”$ {file}"给注释掉了&#xff0c;然后再使用通配符来代表所有.cpp文件。 最后解释以下…

Git——使用Git进行程序开发

主要介绍个人开发提交记录的主要流程&#xff0c;包括以下内容&#xff1a; 索引- 提交的暂存区。查看工作的状态和内部变更。如何读取用于描述变更的已扩展统一diff格式。支持查询和交互的提交&#xff0c;修改提交。创建、显示和选择&#xff08;切换&#xff09;分支。切换…

ruoyi-vue 整合EMQX接收MQTT协议数据

EMQX安装完成后&#xff0c;需要搭建客户端进行接收数据进一步对数据处理&#xff0c;下面介绍基于若依分离版开源框架来整合EMQX方法。 1.application.yml 添加代码 mqtt:hostUrl: tcp://localhost:1883username: devpassword: devclient-id: MQTT-CLIENT-DEVcleanSession: …

从0开始学习JavaScript--JavaScript 中 `let` 和 `const` 的区别及最佳实践

在JavaScript中&#xff0c;let 和 const 是两个用于声明变量的关键字。尽管它们看起来很相似&#xff0c;但它们之间有一些重要的区别。本篇博客将深入探讨 let 和 const 的用法、区别&#xff0c;并提供一些最佳实践&#xff0c;以确保在代码中正确使用它们。 let 和 const …

简单字符串处理

答案&#xff1a; #include <stdio.h> #include <string.h> #define MAX 51 //该定义宏为字符串最大长度 int main() {char arr[MAX] { 0 }; gets(arr); //读取存给arrint len 0, i 0, num 0;len strlen(arr); //len代表字符串长度for (i 0; i &l…

基于卷积神经网络的人体行为识别系统开发与设计

摘 要 基于卷积神经网络的人体行为识别的开发与设计 摘要&#xff1a;随着计算机领域不断的创新、其它行业对计算机的应用需求的提高以及社会对解放劳动力的迫切&#xff0c;人机交互成为人们关注的问题。深度学习的出现帮助了人们实现人机交互&#xff0c;而卷积神经网络是其…

从基础到进阶:实现div控件的拖拽和缩放功能

说在前面 元素拖拽和缩放现在也是一个很常见的功能&#xff0c;如果你正在寻找一个详细的教程&#xff0c;从基础到进阶地学习如何实现具备拖拽和缩放特性的div控件&#xff0c;那么本文将是你需要的&#xff01;我们将从HTML、CSS和JavaScript的基本知识入手&#xff0c;深入讨…

pgsql 更新A表的x字段通过查询b表的z字段

查询表t_local_warning_hit_source的send_time 更新到表t_local_warning_source WITH t2 AS ( SELECT ID, send_time FROM t_local_warning_hit_source WHERE send_time > 2023-09-27 00:00:00 AND send_time < 2023-11-28 00:00:00 ) UPDATE t_local_warning_source t…

牛客算法题 HJ99 自守数 golang实现

题目 HJ99 自守数 描述 自守数是指一个数的平方的尾数等于该数自身的自然数。例如&#xff1a;25^2 625&#xff0c;76^2 5776&#xff0c;9376^2 87909376。请求出n(包括n)以内的自守数的个数数据范围&#xff1a; 1 ≤ &#xfffd; ≤ 100001≤n≤10000 输入描述&…

ApiSix的docker 容器化部署及使用

⼀&#xff0e;etcd安装 Docekr安装Etcd 环境准备 此处安装&#xff0c;是利⽤下载的 etcd 源⽂件&#xff0c;利⽤ docker build 构建完整镜像&#xff0c;具体操作如下&#xff1a; 1.环境准备 1.1. 新建⽂件夹 在磁盘某个路径下新建⼀个⽂件夹&#xff0c;⽤处操作 Dockerfi…

ES6中对Set、Map两种数据结构的理解

Set、Map两种数据结构的理解 前言什么是集合&#xff1f;什么又是字典&#xff1f;区别&#xff1f; 一、Set理解增删改查add()delete()has()clear() 遍历keys方法、values 方法、entries 方法forEach() 方法扩展运算符和 Set 结构相结合实现数组或字符串去重实现并集、交集、…

php爬虫实现把目标页面变成自己的网站页面

最近又被烦的不行&#xff0c;琐事不断&#xff0c;要是比起懒来一个人比一个人懒&#xff0c;但是懒要转换成动力啊&#xff0c;能让自己真正的偷懒&#xff0c;而不是浪费时间。每天还是需要不断的学习的&#xff0c;才能更好的提高效率&#xff0c;把之前做的简单小功能爬虫…

HotSpot 虚拟机中的对象

1、对象的创建 Java 是一门面向对象的编程语言&#xff0c;程序运行过程中无时无刻都有对象被创建出来。在语言层面上&#xff0c;创建对象通常仅仅是一个 new 关键字&#xff0c;而虚拟机中&#xff0c;对象&#xff08;仅限于普通 Java 对象&#xff0c;不包括数组和 Class …

Spring Cloud Gateway集成SpringDoc,集中管理微服务API

本文目标 Spring Cloud微服务集成SpringDoc&#xff0c;在Spring Cloud Gateway中统一管理微服务的API&#xff0c;微服务上下线时自动刷新SwaggerUi中的group组。 依赖版本 框架版本Spring Boot3.1.5Spring Cloud2022.0.4Spring Cloud Alibaba2022.0.0.0Spring Doc2.2.0Nac…

C#图像处理OpenCV开发指南(CVStar,03)——基于.NET 6的图像处理桌面程序开发实践第一步

1 Visual Studio 2022 开发基于.NET 6的OpenCV桌面程序 1.1 为什么选择.NET 6开发桌面应用&#xff1f; 选择 .NET 6&#xff08;最早称为 .NET Core&#xff09;而非 Frameworks.NET 的理由是&#xff1a;&#xff08;1&#xff09;跨平台&#xff1b;已经支持Windows,Linux…

yolov1网络结构说明

文章目录 一. 网络结构二. 网络说明1. 网络的输入2. 网络的输出(1) 5 5表示:每个网格使用两个先验框进行预测。(2) “5”表示&#xff1a;每个先验框包含的预测信息的数量。(3) 20表示&#xff1a;20个分类预测值(4) 每个网格能预测几个目标&#xff1f; 一. 网络结构 论文下…

eNSP实验

前言 本文记录了使用eNSP进行组网&#xff0c;学习、巩固一些之前学的网络基础知识和协议。 一&#xff1a;同网段、网关互通 网络拓扑如下&#xff1a; AR1的配置&#xff1a; interface G0/0/0 ip address 192.168.10.1 24 PC1和PC2的配置(IP地址和网关设置) 最终实现PC1…