Node.js Bazel与lerna和纱线工作区一起使用
许多人正在使用lerna和/或Thread workspace 我想,或者从它们迁移到Bazel,或者只是将它们与Bazel一起使用,都可以用一个示例项目来指导 例如,目前我有一个这样的目录结构,其中foo是一个express服务器,bar是foo使用的库,两者都基于typescriptNode.js Bazel与lerna和纱线工作区一起使用,node.js,typescript,bazel,lerna,bazel-rules,Node.js,Typescript,Bazel,Lerna,Bazel Rules,许多人正在使用lerna和/或Thread workspace 我想,或者从它们迁移到Bazel,或者只是将它们与Bazel一起使用,都可以用一个示例项目来指导 例如,目前我有一个这样的目录结构,其中foo是一个express服务器,bar是foo使用的库,两者都基于typescript <project root> ├── jest.config.js ├── lerna.json ├── package.json ├── packages │ ├── bar │ │
<project root>
├── jest.config.js
├── lerna.json
├── package.json
├── packages
│ ├── bar
│ │ ├── jest.config.js
│ │ ├── package.json
│ │ ├── src
│ │ │ └── index.ts
│ │ ├── test
│ │ │ └── unit
│ │ │ └── index.test.ts
│ │ ├── tsconfig.build.json
│ │ └── tsconfig.json
│ └── foo
│ ├── jest.config.js
│ ├── package.json
│ ├── src
│ │ ├── hello.ts
│ │ └── index.ts
│ ├── test
│ │ ├── integration
│ │ │ └── index.test.ts
│ │ └── unit
│ │ └── index.test.ts
│ ├── tsconfig.build.json
│ └── tsconfig.json
├── tsconfig.build.json
├── tsconfig.json
└── yarn.lock
├── jest.config.js
├── lerna.json
├── package.json
├── 包装
│ ├── 酒吧
│ │ ├── jest.config.js
│ │ ├── package.json
│ │ ├── src
│ │ │ └── 索引
│ │ ├── 测试
│ │ │ └── 单元
│ │ │ └── index.test.ts
│ │ ├── tsconfig.build.json
│ │ └── tsconfig.json
│ └── 福
│ ├── jest.config.js
│ ├── package.json
│ ├── src
│ │ ├── 你好,ts
│ │ └── 索引
│ ├── 测试
│ │ ├── 整合
│ │ │ └── index.test.ts
│ │ └── 单元
│ │ └── index.test.ts
│ ├── tsconfig.build.json
│ └── tsconfig.json
├── tsconfig.build.json
├── tsconfig.json
└── 纱线锁
我应该如何将其与Bazel(如您所知)的工作区、构建及其内容保持一致
有什么提示或例子吗
谢谢 在美国,有一些回购结构的例子与此类似。这表明(在本例中是Angular应用程序)拥有共享lib并使用它们,但这里的原理是相同的 通常,在项目的根目录中只有一个工作区文件。虽然可以为不同的应用程序和lib提供多个
package.json
文件,但它为ts_库
规则增加了一些额外的复杂性,这对于入门来说可能是最好避免的。显示多个package.json
文件,但不显示Typescript
对于BUILD
(或BUILD.bazel
)文件,您在这里至少需要一个foo
和一个bar
(以及根目录下的一个)。您拥有的构建文件越多,您对源代码的编译单元进行的分割就越多,因此增加了增量
然后将tsu库
规则添加到那些可以找到文档的BUILD
文件中,它们还显示直接使用tsc
与tsu库
之间的差异。然后,您可以定义foo
和bar
之间的源依赖关系,下面是一个快速示例:
packages/foo/BUILD
:
ts_libaray(
name = "foo",
srcs = glob(["src/**/*.ts"]),
deps = [
"//packages/bar", <-- this is the source dep for bar
"@npm//some-package",
],
)
ts_libaray(
name = "bar",
srcs = glob(["src/**/*.ts"]),
deps = [
"@npm//some-other-package",
],
)
谢谢你,马特!这对我帮助很大!我希望其他人也觉得这很有用:)