# 本地开发
# 摘要
如果你看到此处,你可能会对改进 MdPress 核心感兴趣。
MdPress 正在使用包含了 Yarn Workspaces 和 Lerna 的一个组合。
# 初始化 package
yarn // 它将安装所有 package 的依赖
yarn
将使用 hoist
。它对你意味着什么?
它将重组工作空间根目录中的所有依赖项并链接所有 package。
通过运行以下命令来检查链接:
ls -la node_modules/@mdpress
::: warning 你必须注意应在子文件夹的 package.json 中声明所有依赖项。如果未声明 package 的 dependencies,则在发布到 npm 时将无法正常工作。 :::
::: warning
你应该留意一个特殊的 package @mdpress/shared-utils
,它是由 Typescript 编写的。
:::
安装完所有依赖后,它将运行 yarn tsc
。该命令将告诉 workspace 的 @mdpress/shared-utils
来编译他的 js。
::: warning
从这里开始,如果你要在此 package 中进行更改,则必须始终运行 yarn tsc
或在单独的终端中运行 yarn run tsc -w
。当检测到 shared-utils 有任何更改时,它将重新运行 tsc。
:::
# 链接
从这里开始就很不错了,你已经准备就绪。你需要将 MdPress 链接到你的项目。
yarn register-mdpress
你将看到类似这样的内容:success Registered "mdpress".
它将链接来自 packages/mdpress
的 MdPress 包。 你将可以访问 MdPress 脚手架和其他内部的 packages,他们在 packages/mdpress/package.json
被声明。
{
"main": "index.js",
///
"bin": {
"mdpress": "cli.js"
}
///
}
现在转到你的项目并运行 yarn link mdpress
。
你应该得到 success Using linked package for "mdpress".
# 取消链接
你可能想要取消所有链接。在工作区根文件夹中,运行:
yarn unregister-mdpress
现在你可以在你的项目文件夹中运行 yarn unlink mdpress
。
如果一切运行正常,当你在你的项目文件夹中再次运行 yarn link mdpress
,你应该获得一个错误提示你找不到名为 mdpress 的软件包。
# 另一种方式:使用 lerna
yarn run boot
# BUGS / 问答
你可能会发现链接有些困难。如果你触发了一些类似 There's already a package called "mdpress" registered
之类的内容,你已经注册了 MdPress :
- 如果你已经从链接链接了 MdPress ,就已经很好了。如果你进行更改,由于它是 symbolic link,你不必重新运行任何指令。只有当你更新 shared-utils 软件包时,才必须重新运行
yarn tsc
,仅此而已。 - 如果你什么也没做。那么你已经将 MdPress 链接到某处。你要做的就是删除你运行
yarn link
或yarn unlink
的文件夹。
# 更多相关
你可以使用更多有趣的命令: