【发布时间】:2020-09-26 15:15:36
【问题描述】:
我正在尝试编写一个库模块,最终应该由其他模块导入,就像material-ui或react-query一样。
我目前的设置是这样的:
myRoot
|-- lib
| |-- src
| |-- config-overwrides.js (I'm using react-app-rewired, but I think it's not relevant)
| |-- package.json
| |-- ... other stuff
|-- consumer
| |-- src
| |-- package.json
| |-- ... other stuff
请注意,consumer 现在是一个应用程序,但 lib 应该被超过 只是另一个应用程序。
目前,举个例子来说,两者都只是一个“Hello, World!”,我正试图让import myLib from 'lib' 在consumer/src/App.jsx 内部工作。
我得到的是:
SyntaxError: C:\Users\...\lib\src\index.js: Support for the experimental syntax 'jsx' isn't currently enabled (7:3):
5 | function MountApp(element) {
6 | ReactDOM.render(
> 7 | <React.StrictMode>
| ^
8 | <App />
9 | </React.StrictMode>,
10 | element
Add @babel/plugin-transform-react-jsx (https://git.io/vb4yd) to the 'plugins' section of your Babel config to enable transformation.
我试过了:
-
在create-react-library 中查看它是如何完成的,但他们在示例应用程序 package.json 中使用了对周围项目的直接引用。见here。这意味着我的应用程序只能包含其中一个库,这有点违背了拥有模块的想法。
-
使用npm link,但遇到了与here 描述的相同问题。上面的描述实际上是我试图复制他的方式。这是我得到一些工作的结束。
-
修补 webpack 配置,并将
react作为 peerDependency 或 devDependency,但没有真正的运气。但我对此一无所知,所以这更像是一次试错,同时希望它能够偶然发挥作用或给出一个好的错误信息。
我真正想要的:
只是一种拥有库的方法,我可以通过import myStuff from 'myLibrary' 随意包含它,而无需将其推送到 npm(公司政策禁止这样做)。
【问题讨论】:
标签: node.js reactjs npm webpack npm-link