Node.js 包管理器(Corepack)

news2024/10/7 7:31:22

 

目录

1、简介

2、启用Corepack

3、使用Node.js Corepack

4、配置包

5、升级全局版本

6、离线工作流

7、支持的包管理器

8、Node.js Corepack 拦截npm

9、Corepack 常用命令


1、简介

Corepack是一个实验性的工具,可以帮助管理包管理器的版本。它公开的二进制代理 每个受支持的包管理器,当调用时,将识别为当前项目配置包管理器,如果需要的话,可以显式安装,最后在不需要显式用户交互的情况下运行它。

此功能简化了两个核心工作流:

  • 它简化了新贡献者的门槛,因为他们不再需要遵循系统特定的安装过程,只需要拥有您想要的包管理器。
  • 它允许您确保团队中的每个人都将使用您希望他们使用的包管理器版本,而无需每次您需要进行更新时他们都必须手动同步。

2、启用Corepack

由于目前还处于实验阶段,默认是不开启的,需要我们明确开启才能使用,它将在二进制文件旁边设置环境中的符号链接 (并在必要时覆盖现有的符号链接)。开启,运行如下命令:

corepack enable

从现在开始,对支持的二进制文件支持的二进制文件支持的二进制文件的任何调用都将起作用 无需进一步设置。如果遇到问题,也可以禁用它,可以运行如下命令:

corepack disable

3、使用Node.js Corepack

我本地安装了2个版本的Node版本,查看下对应版本是否有Corepack。

关于Node 多版本安装也可以参考:

http://t.csdn.cn/8Ci3jicon-default.png?t=N5K3http://t.csdn.cn/8Ci3j

查看下版本(V14.4.0)目录并没有发现corepack,如下所示:

查看下版本(V16.16.0)目录并没有发现corepack,那么手动开启corepack,运行命令:

corepack enable

目录如下图所示:

 我们可以看到是有的,当执行corepack enable命令时,发现下面多出来了pnpm和yarn相关的文件了。

也可以通过命令行,查看以下corepack,以及它对应的版本:

C:\Users\Administrator>corepack -v
0.17.0

4、配置包

Corepack代理将在您的目录中找到最接近的package.json文件。 当前目录层次结构以提取其"packageManager"属性。

如果该值对应于支持的包管理器
,则 Corepack 将使 确保对相关二进制文件的所有调用都针对请求的 版本,如果需要按需下载,如果无法下载,则中止已成功检索。

例如下面这个配置:

{
  "name": "test_yilai",
  "version": "1.0.0",
  "packageManager": "pnpm@8.6.3",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "element-plus": "^2.3.7",
    "element-ui": "^2.15.13",
    "lodash": "^4.17.21"
  }
}

配置完之后,尝试安装以下依赖试试:

yarn install 
Usage Error: This project is configured to use pnpm

如果packageManager改成yarn

{
  "name": "test_yilai",
  "version": "1.0.0",
  "packageManager": "yarn@1.22.19",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "element-plus": "^2.3.7",
    "element-ui": "^2.15.13",
    "lodash": "^4.17.21"
  }
}

看下pnpm执行的结果: 

pnpm instal

Usage Error: This project is configured to use yarn

为了解决这个问题,我们可以使用包安装神器(ni)来解决这个问题。执行以下命令进行安装:

npm i -g @antfu/ni

完成完之后直接在命令行输入ni,回车,进行包的安装,如下图所示:

我们可以发现完美的进行安装了。。。。。。

5、升级全局版本

在现有项目之外运行时(例如,在运行 yarn init),Corepack将默认使用预先定义的版本 对应于每个工具的最新稳定版本。这些版本可以 通过运行corepack prepare命令沿着 您希望设置的包管理器版本: 

corepack prepare yarn@x.y.z --activate

或者,可以使用标签或范围:

corepack prepare pnpm@latest --activate
corepack prepare yarn@stable --activate

6、离线工作流

许多生产环境没有网络访问。自从Corepack 通常直接从它们的注册表下载包管理器发行版, 它可能与这样的环境相冲突。若要避免发生这种情况,请调用 corepack prepare命令,同时您仍然可以访问网络(通常在 同时准备部署映像)。这将确保 即使没有网络访问,所需的包管理器也是可用的。

