问题标签 [monorepo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 通过 Typescript 支持将一个项目中的捆绑代码包含到另一个项目中
我正在开发一个有两个子项目的项目:我们称它们ProjectA
为ProjectB
. 这些是完全不同的项目,但都是用 Typescript 编写的,并使用 webpack 作为打包器。
在开发过程中,我想使用 in 的某些部分ProjectA
,ProjectB
但总体要求是ProjectB
必须将所有代码ProjectA
作为外部依赖项使用 - 通过 script 标签,而不是通过 npm 安装等。
所以我的想法是捆绑 的代码ProjectA
,使用输出配置属性的库选项webpack
,将生成的捆绑包托管在某处,并ProjectB
通过脚本标记将其包含在其中。ProjectA
但是由于我会在开发过程中使用一些功能ProjectB
,所以我也想从中Typescript
受益。
有人可以在这里指出我正确的方向吗?
typescript - TypeScript:在项目之间共享代码的最简单方法
我正在编写一个 React.js 应用程序和一个 React Native 应用程序,它们都作为 Lerna monorepo 中的单独 NPM 包。我想要做的是有一个“共享库”类型的项目,它可以保存两个项目共享的 TypeScript 文件,而且看起来几乎不可能以一种简单而干净的方式来做。
如果我将共享库创建为 NPM 包,即使我对它进行符号链接,我也需要在它发生更改时重新编译它。我正在寻找一种将 TypeScript 文件直接从共享项目导入到 React.js 和 React Native App 的编译过程中的方法。
我还阅读了有关 tsconfig.json “路径”设置的信息,并尝试执行以下操作:
然后我尝试导入一个类,例如: import { x } from "@shared-types/Types" 但这也不起作用,TypeScript 说它无法解析模块。
我不知道为什么做这么简单的事情如此困难,我希望这里有人有一个好的、干净的解决方案。
babeljs - Babel:根编程选项
我似乎完全不知道在哪里放置 babel 的根编程选项。
如果我有一个 monorepo 并且需要告诉不同的子包它们应该向上查找我的 babel.config.js 那么我应该放入rootMode: "upwards"
子包的 .babelrc 中,对吗?这不起作用,因为产生的错误
Error: .rootMode is only allowed in root programmatic options
不知何故,我根本找不到任何在哪里放置/使用根编程选项的例子......谁能指出我正确的方向?
node.js - monorepo 中微服务的 Codeship 独立 CI
目前我们有一个 NodeJS 单体应用程序。测试在 Codeship 中运行,如果测试为绿色,则代码将部署到 Heroku。这很容易。
所以我们想把我们的单体应用分解成微服务,我们更喜欢 monorepo 解决方案。
例如,我们在 repo 中有service-1
and 。service-2
我们想为 Codeship 上的每个服务设置独立的 CI 和部署管道。
您知道我们如何设置理想的 CI 吗?
git - 在开发过程中如何处理提交到多个分支?
我正在寻找最新的知识/最佳实践/建议。
我们正在考虑为我们的发展转向单一回购。我们将 Scrum 与 Stories/Epics/Sprint 一起使用(我对所有术语都没有完全了解……我老了,一些新东西看起来就像旧东西……只是名称不同)。
我们理解为开发人员定义小工作单元的必要性,但通常情况下,多个单元具有一定程度的相互依赖,但用于系统的不同部分。
开发人员可以同时处理多个,因为这样更有效(并且使任务更容易实现),但任务是分开的,每个任务都需要自己的审查。
我们想要的是能够“检查”当前功能分支的代码(我正在使用 git 术语,就像我们目前正在使用的那样),允许开发人员进行编码,运行在本地测试,如果满意,将特定更改提交到不同的分支。因此,例如,迁移更改转到迁移任务的分支,API 建模/映射更改转到相应任务的分支等。
每个任务都为故事设置了适当的阻塞,因此发布经理可以按正确的顺序发布所有内容(即,您不能发布数据存储中不存在的列的 UI 更改)。
用 git 实现这样的事情是非常麻烦的。
对我们来说,一个功能分支是一个故事(即客户希望能够让他们的客户能够更改预订的会话时间,假设存在可用性,如果需要,可以发出退款或要求进一步付款)。为了实现这个故事,需要完成各种任务(新数据、UI/UX 工作、API 工作等)。这些中的每一个都是为故事定义的任务。每个都有自己的分支。
有更好的选择吗?
如果没有,是否有更好的做法可供任何人推荐?
python - Jenkins 可以在具有多个包的 monorepo 中只构建一个 python 包吗?
假设有一个 monorepo,在不同的目录中有几个可独立构建的 python 包,格式如下所示,其中foo
和bar
是可独立构建的。
现在假设有人将代码推送到托管它的 git 存储库,并且代码修订仅存在于bar
包中。如果詹金斯接受了推送,詹金斯有没有办法检测哪个包被改变了,只构建和部署改变的包,例如bar
?
或者,无论推送了哪些更改,让 Jenkins 在一个 monorepo 中重建/重新部署所有包是否只是标准做法?
javascript - lerna 链接与 lerna 引导程序
我有一个 Lerna 项目,直到最近才使用lerna bootstrap --hoist
. 这工作得很好,但我发现devDependencies
许多子文件夹中的大部分都是相同的。升级到我读到的 Lerna v3lerna link convert.
lerna link convert 是否只是将所有子文件夹移动devDependencies
到根目录,子文件夹扫描父文件夹node_modules
以加载它们(NPM 的一个功能)?我注意到子文件夹中的依赖项更改为“file://”而不是私有 npm 存储,这表明一旦发布和使用它们就不会被加载。
此外,如果lerna bootstrap
被删除,则dependencies
不会安装子模块。使用什么方法来解决这个问题?
typescript - Vue-CLI、TypeScript 和 monorepo:如何在 /src 之外声明类型?
如何让 CLI 在特定@types
文件夹中查找类型声明?
*.d.ts
在文件夹中创建的任何/src
内容都已加载并且可以正常工作,但是如果我将它们移到外面的任何地方,/src
我什么也得不到。
我的目标是这样做(作为monorepo):
我试过compilerOptions.typeRoots
没有成功。
git - 将存储库合并到 monorepo 后如何查看项目日志?
假设我有一个 monorepo,其目录名为monorepo
. 在 multirepo 中,每个项目都有自己的目录。还假设我有另一个名为project-a
我希望放入 monorepo 的现有存储库。
为了project-a
放入现有的 multirepo,我这样做了(取自这个问题):
至此, 的历史(即 的输出git log
)project-a
已经与 monorepo 中的现有历史无缝合并。但是我如何查看project-a
仅历史?即我如何查看它的历史,project-a
就好像它没有被合并到monorepo中一样?
我试过git log -- project-a/
了,但这只显示了一个提交(即'Move all files into a directory in preparation for conversion to monorepo'
),而我原本打算查看我为project-a
.
azure - lerna monorepo中的vscode启动功能应用程序
首先,我有一个结构如下的 monorepo:
后端是一个 Azure 函数应用,其结构如下:
其次,对于backend
's package.json
,我有一个脚本:
start-debug.sh
脚本如下所示:
我正在尝试编写启动配置,以便可以在 VSCode 中调试我的函数。
根据我在那里发现的内容,我尝试了许多变体,但似乎没有任何效果。有没有人有什么建议?
这是我最近的尝试: