【问题标题】:How to npm-link other project如何 npm-link 其他项目
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 你是什么意思,更多的错误?那是错误信息。而且我不在乎有一个 npm 仿真。我很想使用 npm-link,但它不起作用。
    猜你喜欢
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多