思考
-
这些日子学习了关于微前端的一些例子,采用了 qiankun, 发现如果配合 workspace 的话,是不是更加的合理? 于是重新的对 workspace 进行一番探索。
-
rust cargo 等这些包管理,使得我重新思考了有关 javascript 的 npm,yarn 中关于工作空间的概念,普通的项目一般都是 src 目录结构来管理项目。一个良好的管理工具使得工作更加的流畅。那么我们应该如何利用好工作空间。
无用才是最有用的,一个空间没有被开发的时候,它是看起来是没有用的,但是一旦开发完毕之后, 原有的空间就变得没有价值。有无是一个转变的过程。
工作空间要解决的问题
web 前端的项目可能是计算机里面最为简单的,并且前端发展普遍落后软件行业的其他部分。web 前端html、css和javascript 构成了其重要的三部分,与其他的语言开发构建 UI 方式也不一样。
工作空间管理方式
一个项目管理方案有很多种:
- multirepo 多 repo 管理,没有中心,不同的 repo 各司其职。
- monorepo 多 repo 管理,有中心,一般用于管理一些项目,例如:react 项目 react 中其实包含了很多的包,这都是 react 基础包
不同代理管理方案,其实就是使用不同的空间,在 yarn 中有 workspace 的概念。workspace 就是空间管理很好的工具。
workspace 使用方法
yarn 包管理工具默认提供了基础的工作空间能力,但是yarn不会提供高阶的workspace,能力,因为 lerna 已经做了这些事情了。重复一遍没有意义。workspace 的用法。
yarn workspace <ws_name> <command> <options...>
大致就是在原来的 workspace 上面加上了命名空间 workspace + namespace。
# 使用workspace, 并创建一个 vue 应用,然后执行
yarn workspace vue2x run serve
# 使用 workspace, 并创建一个 react 应用,然后执行
yarn workspace react16 run start
# 使用 workspace, 并创建一个 angular 应用,然后执行
yarn workspace angular10 run start
lerna 了解和使用
我们知道 lerna 其实和 workspace 是不冲突的,可说 workspace 更加底层,lerna 提供了更多的高层的功能。
我们可以全局安装 lerna 来管理 lerna 的项目
yarn global add lerna
然后要知道的是,lerna 在安装之后,我们就可以不需要直接的使用 npm 或者 yarn, 而是直接的使用 lerna 命令。
创建一个命名空间
- lerna create <ns_name>
运行命令空间中的命令
我们必须使用 lerna 作为命名空间的命令。
- lerna run 这个命令会寻找所有命名空间下的相同的命令。
- lerna run --scope <sp_name> 指定特定的命名空间
总结
简单的对比 yarn workspace 与 lerna,并讲解了如何创建 workspace. 在使用上 yarn workspace 与 lerna 有什么区别。接下需要深入的学习和讲解 workspace, 与lerna
问题
- 由于分了不同的空间, git 管理也会发生了变化,那么我们应该如何的处理 git 的管理的问题。
- 命令提示信息展示,例如,我们webpack 打包完毕的只有都有一些提示信息,但是直接使用 lerna 是没有提示的,我们应该如何处理?