0

我正在尝试编写一个库模块,最终应该由其他模块导入,就像 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

请注意,消费者现在是一个应用程序,但 lib 应该被不止一个其他应用程序使用。

目前,为了举例,两者都只是一个“你好,世界!”,我正试图让这条线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 中使用了对周围项目的直接引用。见这里。这意味着我的应用程序只能包含其中一个库,这有点违背了拥有模块的想法。

  • 使用npm 链接,但遇到了此处描述的相同问题。上面的描述实际上是我试图复制他的方式。这是我得到一些工作的结束。

  • 修补 webpack 配置,并拥有reactpeerDependency 或 devDependency,但没有真正的运气。但我对此一无所知,所以这更像是一次试错,同时希望它是偶然的,或者给出一个好的错误信息。

我真正想要的:

只是一种拥有一个库的方法,我可以通过 随意包含import myStuff from 'myLibrary'它,而无需将其推送到 npm(公司政策禁止这样做)。

4

1 回答 1

0

很高兴能够看到有关此错误的更多信息,但我可以建议您使用Verdaccio吗?npm 链接应该可以正常工作,但是如果您真的想模拟 npm,您可以使用 verdaccio 创建一个本地私有 npm,并将该软件包安装到您需要的每个项目中。唯一的事情是您需要将 npm 配置为首先查看 verdaccio。

于 2020-09-26T15:50:19.960 回答