标签: lerna

LernaJS Typescript找不到模块

我正在尝试将LernaJS与typescript一起使用,但遇到一些问题。当我尝试运行我的package-1并将package-2作为依赖项时,出现错误:

    module.js:549
        犯错
        ^

    错误:找不到模块“ package-2”
        在Function.Module._resolveFilename(module.js:547:15)
        在Function.Module._load(module.js:474:25)
        在Module.require(module.js:596:17)
        在要求时(internal / module.js:11:18)
        在对象。(/home/gabriel/Documentos/projetos/nodejs/lerna-t2/packages/package-1/dist/index.js:3:19)
        在Module._compile(module.js:652:30)
        在Object.Module._extensions..js(module.js:663:10)
        在Module.load(module.js:565:32)
        在tryModuleLoad(module.js:505:12)
        在Function.Module._load(module.js:497:3)

我已按照以下步骤操作:

  1. 我已经创建了一个目录并运行了“ lerna init”命令
  2. 我在(package-1,package-2)“ packages”文件夹中创建了2个文件夹
    。
    ??? lerna.json
    ??? node_modules
    ??? package.json
    ??? package-lock.json
    ??? 包装
        ??? 包装1
        ??? 套餐2

  1. 我都在(package-1,package-2)中都运行了'npm init'
  2. 我在两个软件包中都创建了一个基本的“ tsconfig.json”:
    {
        “ compilerOptions”:{
            “ outDir”:“ dist”,
            “ target”:“ es5”,
            “ module”:“ commonjs”
        }
    }

  1. 我已经在根文件夹中运行了“ lerna bootstrap”
  2. 我用过'lerna add package-2 --scope = package-1'
  3. 我还在根文件夹,程序包1和程序包2中运行了'npm i'
  4. 我已经在package-1和package-2中运行了'tsc -w',并且在package-1中运行了'node dist / index.js'

文件树

我的“ package-1”文件树:

    。
    ??? dist
    ???? …

node.js typescript lerna

8
推荐指数
1
解决办法
4502
查看次数

优先使用纱线工作区和 lerna 构建顺序

我在单一存储库中有这个大型打字稿项目,使用yarn workspaceslerna具有以下架构:

repo
??? API
?   ??? (GraphQL API)
??? Apps
?   ??? (Front-end React Apps)
??? Libs
?   ??? (Shared libraries)
??? Services
    ??? (Back-end Services)
Run Code Online (Sandbox Code Playgroud)

package.json看起来像:

