7、Nodes.js包管理工具

news2024/10/25 10:53:11

四、包管理工具

4.1 npm(Node Package Manager)

Node.js官方内置的包管理工具。

命令行下打以下命令:

npm -v

如果返回版本号,则说明npm可以正常使用

4.1.1npm初始化
#在包所在目录下执行以下命令
npm init             #正常初始化,手动输入包信息
npm init -y          #快速初始化,全部使用默认的信息

完成后会在目录下生成package.json文件,文件内容如下:

{
  "name": "01_npm",
  "version": "1.0.0",
  "description": "Mypackage01",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

注意事项:

1、package name(包名)不能使用中文和大写字母,默认是包的目录名,所以包目录名最好也不要使用中文和大写字母

2、version(版本号)要求x.x.x格式,x必须是数字,默认为1.0.0

3、ISC证书和MIT证书功能上是相同的

4、package.json可以手动创建和修改

5、使用npm init -y 或npm init --yes,可以快速创建package.json(全部使用默认值)

4.1.2搜索包

1)命令行方式

npm s <关键字>
npm search <关键字>

2)网站搜索

https://www.npmjs.com
4.1.3安装包
npm i <packageName>
npm i <packageName@version>        ##安装指定版本

安装完以后,会在当前目录下生成一个名为node_modules的目录,这个目录下会保存所有安装的包。

在这里插入图片描述

这里我们安装了两个包(math和uniq)。

math和uniq里有js文件(包的主程序文件)和package.json(用于描述包的基本信息)

4.1.4导入安装的包
//导入并使用已安装的uniq包
//导入的时候会先到当前上当的node_modules里去找,如果没有找到,则会到上一级目录中的node_modules目录中去找,直到找到根目录为止
const uniq=require('uniq')

let arr = [1,1,2,2,3,3]

const result = uniq(arr)
console.log(result)

输出:

[ 1, 2, 3 ]
4.1.5生产依赖和开发依赖

开发环境:专门用来定代码的环境,只有程序员自己可以访问

生产环境:代码正式运行的环境,每个客户都可以访问

npm i -S <packageName>      #生产依赖(默认),包信息保存在package.json的dependencies中。
npm i -D <packageName>      #开发依赖,包信息保存在package.json的devDependencies中。
//package.json
{
  "dependencies": {           //math和uniq是生产依赖的包
    "math": "^0.0.3",
    "uniq": "^1.0.1"
  },
  "devDependencies": {       //less是开发依赖的包(安装方式:nqm i -D less)
    "less": "^4.2.0"
  }
}

4.1.6全局安装
npm i -g <packageName>

全局安装的包,可以在命令行下任意位置运行

全局安装的包,不受工作目录及位置的影响

可以通过npm root -g,来查看全局安装名的位置

不是所有的包都适合使用全局安装,只有全局类的工具才适合。

示例:

#使用nodemon启动js文件,如果js文件有修改的话,它会自动重启服务
npm i -g nodemon
4.1.7安装npm包的全部依赖
#根据package.json和package-lock.json安装所有的依赖
#因为node-modules这个通常不会存入版本库(git),当其它程序员拉取代码后,是不包含npm包的,所以需要重新安装所有依赖
npm i
npm install
4.1.8删除npm包
npm r      <packageName>
npm remove <packageName>
npm r -g <packageName>               //删除全局包
4.1.9配置npm命令别名

通过配置别名,可以更简单的执行命令

配置package.json

 "scripts": {
    "server":"node ./server.js",
     "start":"node ./index.js",
  }

这样可以通过别名来执行命令

npm run server
npm start               //start这个别名执行的时候不需要带run
4.1.20 cnpm

cnpm是淘宝构建的npmjs.com的完整镜像,也称为淘宝镜像,https://registry.npmmirror.com/

cnpm服务部署在国内阿里云上,可以提高包的下载速度

官方提供了一个全局工具包cnpm,功能和使用方式和npm相同

安装cnpm:

npm --registry https://registry.npmmirror.com/ i -g cnpm
4.1.21npm配置淘宝镜像

1)安装nrm工具

cnpm i -g nrm

2)使用nrm查看可用的镜像

nrm ls

输出:

npm ---------- https://registry.npmjs.org/             #官方镜像
yarn --------- https://registry.yarnpkg.com/
tencent ------ https://mirrors.cloud.tencent.com/npm/
cnpm --------- https://r.cnpmjs.org/
taobao ------- https://registry.npmmirror.com/
npmMirror ---- https://skimdb.npmjs.com/registry/
huawei ------- https://repo.huaweicloud.com/repository/npm/

3)切换到淘宝镜像

nrm use taobao

4)查看是否切换成功

npm config list

输出:

#这里我们看到,已经切换到了淘宝镜像
home = "https://npmmirror.com"
registry = "https://registry.npmmirror.com/"
4.2.22 使用npm发布包