7、支持的包管理器

以下二进制文件是通过Corepack提供的:

Package manager

Binary names

yarn

yarnyarnpkg

pnpm

pnpmpnpx

8、Node.js Corepack 拦截npm

虽然Corepack可以像任何其他包管理器一样支持npm,但它的 默认情况下不启用。

虽然npm"packageManager"属性中的有效选项,但是不生效。

当然如果你想拦截也是可以的,需要通过 corepack enable npm 解决。

9、Corepack 常用命令

corepack enable 开启corepack功能

corepack disable 移除corepack功能

corepack hydrate 将包管理器导入缓存

corepack prepare 生成包管理器存档

 

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

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

相关文章

C#,数值计算——循环冗余校验和(CRC,Cyclic Redundancy Checksum)的计算方法与源代码

using System; namespace Legalsoft.Truffer { /// <summary> /// 循环冗余校验和 /// cyclic redundancy checksum /// </summary> public class Icrc { private uint jcrc { get; set; } private uint jfill { get; se…

【ISO26262】汽车功能安全第3部分:概念阶段

GB/T34590《道路车辆 功能安全》分为以下部分: 需要文档的朋友,可以和我联系! tommi_wei@163.com GB/T34590的本部分规定了车辆在概念阶段的要求: ———相关项定义; ———安全生命周期启动; ———危害分析和风险评估;及 ———功能安全概念。 危害事件分类 对于每一个…

多网口UDP发包无法收到回包排查与解决

最近几周几乎都是单休&#xff0c;加班很多&#xff0c;也遇到了很多未知的问题&#xff0c;杂事也多时间比较紧张&#xff0c;也没有多少空余来进行一些总结积累。这点让我很是怀念起几年前的日子&#xff0c;任务安排周期长&#xff0c;做技术纯粹又专心。 前几天遇到了一个…

chatgpt赋能python:如何将Python导入PyCharm

如何将Python导入PyCharm 介绍 PyCharm是一个非常流行的Python开发工具&#xff0c;它拥有许多强大的功能和插件&#xff0c;使开发人员能够更高效地编写Python代码。在本篇文章中&#xff0c;我们将介绍如何将Python导入PyCharm。 步骤 1. 安装PyCharm 首先&#xff0c;您…

jupyter-notebook:从记录点回复数据

使用jupyter进行记录数据分析思路时&#xff0c;有时候会莫名出现一些问题。比如这次遇到的保存并关闭之后&#xff0c;隔了一个晚上再次打开文件就成了空文件了&#xff0c;昨天写的分析都没有了&#xff0c;很头疼。解决方法&#xff1a;如果确定是保存了后&#xff0c;每一个…

32 linux 中物理页的 cow

前言 熟悉 linux 进程机制的人都知道 linux 中新建进程是以 fork exec 的形式创建的进程 fork 的时候复制了父进程的相关数据结构, 然后更新了待执行的 binary, 去执行 然后 父子进程之间 内存管理是 基于 copy on write 的 对于某块物理页, fork 之后内存设置为 只读…

JAVA3

文章目录 注释核心机制JVM的功能 优缺点优点缺点 注释 例子&#xff1a; 核心机制 JVM的功能 优缺点 优点 缺点

FreeRTOS入门(二)

目录 什么是RTOS? 嵌入式有哪些常见的RTOS&#xff1f; ✓ VxWorks&#xff08;开源收费&#xff09; ✓ UCOSII&III&#xff08;开源免费&#xff09; ✓ FreeRTOS&#xff08;开源免费&#xff09; ✓ RT_Thread(开源免费) ✓ AliOS(开源收费) ✓ LiteOS FreeR…

微信小程序canvas层级太高,与其他非原生组件层级冲突

官网已经提出新版本以支持同层渲染&#xff0c;但是实际项目中层级还是冲突的。 最后在文档中找到这样一段话&#xff0c;用真机打开&#xff0c;层级就正常了 。所以建议大家&#xff0c;多使用真机调试去测试&#xff01;&#xff01;&#xff01;&#xff01;

redis中常用的命令

1.关于对key操作的命令 keys *: 查看redis中所有的key exists key: 判断指定的key是否存在。存在返回1 否则返回0 del key: 删除指定的key expire key seconds: 为指定的key设置过期时间 2.关于库的命令 默认redis中存在16个库 select n: 选中库 n0~15 flushdb: 清空…

C++中的exec()函数

exec()函数在C中是一个进程控制函数&#xff0c;用于创建新进程执行其他程序或命令行指令。exec()函数可以替换当前进程的代码和数据&#xff0c;创建新的进程运行其他程序。exec()函数有多个版本&#xff0c;例如execl、execv、execle、execve等&#xff0c;根据不同的参数类型…

SAP 区分工单BOM物料是手工删除 还是 Teco后自动关闭需求

SAP 区分工单BOM物料是手工删除 还是 Teco后自动关闭需求 首先 resb表删除标识XLOEK 都为 ‘X’&#xff0c;无法通过其它字段直接区分 1先从前台界面区分 手工删除的&#xff0c;组件界面颜色正常&#xff0c;状态为-REL 删除 Teco自动关闭需求的&#xff0c;颜色不一样&am…

python中调用java函数

python中调用java函数 1. 将java项目打包成jar&#xff08;IDEA&#xff09;2. 在python中调用jar 1. 将java项目打包成jar&#xff08;IDEA&#xff09; 【CtrlShiftAltS】或者“File --> Project Structure --> Project Settings” 选择Artifacts选项卡&#xff0c;点…

[Android Studio]1.2计数器

所有要改的代码如下&#xff1a; MainActivity代码&#xff1a; package com.example.code02;import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; imp…

FPGA第一个程序入门

1、使用正点原子的达芬奇开发板进行第一个FPGA程序设计。 2、启动vivado 2019.2。 3、 新建工程。 File--Project--New&#xff0c;选择RTL Project&#xff08;寄存器传输级&#xff09;。 4、选择器件。 add sources点击next&#xff0c; add constraints点击next&#x…

npm install安装依赖总结

node下载地址&#xff1a;https://nodejs.org/en/download/releases 。可以看到node版本、npm版本、node_module版本 1.npm的全局安装路径 查看默认值&#xff1a; npm get prefix 默认是C:\Users\你的用户名\AppData\Roaming\npm 、 可以通过 npm config prefix 更改全局…

mysql-数据迁移 及报错解决(ERROR 1290 (HY000)

文章目录 1. 物理迁移1. 迁移前&#xff0c;配置mysql的输出目录1. 查看mysql的输出目录2. 修改mysql的输出目录 2. 文件迁移 1. 物理迁移 1. 迁移前&#xff0c;配置mysql的输出目录 1. 查看mysql的输出目录 在安装MySQL的会限制了导入与导出的目录权限。只允许在规定的目录…

量子 能源,节能减排还是另有“端倪”?

光子盒研究院 前言&#xff1a;如今&#xff0c;量子技术早已走出实验室、广泛赋能电力、化学、医学等各个领域&#xff1b;创新赛道上&#xff0c;加速奔跑的量子产业&#xff0c;将带来无限可能。现在&#xff0c;光子盒特开启「量子」专栏&#xff0c;解读量子技术将为下游应…

基于matlab从3D医学图像中对脑肿瘤进行语义分割(附源码)

一、前言 此示例演示如何从 3D 医学图像中对脑肿瘤进行语义分割。 语义分割涉及用类标记 3-D 体积的图像或体素中的每个像素。此示例说明了如何使用 3-D U-Net 深度学习网络在磁共振成像 &#xff08;MRI&#xff09; 扫描中对脑肿瘤进行二进制语义分割。U-Net是一个快速&…

【MySQL学习笔记】(五) 表的约束

表的约束 1 什么是约束&#xff1f;2 空属性3 默认值4 列描述5 zerofill6 主键7 自增长8 唯一键9 外键 1 什么是约束&#xff1f; 约束是一种限制&#xff0c;它通过对表的行或列的数据做出限制&#xff0c;来确保数据的完整性、一致性。 真正约束字段的是数据类型&#xff0…