{
   ...
   "workspaces": [
        "API/**/*",
        "Apps/**/*",
        "Libs/**/*",
        "Services/**/*",
    ],
    "scripts": {
        "bootstrap": "lerna bootstrap",
        "build": "lerna run build"
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我的lerna.json样子:

{
    "lerna": "2.11.0",
    "npmClient": "yarn",
    "useWorkspaces": true,
    "workspaces": [
        "Libs/**/*",
        "API/**/*",
        "Apps/**/*",
        "Services/**/*"
    ],
    "version": "1.0.0"
}
Run Code Online (Sandbox Code Playgroud)

现在我需要Libs在两者之前构建所有共享Apps, …

build typescript lerna yarnpkg yarn-workspaces

8
推荐指数
1
解决办法
1949
查看次数

一次中断所有 lerna --parallel 任务

我有一个 lerna 脚本 ( lerna dev),它使用该--parallel选项启动多个包的开发服务器(如果我不使用该选项,则只会启动第一个服务,而不会启动其他服务)。这些服务器在不同端口上以开发模式为各自的应用程序提供服务,并带有热重载。基本上,这允许顺利开发,因为我们只需要输入一个命令即可开始处理多个包。

我注意到的问题是,当我中断此 lerna 任务时,服务器不会关闭。当我运行我的lerna dev命令时,它会打印消息,说明服务器已经在它们使用的端口上运行。这意味着,当我关闭lerna dev命令(使用CTRL+ C)时,它不会杀死所有正在运行的进程(有些被杀死,有些没有)。

有趣的是,那些没有关闭的是create-react-app projects.

所以这是我的问题:如何确保通过lerna run带有--parallel选项的命令启动的进程都与主进程一起被杀死?

PS:这发生在 Unix 系统上,我们不使用 Windows。

unix lerna create-react-app

8
推荐指数
2
解决办法
1629
查看次数

在 VSCode 中调试 lerna-typescript 项目

我正在尝试使用 lerna+typescript 构建一个 monorepo,我正在使用这个 repo 作为开始:https : //github.com/Izhaki/mono.ts

我想要实现的是调试 Visual Studio 代码中的代码。我试过一些东西来添加launch.json这样的:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Debug",
            "preLaunchTask": "npm: build",
            "program": "${workspaceFolder}/packages/line/src/index.ts",
            "sourceMaps": true,
            "smartStep": true,
            "internalConsoleOptions": "openOnSessionStart",
            "outFiles": [
                "${workspaceFolder}/packages/line/dist/**/*.js"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我收到了一些关于他导入和使用的错误:

/Users/davidericci/Desktop/mono.ts-master/packages/line/dist/index.js:1
(function (exports, require, module, __filename, __dirname) { import { getDistance } from '@geo/point';
                                                                     ^

SyntaxError: Unexpected token {
Run Code Online (Sandbox Code Playgroud)

所以我在tsconfig.build.json(内部包)中进行了更改:

"target": "es2017",
"module": "commonjs",  
Run Code Online (Sandbox Code Playgroud)

和里面tsconfig.base.json(总是在包内):

{
  "compilerOptions": {
    "lib": ["es2015", …
Run Code Online (Sandbox Code Playgroud)

debugging typescript visual-studio-code lerna

8
推荐指数
1
解决办法
3536
查看次数

Lerna 避免符号链接

我正在使用下面的命令

lerna bootstrap --hoist
Run Code Online (Sandbox Code Playgroud)

我希望 lerna 将包的所有 dev 和 prod 依赖项安装到主根 node_modules 中。 有些包是相互依赖的。

当我运行 bootstrap 命令时,它将所有依赖项安装到根节点模块。但在这个过程之后,它会将一些包相互符号链接。

我只想将所有依赖项安装到根节点模块,包括依赖包。我不需要任何符号链接依赖项。

如何避免符号链接过程?

javascript node.js npm lerna monorepo

8
推荐指数
0
解决办法
1599
查看次数

如何在 Yarn 工作区的一个 package.json 文件中安装软件包?

我有经典的 Lerna 设置。根目录,packages文件夹,2个子目录

我只想yarn install在一个包中运行,然后安装这个包的依赖项。出于某种原因,当我运行它时(甚至从这个文件夹中),它正在安装node_modules在根、packageA 和 packageB 中。

有没有解决方案只允许我node_modules为所选目录安装?

javascript reactjs lerna

8
推荐指数
2
解决办法
4870
查看次数

Lerna / Nx / Turborepo 或其他非 js 应用程序的 monorepo 系统 (php)

我有/frontend(JS/Vue)和/backend(PHP)的存储库docker-compose.yml用于开发。但现在我需要添加另一个 JS 前端,该前端将共享一些组件、库等。我不想重复代码,所以我发现我可以使用许多工具来实现此目的,例如lernanxturborepo,用于使用共享包管理 monorepo。

问题是我发现的所有教程和示例存储库都基于 100% JS 存储库,例如前面的 React + 后面的 Nest 等。

所以问题-用于前。nx在具有多种语言的存储库上有意义,只是为了在 JS 包上利用它?如果是,目录结构应该是什么样子?或者也许有更好的 monorepo 工具是为多种语言设计的,而不仅仅是 JS?

javascript lerna monorepo nrwl-nx

8
推荐指数
1
解决办法
3758
查看次数

lerna add : 没有找到可以添加 <package> 的包

已将 lerna 添加到我的项目中,通过成功运行此命令,我已将一个包添加到我的服务器:

 lerna add  @types/express --dev
Run Code Online (Sandbox Code Playgroud)

但是当我想添加另一个时:

lerna add graphql class-validator type-graphql
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

info cli using local version of lerna
lerna notice cli v3.22.1
lerna WARN No packages found where graphql can be added. 
Run Code Online (Sandbox Code Playgroud)
  1. 添加软件包是否遗漏或错误?
  2. 我应该使用yarn add而不是leran add吗?看起来它有效,但我怀疑包树形式是否正确

npm-install lerna yarnpkg

7
推荐指数
2
解决办法
3560
查看次数

package.json“依赖项”值中的“workspace:”前缀是什么意思?

在哪里可以了解有关workspace:版本号前缀是什么的更多信息?

例如,在巴别塔中:

  "dependencies": {
    "@babel/helper-plugin-utils": "workspace:^7.13.0",
Run Code Online (Sandbox Code Playgroud)

来源

babeljs lerna monorepo yarnpkg yarn-workspaces

7
推荐指数
1
解决办法
1万
查看次数

使用语义版本控制或 Lerna Publish 从 CI/CD 部署时如何确保 Master 和 Dev 分支保持同步

设置

我有几个 gitlab 存储库,其中一般设置涉及一个master分支、一个stage(预发布)分支和一个dev分支。

所有 3 个分支的推送权限均被禁用。

工作流程是从dev分支中派生任何修补程序、错误修复和功能。当您对发布感到满意时,您将向 提交合并请求dev。最终,当内部准备好稳定的构建时dev;将为该分支提交合并请求stage。最后,当您对预发布感到满意时,您将提交分支的合并请求master

我配置了 CI/CD,以便通过自动生成文件从master和分支自动执行测试、构建和部署。分支部署到 UAT s3 Bucket 并部署到生产 s3 Bucket。stageCHANGELOG.mdstagemaster

部署是通过Semantic Versioning 2.0.0它来处理的,它负责更新版本、生成变更日志和部署。

我有一个与上面描述的类似的设置,除了它是一个 monorepo,所以我用来Lerna处理发布(部署)和{"conventionalCommits": true}复制Semantic Versioning 2.0.0的行为。我在 monorepo 中使用独立版本控制。

和 的Semantic Versioning 2.0.0设置都Lerna强制master分支始终位于 和 分支之后或等于stagedev分支;并且stage分支始终位于分支后面或等于dev分支,就像级联效应一样。

dev>= stage …

semantic-versioning gitlab gitlab-ci lerna conventional-commits

7
推荐指数
1
解决办法
1668
查看次数