1、创建一个包

2、注册账号并激活(https://www.npmjs.com/signup)

3、修改为官方镜像(npm use npm)

4、登入:(npm login)

5、提交包:(npm publish)

4.2.23更新包

1、更新代码

2、修改package.json中的版本号

3、发布更新(npm publish)

4.2.24删除包

npm unpublish

4.2yarn

yarn是facebook在2016年推出的新的Javascript包管理工具,官方地址:https://yarnpkg.com

特点:

速度快:yarn缓存了每个下载过的包,所以再次使用时,无需重新下载;

安全:在执行代码之前,会通过算法校验安装包的完整性;

可靠:使用详细、简洁的锁文件格式和明确的安装算法,能保证在不同的系统上无差异工作。

4.2.1安装yarn
npm i -g yarn
4.2.2常用命令
#初始化
yarn init /yarn init -y
#安装包
yarn add <packageName>          #生产依赖
yarn add <packageName -dev>     #开发依赖
#删除包
yarn remove <packageName>       #删除项目依赖包
yarn global remove <packageName>   #全局删除包

#安装所有项目依赖 
yarn

#运行命令别名
yarn <别名>         #不需要加run
4.2.3yarn配置淘宝镜像
yarn config set registry https://registry.npmmirror.com/
yarn config list  #查看配置信息

4.3 node版本管理工具nvm

nvm(Node Version Manager),是用来管理node版本的工具,方便切换不同版本的node.js

下载地址:

https://github.com/coreybutler/nvm-windows/releases

常用命令

nvm list available    #显示所有可以下载的Node.js版本
nvm list              #显示已安装的版本
nvm install 18.12.1   #安装18.12.1版本的Node.js
nvm uninstall 18.12.1 #删除某个版本的js
nvm install lastest   #安装最新新版本
nvm use 18.12.1       #切换到18.12.1版本的Node.js

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

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

相关文章

docker基础使用创建固定硬盘大小为40G的虚拟机

在docker中创建的服务器&#xff0c;匹配出容器id&#xff0c;服务器ip&#xff0c;服务器核数&#xff0c;服务器内存&#xff0c;服务器硬盘空间 for i in $(docker ps | grep -aiE web | awk {print $1});do echo $i; docker inspect $i|grep -aiE ipaddr|tail -1|grep -ai…

Spring Boot 依赖注入为 null 问题

目录 问题 省流 代码复现 TestService TestAspect TestController 源码分析 AbstractAutoProxyCreator CglibAopProxy Enhancer 问题 工作中&#xff0c;在负责的模块里使用 DubboService 注解注册了一个 dubbo 接口&#xff0c;给定时任务模块去调用。在自我调试阶…

使用Bert+BiLSTM+CRF训练 NER任务

使用的数据集在这里E-Commercial NER Dataset / 电商NER数据集_数据集-阿里云天池 针对面向电商的命名实体识别研究&#xff0c;我们通过爬取搜集了淘宝商品文本的标题&#xff0c;并标注了4大类&#xff0c;9小类的实体类别。具体类型及实体数量如下 针对面向电商的命名实体…

解决:如何在opencv中得到与matlab立体标定一样的矫正图?(python版opencv)

目的&#xff1a;采用一样的标定参数&#xff0c;matlab中和opencv中的立体矫正图像是一样的吗&#xff1f;不一样的话怎么让它们一样&#xff1f; 结论&#xff1a;不一样。后文为解决方案。 原因&#xff1a;注意matlab的标定结果在matlab中的用法和在opencv中的用法不一样&a…

OpenCv-01

使用opencv对图像进行一些简单的处理 首先知道自己的工作目录 import os cwdos.getcwd() 命名一张图片 my_imagelenna.png 获得图片路径 image_pathos.path.join(cwd,my_image) import cv2 imagecv2.imread(my_image) #imread()函数将图片转换为ndarray数组 image.sh…

大数据新视界 --大数据大厂之 Snowflake 在大数据云存储和处理中的应用探索

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

探索华为云DataArts Insight:数据智能的新引擎

在快速发展的数字化时代&#xff0c;数据已经成为企业最宝贵的资产。如何有效地管理和利用这些数据&#xff0c;以实现商业价值&#xff0c;是每个企业需要面对的重要挑战。华为云DataArts Insight平台应运而生&#xff0c;作为一款强大的数据智能解决方案&#xff0c;它帮助企…

STANFORD SR570 斯坦福 SR570 前置放大器

斯坦福&#xff08;Stanford&#xff09;STANFORD SR570前置放大器&#xff0c;作为音频与电子测量领域的璀璨明珠&#xff0c;以其无与伦比的性能与精湛的工艺&#xff0c;赢得了全球专业人士的广泛赞誉。这款前置放大器不仅是技术的集大成者&#xff0c;更是艺术与科学的完美…

论文学习 | 《电动汽车锂离子电池健康状态估计及寿命预测方法研究》

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本文主要对上述论文《电动汽车锂离子电池健康状态估计及寿命预测方法研究》进行学习与阅读总结&#xff0c;便于后续科研进一步学习&#xff08;纯小白自读汇总版&#xff09;。总体感觉这篇有点偏向数理方面&#xff0c;不过后…

【动手学深度学习】8.2. 文本预处理(个人向笔记)

本节将解析文本的常见预处理步骤包括&#xff1a;将文本作为字符串加载到内存中。将字符串拆分为词元&#xff08;如单词和字符&#xff09;。建立一个词表&#xff0c;将拆分的词元映射到数字索引。将文本转换为数字索引序列&#xff0c;方便模型操作。 1. 读取数据集 我们下…

leetcode-73-矩阵置零

题解&#xff1a; 1、获取矩阵的行数M与列数N&#xff1b; 2、 代码实现&#xff1a;

yolo目标检测和姿态识别和目标追踪

要检测摄像头画面中有多少人&#xff0c;人一排排坐着&#xff0c;像教室那样。由于摄像头高度和角度的原因&#xff0c;有的人会被遮挡。 yolo v5 首先需要下载yolo v5官方代码&#xff0c;可以克隆或下载主分支的代码&#xff0c;或者下载release中发布的。 简单说一下环境…

【python实战】利用代理ip爬取Alibaba海外版数据

引言 在跨境电商的业务场景中&#xff0c;数据采集是分析市场、了解竞争对手以及优化经营策略的重要环节。然而&#xff0c;随着越来越多企业依赖数据驱动决策&#xff0c;许多跨境电商平台为了保护自身数据&#xff0c;采取了更严格的防护措施。这些平台通过屏蔽大陆IP地址或部…

Idea、VS Code 如何安装Fitten Code插件使用

简介 Fitten Code是由非十大模型驱动的AI编程助手&#xff0c;它可以自动生成代码&#xff0c;提升开发效率&#xff0c;帮您调试Bug&#xff0c;节省您的时间。还可以对话聊天&#xff0c;解决您编程碰到的问题。免费且支持80多种语言&#xff1a;Python、C、Javascript、Typ…

python实战(一)——iris鸢尾花数据集分类

一、任务背景 本文是python实战系列专栏的第一篇文章&#xff0c;我们将从分类开始由浅入深逐步学习如何使用python完成常规的机器学习/深度学习任务。iris数据集是经典的机器学习入门数据集&#xff0c;许多分类任务教程都会以这个数据集作为示例&#xff0c;它的数据量是150条…

No.21 笔记 | WEB安全 - 任意文件绕过详解 part 3

&#xff08;一&#xff09;空格绕过 原理 Windows系统将文件名中的空格视为空&#xff0c;但程序检测代码无法自动删除空格&#xff0c;使攻击者可借此绕过黑名单限制。基于黑名单验证的代码分析 代码未对上传文件的文件名进行去空格处理&#xff0c;存在安全隐患。相关代码逻…

【软考高级架构】关于分布式数据库缓存redis的知识要点汇总

一.分布式数据库的含义 分布式数据库缓存指的是在高并发的环境下&#xff0c;为了减轻数据库的压力和提高系统响应时间&#xff0c;在数据库系统和应用系统之间增加一个独立缓存系统。 二.常见的缓存技术 &#xff08;1&#xff09;MemCache: Memcache是一个高性能的分布式的内…

openlayers 封装加载本地geojson数据 - vue3

Geojson数据是矢量数据&#xff0c;主要是点、线、面数据集合 Geojson数据获取&#xff1a;DataV.GeoAtlas地理小工具系列 实现代码如下&#xff1a; import {ref,toRaw} from vue; import { Vector as VectorLayer } from ol/layer.js; import { Vector as VectorSource } fr…

html全局属性、框架标签

常用的全局属性&#xff1a; 属性名含义id 给标签指定唯一标识&#xff0c;注意&#xff1a;id是不能重复的。 作用&#xff1a;可以让label标签与表单控件相关联&#xff1b;也可以与css、JavaScript配合使用。 注意&#xff1a;不能再以下HTML元素中使用&#xff1a;<hea…

Unity3D学习FPS游戏(4)重力模拟和角色跳跃

前言&#xff1a;前面两篇文章&#xff0c;已经实现了角色的移动和视角转动&#xff0c;但是角色并没有办法跳跃&#xff0c;有时候还会随着视角移动跑到天上。这是因为缺少重力系统&#xff0c;本篇将实现重力和角色跳跃功能。觉得有帮助的话可以点赞收藏支持一下&#xff01;…