问题标签 [lerna]

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.

0 投票
2 回答
5109 浏览

node.js - lerna + webpack + babel-loader 问题

这是重新创建问题的地方:

https://github.com/reggi/webpack-lerna-babel-loader-issue

目标:我正在尝试./packages/usage/index.js使用 webpack 构建。

  • 我有 4 个包裹alpha, beta, gamma, usage.
  • alpha, beta,gamma没有使用 babel,应该只使用 index.js
  • usage正在使用 babel 并且应该使用babel-loader然后遍历应该继续

当我尝试编译时babel,奇怪的是请求其他部门。

{ exclude: /(node_modules|bower_components)/ }启用后我得到了这个。

捆绑包的类型

babel-loader排除node_modules

https://github.com/reggi/webpack-lerna-babel-loader-issue/blob/master/packages/usage/bundle-without-exclude.js#L70

找不到模块“@reggi/beta”

babel-loader排除node_modules

https://github.com/reggi/webpack-lerna-babel-loader-issue/blob/master/packages/usage/bundle-with-exclude.js#L77

找不到模块 \"/Users/thomasreggi/Desktop/webpack-issue/packages/beta\"

没有babel-loader& 将代码切换到require

https://github.com/reggi/webpack-lerna-babel-loader-issue/blob/master/packages/usage/bundle-without-babel.js#L97

完美地包括一切。

0 投票
3 回答
6527 浏览

npm - 单体仓库和多个 node_modules 文件夹

我有一个使用单体存储库的项目。每个包都有自己的 package.json 文件来管理所述包的依赖关系。我lerna用来在我们的 monorepo 应用程序的所有“子包”中安装包。

当前的项目结构如下所示

我正在寻找一种在根 node_modules 文件夹中概括常见依赖项的方法,这样每个包在运行时不会提取自己的节点包副本,lerna exec -- npm install而是使用位于整体存储库根目录的那个,因此我们避免安装多个 repo 中的同一个包,因此,减少了项目的大小。

我已经看到了一些解决方案,包括在项目之间建立一些符号链接,但这似乎不是一门精确的科学,因为符号链接支持非常依赖于操作系统。此外,这似乎不是一种受支持的方式。

目前,我们才刚刚开始,在运行lerna exec -- npm install项目后,磁盘上已经有大约 350mb,第一次从 npm 中提取所有内容大约需要 5 分钟。随着项目会随着时间的推移而增长,这个时间也会随着时间的推移而延长......

因此,为了恢复一切,我正在寻找一种方法来提取 repo 根目录下的 node_modules 文件夹中的公共依赖项,并使子包从该文件夹中提取它们的公共依赖项,而不是每次都获取自己的副本。

0 投票
3 回答
7068 浏览

npm - 将 Lerna 与 React Native 一起使用?

是否可以将 Lerna ( lernajs.io ) 与 React Native 一起使用?我正在尝试使用以下结构创建新项目:

lerna bootstrapcoreor似乎没有任何问题web,但是mobile(这是一个 React Native 项目)拒绝找到该myapp-core模块。

npm link我记得在 React Native 中存在一些问题。这是造成问题的原因吗?这个功能最终会存在吗?

0 投票
1 回答
707 浏览

node.js - lerna exec中的bash替换不起作用

我有这个命令可以打印出 lerna 项目中所有包的所有文件夹名称。

我有这个命令应该用文件夹的名称替换 package.json 中每个 lerna 包的名称。它使用替换。

问题是它将包命名为包含整个 lerna 包的文件夹的名称。

这做同样的事情。它一遍又一遍地记录父 lerna 包的名称。

Bash 替换不允许右侧的命令exec在它自己的进程中运行,它在有机会运行它之前进行编译。

如何在 bash 中使用替换而不保存参数的输出,以允许运行时处理替换的新值?

0 投票
1 回答
1156 浏览

git - 在 monorepo 的模块之间分离提交消息

我有一个这样的全栈项目:

我使用 Lerna,以便我可以将myProjectCommon其用作内部依赖项。

如果我决定做一个 monorepo,我会做这样的事情:

我看到的一个主要问题是,我会将所有包的提交历史混合在一起。

这种配置,是否有工具可以让我查看特定包的提交历史记录?

或者是为每个包做单独的 repos 的最佳解决方案,并将它们用作 git 子模块,如下所示:

