Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Bazel与lerna和纱线工作区一起使用_Node.js_Typescript_Bazel_Lerna_Bazel Rules - Fatal编程技术网

Node.js Bazel与lerna和纱线工作区一起使用

Node.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 │ │

许多人正在使用lerna和/或Thread workspace

我想,或者从它们迁移到Bazel,或者只是将它们与Bazel一起使用,都可以用一个示例项目来指导

例如,目前我有一个这样的目录结构,其中foo是一个express服务器,bar是foo使用的库,两者都基于typescript

<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",
  ],
)

谢谢你,马特!这对我帮助很大!我希望其他人也觉得这很有用:)