问题标签 [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.
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.jsusage
正在使用 babel 并且应该使用babel-loader
然后遍历应该继续
当我尝试编译时babel
,奇怪的是请求其他部门。
{ exclude: /(node_modules|bower_components)/ }
启用后我得到了这个。
捆绑包的类型
不babel-loader
排除node_modules
找不到模块“@reggi/beta”
与babel-loader
排除node_modules
找不到模块 \"/Users/thomasreggi/Desktop/webpack-issue/packages/beta\"
没有babel-loader
& 将代码切换到require
完美地包括一切。
npm - 单体仓库和多个 node_modules 文件夹
我有一个使用单体存储库的项目。每个包都有自己的 package.json 文件来管理所述包的依赖关系。我lerna
用来在我们的 monorepo 应用程序的所有“子包”中安装包。
当前的项目结构如下所示
我正在寻找一种在根 node_modules 文件夹中概括常见依赖项的方法,这样每个包在运行时不会提取自己的节点包副本,lerna exec -- npm install
而是使用位于整体存储库根目录的那个,因此我们避免安装多个 repo 中的同一个包,因此,减少了项目的大小。
我已经看到了一些解决方案,包括在项目之间建立一些符号链接,但这似乎不是一门精确的科学,因为符号链接支持非常依赖于操作系统。此外,这似乎不是一种受支持的方式。
目前,我们才刚刚开始,在运行lerna exec -- npm install
项目后,磁盘上已经有大约 350mb,第一次从 npm 中提取所有内容大约需要 5 分钟。随着项目会随着时间的推移而增长,这个时间也会随着时间的推移而延长......
因此,为了恢复一切,我正在寻找一种方法来提取 repo 根目录下的 node_modules 文件夹中的公共依赖项,并使子包从该文件夹中提取它们的公共依赖项,而不是每次都获取自己的副本。
npm - 将 Lerna 与 React Native 一起使用?
是否可以将 Lerna ( lernajs.io ) 与 React Native 一起使用?我正在尝试使用以下结构创建新项目:
lerna bootstrap
core
or似乎没有任何问题web
,但是mobile
(这是一个 React Native 项目)拒绝找到该myapp-core
模块。
npm link
我记得在 React Native 中存在一些问题。这是造成问题的原因吗?这个功能最终会存在吗?
node.js - lerna exec中的bash替换不起作用
我有这个命令可以打印出 lerna 项目中所有包的所有文件夹名称。
我有这个命令应该用文件夹的名称替换 package.json 中每个 lerna 包的名称。它使用替换。
问题是它将包命名为包含整个 lerna 包的文件夹的名称。
这做同样的事情。它一遍又一遍地记录父 lerna 包的名称。
Bash 替换不允许右侧的命令exec
在它自己的进程中运行,它在有机会运行它之前进行编译。
如何在 bash 中使用替换而不保存参数的输出,以允许运行时处理替换的新值?
git - 在 monorepo 的模块之间分离提交消息
我有一个这样的全栈项目:
我使用 Lerna,以便我可以将myProjectCommon
其用作内部依赖项。
如果我决定做一个 monorepo,我会做这样的事情:
我看到的一个主要问题是,我会将所有包的提交历史混合在一起。
这种配置,是否有工具可以让我查看特定包的提交历史记录?
或者是为每个包做单独的 repos 的最佳解决方案,并将它们用作 git 子模块,如下所示:
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 方法在哪里:
javascript - Jest 无法从 npm 链接模块转换导入
我有一个包含多个模块的项目(使用Lerna),我想使用 Jest 来运行测试。但是,当我测试使用共享模块(通过 Lerna 的 npm 链接模块)的代码时,似乎没有正确应用 Babel,并且出现以下错误:
我的项目结构是这样的:
web
并native
需要shared
模块。当我进入shared
目录并在 Jest 中运行本地测试时,一切正常。如果我在目录中运行 Jest 测试,web
只要我包含来自shared
.
这是一个导致错误的超级简单的测试:
我的.babelrc
样子是这样的:
我尝试了我能找到的一切,包括:
- 不同的 Babel 配置,包括一个带有
es2015
预设并modules
为测试环境启用的配置 - 手动设置
transform
babel-jest 的选项 - 如前所述,Jest 可以在
shared
模块中执行,因此 Jest 也babel-jest
可以安装在那里。
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
?
react-native - 将本地包导入为不在 React-Native 项目中的模块
在一个 React-Native 项目中,我发现如果你的本地包有一个有效的package.json
文件,你可以像一个模块一样导入它,node_modules
而不需要相对路径。
例如,
foo
在这种情况下,您可以使用以下任一方法导入包bar.js
:
或者
打包程序将尝试查找并使用任何包含package.json
匹配需求的本地模块。
问题
我有一个不在 React-Native 项目中的本地包,我该如何导入它
我试着用
但它未能找到该模块。
react-native
在为开发打包或为生产打包时如何使用来查找包?
npm - 当它们已经在主供应商文件中时,Webpack 会继续包含依赖项中的 node_modules
我正在使用自制组件库在我的项目之间共享组件。问题是,即使在使用创作库指南之后,webpack
它仍然在我的主构建中包含这些依赖项,我不知道这是由什么设置引起的......
构建分析(捆绑我的应用程序时)
在这里你可以看到node_modules
和wizer-components/node_modules
。包括react-dom
两次(和其他)
构建分析(组件的)
如您所见,此处未捆绑任何 node_modules ...
设置文件
因为我找不到问题所在,所以我创建了配置文件的要点:
webpack.config.js
(组件库的)webpack.config.production.js
(应用程序)
设置
正如信息一样,我正在使用monorepo设置与lerna
(npm link
wizer-components)的依赖关系,而无需将其npm
作为模块推送。这可能是 webpack 认为它需要重新添加react
(和其他)的问题吗?