0 投票
0 回答
869 浏览

webpack - Lerna 和 webpack 别名问题

想象两个项目(例如 my-app 和 my-ui)使用 webpack 别名将“组件”解析为“./src/components”。我使用 Lerna 在本地“链接”这个项目并简化开发,my-ui 是 my-app 的依赖项(设置在它的 package.json 中)并像这样导入:

我的应用

/src/main.js :

我的用户界面

/src/main.js

/src/components/button/main.js

当 MyApp 启动时,MyUI 尝试解析“ MyApp/src/components/ ”中的 Button,而不是“ MyApp/node_modules/my-ui/src/components ”或“ MyApp/node_modules/my-ui/lib/app.js ”。我不知道如何解决这个问题!

我的 Webpack 配置中的解析部分:

getPath 方法在哪里:

0 投票
1 回答
2582 浏览

javascript - Jest 无法从 npm 链接模块转换导入

我有一个包含多个模块的项目(使用Lerna),我想使用 Jest 来运行测试。但是,当我测试使用共享模块(通过 Lerna 的 npm 链接模块)的代码时,似乎没有正确应用 Babel,并且出现以下错误:

我的项目结构是这样的:

webnative需要shared模块。当我进入shared目录并在 Jest 中运行本地测试时,一切正常。如果我在目录中运行 Jest 测试,web只要我包含来自shared.

这是一个导致错误的超级简单的测试:

我的.babelrc样子是这样的:

我尝试了我能找到的一切,包括:

  • 不同的 Babel 配置,包括一个带有es2015预设并modules为测试环境启用的配置
  • 手动设置transformbabel-jest 的选项
  • 如前所述,Jest 可以在shared模块中执行,因此 Jest 也babel-jest可以安装在那里。
0 投票
5 回答
13979 浏览

lerna - 将 Lerna 与未发布的包一起使用

我正在尝试使用 Lerna 设置我的 monorepo。该计划是通过提取应该是他们自己的包的代码块来重构现有项目。我已经运行了lerna init,我当前的设置如下所示:

我的理解是,lerna bootstrap此时应该位于项目中package1并将其符号链接到prior-existing-project. /node_modules/new-refactored-package/来自lerna 的自述文件

引导当前 Lerna 存储库中的包。安装它们的所有依赖项并链接任何交叉依赖项。

运行时,此命令将:

  • npm 安装每个包的所有外部依赖项。
  • 将所有相互依赖的 Lerna 包符号链接在一起。
  • npm 预发布所有引导程序包。

但是,当我运行它时,lerna 会尝试npm install new-refactored-package

npm 错误!404 注册表在https://registry.npmjs.org/new-refactored-package上为 GET 返回 404

我是不是误会了?我是否首先必须将依赖的包发布到npm

0 投票
1 回答
4234 浏览

react-native - 将本地包导入为不在 React-Native 项目中的模块

在一个 React-Native 项目中,我发现如果你的本地包有一个有效的package.json文件,你可以像一个模块一样导入它,node_modules而不需要相对路径。

例如,

foo在这种情况下,您可以使用以下任一方法导入包bar.js

或者

打包程序将尝试查找并使用任何包含package.json匹配需求的本地模块。

问题

我有一个不在 React-Native 项目中的本地包,我该如何导入它

我试着用

但它未能找到该模块。

react-native在为开发打包或为生产打包时如何使用来查找包?

0 投票
1 回答
1075 浏览

npm - 当它们已经在主供应商文件中时,Webpack 会继续包含依赖项中的 node_modules

我正在使用自制组件库在我的项目之间共享组件。问题是,即使在使用创作库指南之后,webpack它仍然在我的主构建中包含这些依赖项,我不知道这是由什么设置引起的......

构建分析(捆绑我的应用程序时)

在这里你可以看到node_moduleswizer-components/node_modules。包括react-dom两次(和其他)

在此处输入图像描述

构建分析(组件的)

如您所见,此处未捆绑任何 node_modules ...

在此处输入图像描述

设置文件

因为我找不到问题所在,所以我创建了配置文件的要点

  • webpack.config.js(组件库的)
  • webpack.config.production.js(应用程序)

设置

正如信息一样,我正在使用monorepo设置与lernanpm linkwizer-components)的依赖关系,而无需将其npm作为模块推送。这可能是 webpack 认为它需要重新添加react(和其他)的问题吗?