我有几个ReactJS项目,并且我开始有很多可重用的组件。我不想将它们发布到npm或将它们与项目根目录中的导入的node_modules目录混合。他们应该去哪里?

我的项目如下所示:


项目1 /


node_modules /
src /


index.js
A.jsx


项目2 /


node_modules /
src /


index.js
A.jsx




A.jsx定义了一个可重用的组件,我只是将文件复制到任何地方...我只想把它放在一个地方,我的项目将它与import A from 'A'一起使用。

我曾尝试在A.jsxsrc/中建立到node_modules/的符号链接,但无法编译,例如react-scripts无法处理它们。您如何解决这个问题?谢谢你的帮助!

最佳答案

我不希望它们与导入的node_modules混合


为什么不?将可重用组件提取到自己的库中,这是使它们可重用的最佳方法。一旦提取它们,您就可以通过仅导入所需的内容来组成项目。您也可以编写自己的测试,而无需运行整个项目的测试。最后,您可以独立于项目处理组件的不同版本。


  我试图在src /或node_modules /中建立到A.jsx的符号链接,但是……


将文件从一个项目符号链接到另一个项目可能是一个好主意,但是您是在项目之间创建依赖关系,而不是在项目和组件库之间创建依赖关系。如果要部署使用项目A中的组件的项目B,则需要部署两个项目并在服务器上重新创建符号链接。此外,项目A可能比简单的组件库具有更大的依赖项(具有自己的依赖项)。


  我不想将它们发布到npm


如果您不想在NPM上发布组件(我也不做),我仍然建议您将组件提取到自己的存储库中(GitLab有免费的私有存储库)。

然后,您可以像这样从存储库直接安装库:

npm install git+ssh://git@git.mydomain.com:Username/Repository-name


它将在您的package.json中创建一个条目:

"Repository-name": "git+ssh://git@git.mydomain.com:Username/Repository-name"


然后,您可以导入可重复使用的组件:

import { ComponentA, ComponentB } from 'Repository-name'

07-24 09:44
查看更多