Yarn工作区

自主意识
• 阅读 1761

本节我们学习 Yarn 工作区,什么是工作区呢? 工作区是设置软件包体系结构的一种新方式,默认情况下从 Yarn 1.0 开始使用。我们可以使用这种方式安装多个软件包, 也就是只需要执行一次 yarn install 命令便可以将所有依赖包全部安装。

如何使用工作区

在 package.json 文件中添加以下内容,接下来我们将此目录称为 “工作区根目录”:

{
    "private": true,
    "workspaces": ["workspace-a", "workspace-b]
}

其中 private:true 是必填项,工作区并不是要发布的,因为添加了此安全措施来确保没有任何东西可以意外地暴露它们。

创建这个文件之后,我们需要在创建两个新的子文件夹:workspace-a 和 workspace-b。在每个文件夹里面,创建一个具有以下内容的 package. json 文件:

workspace-a/package.json:

{
  "name": "workspace-a",
  "version": "1.0.0",

  "dependencies": {
    "cross-env": "5.0.5"
  }
}

workspace-b/package.json:

{
    "name": "workspace-b",
    "version": "1.0.0",
    
    "dependencies": {
        "cross-env": "5.0.5",
        "workspace-a": "1.0.0"
    }
}

最后可以在工作区根目录中执行 yarn install 命令,如果一切正常,现在应该有一个类似下面这样的文件层次结构:

/package.json
/yarn.lock

/node_modules
/node_modules/cross-env
/node_modules/workspace-a -> /workspace-a

/workspace-a/package.json
/workspace-b/package.json

workspace-b 需要一个在 workspace-a 中的文件,现在将直接使用当前项目内部的文件,而不是从 Github 上面获取。cross-env 包已正确去重并放在项目的根目录下,让 workspace-a 和 workspace-b可以一起使用这个包。

限制和警告

  • 包层级在工作区和用户得到的内容之间将有所不同(工作区依赖将提升到文件系统层次结构中)。 对这个层级的假设已经是危险的,因为提升过程不是标准化的,所以理论上没有什么新东西。
  • 在上面的示例中,如果 workspace-b 依赖于 workspace-a 的包,但是引用的是不同的版本,那么依赖包将从 Github 安装,而不是从本地文件系统链接。 这是因为一些软件包实际上需要使用以前的版本,以建立新的版本(Babel 是其中之一)。
  • 在工作区中发布包时要留心。 如果你正准备发布下一个版本,并且你决定引用一个新依赖但忘了在 package.json 中声明,你的测试仍可能在本地通过(如果其他包已经把那个引用下载到了项目根目录)。 然而其他从源中拉取包的用户就不行了,由于依赖列表现在是不完整的,他们没办法下载那个新依赖。 目前没有办法在这种情况下抛出警告。
  • 工作区必须是项目根目录的子目录,我们不能也不应当引用位于项目目录之外的工作区。
  • 工作区不支持嵌套。

链接:https://www.9xkd.com/

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
胖大海 胖大海
2年前
Git 安装配置
基本概念我们先来理解下Git工作区、暂存区和版本库概念:工作区:就是你在电脑里能看到的目录。暂存区:英文叫stage或index。一般存放在.git目录下的index文件(.git/
Stella981 Stella981
3年前
Linux系统安装完成后创建交换空间
有时候我们安装系统时候忘记分swap交换分区或者感觉内存够使用而没有划分SWAP分区,系统安装完成了我们改如何划分交换分区呢?本文是实践系统安装完成后创建交换区的一种方式。!(https://static.oschina.net/uploads/space/2017/1213/134422_MemC_2846946.png)一、主要步骤
Stella981 Stella981
3年前
Git 的暂存区(staging area)理解
    通常在很多传统集中式版本控制系统中,只有两个空间用来管理你的数据,一个是你的workingcopy(工作区),另一个便是datastore(版本库),然而在Git中,引入了stagingarea(index)这一概念,我们可以把它看做一个“码头”,你来决定其中的哪些改变可以被“运走”。    有了暂存区,我们的工作区边和Git库就不再直
Wesley13 Wesley13
3年前
JAVA NIO(一)
1NIO概述1.1NIO(newIO)是一个可以替代javaIOAPI的API,NIO提供了与标准IO不同的工作方式,标准IO是基于字节流和字符流进行操作的,而NIO是基于channel和Buffer进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写到通道中,方式如例图示,JAVANIO的几个核心组成部分是channels,Buf
Stella981 Stella981
3年前
Spring 3 mvc hello world例子
本篇文章中,我会使用maven构建一个基于SpringMVC的入门例子,前端标签库使用的是jstl。在开始之前,请确保你已经安装maven、eclipse以及tomcat。1.创建maven工程在eclipse的工作区中使用maven命令行创建一个空白工程,当然你也可以用eclipse的m2eclipse插件来创建。mvnarch
Stella981 Stella981
3年前
Mac005
MacVisualstudioCode工具安装(企业常用)安装网址:https://code.visualstudio.com/download设置格式:1。配置工作区与终端字体大小!(https://images2018.cnblogs.com/blog/127
Stella981 Stella981
3年前
Git(二)Git几个区的关系与Git和GitHub的关联
一、Git的工作区、暂存区和版本库之间的区别和联系  1)工作区    在PC中能看得到的创建的一个管理仓库的目录。比如目录下GitTest里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。    !(https://oscimg.oschina.ne
Stella981 Stella981
3年前
Git基础命令篇
一、Git介绍(1)Git是一个开源(LinusTorvalds为了帮助管理Linux内核开发而开发)的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,与常用的版本控制工具CVS,SVN等不同,它采用了分布式版本库的方式,不必服务器端软件支持。(2)Git的工作区、暂存区和版本库:工作区:就
菜园前端 菜园前端
2年前
什么是插入排序?
原文链接:什么是插入排序(insertionSort)?在数组中从左到右依次取一个数出来,然后把它放到合适的位置。从思想上可以分为有序区和无序区,有序区在左边代表已经排列好的元素。算法步骤1.默认左边第一个元素已经在有序区了2.在无序区取一个数出来(第二个
燕青 燕青
1年前
Mac电脑好用的多窗格文件管理器:QSpace Pro中文版
是一款简洁高效的多视图文件管理器,有着和系统访达相一致的操作习惯和界面呈现,同时支持更多灵活而实用的特色功能。具体来说,QSpacePro具有以下特点:支持12种视图布局,可以一键灵活切换,还支持创建多个工作区,并可为每个工作区设置独立的快捷键。所有工作区