我正在尝试包含我的node_modules
,以便Babel
将它们与我的src文件一起转换。
这样做的背景是:我有一个包含多个包的monorepo
,但我不想为每个包设置Webpack
/ Babel
。所以我的想法是告诉我的主项目中的Webpack
/ Babel
来转换我的来源导入的node_modules
。
我为此而读,我需要这样做才能告诉Babel
不要忽略我的node_modules
:
require('babel-register')({
ignore: false
});
现在这给了我错误,因为有很多软件包不是我的,不会与Babel
一起玩。但我也可以告诉Babel
只包含特定的包,我喜欢这样:
require('babel-register')({
only: /@elmc/
});
因为我的包的范围是@elmc/package-name
。这解决了上面的问题,但现在我自己的包仍然没有被翻译。我收到一个错误说:
.- collection-browser / CollectionBrowser.js模块解析失败: 意外的令牌(23:13)您可能需要一个合适的加载器来处理 这个文件类型。
| render() { | return <div>asd</div>; | }
他似乎没有透露我的JSX
,而是抛出一个错误。我将babel-register
电话放在我的Webpack
配置中。我从Webpack
获得了create-react-app
配置,因此它非常冗长,但这里完全是:
https://gist.github.com/LukasBombach/fe84a563ec9268dee32204d429763d5b
答案 0 :(得分:0)
好的我现在正在使用它,这条评论解释了它:
https://github.com/lerna/lerna/issues/487#issuecomment-302341620
- 将resolve.symlinks设置为false。这是下一步所必需的。
- 添加 / @ foo / regex到使用规则的include数组 巴贝尔装载机。因为我们关闭了先前解析的符号链接 点,monorepo的其他包将解决 node_modules / @ foo /,而不是../。这是 在next.js问题中建议,所以我只是去看看他们是怎么回事 实施它并做了类似的事情。
- 更改node_modules resolve.modules to path.resolve(__ dirname,'node_modules')。 否则webpack 2试图要求依赖 本地链接包的node_modules。但那可能是因为我 使用file:../ bar在package.json中指定它们,因为我没有 将它们发布到任
- 设置Jest以在@foo下转换文件 范围。这意味着添加“transformIgnorePatterns”: [“/ node_modules /(?!@ foo)”]到Jest的配置。 实/开玩笑#2550
醇>
但是,我不得不执行第3步,而且这毕竟不能很好地工作,因为每次我更改依赖项时都必须重新启动我的Webpack dev服务器。所以我想这个问题的答案是:“这是怎么做的,但它唯一可能的结果(这个解决方案)不太有效”