当前位置: 首页 > 知识库问答 >
问题:

前端 - 自定义组件A在项目B中引用时,如何解决未安装第三方依赖的问题?

阎宝
2024-05-31

我自定义了一个组件A,在项目B中引用,采用的是本地引入的方式,如下
命令:npm install ../组件A
现在我在组件A中使用了一个第三方的虚拟滚动组件,virtual-tree。然后项目B中会提示
image.png
当我在项目B中也安装了virtual-tree后,这个问题就解决了

  1. 在自定义的组件中引用了第三方组件,主项目中也必须安装这个依赖嘛,如果是这样是否有些不合理
  2. 在我以本地引入的方式在项目B中安装组件A后,发现node_modules/组件A中带上了.svn文件(公司用的SVN),请问有什么方法可以在安装的时候忽略掉.svn文件嘛

在这次项目中关于自定义组件遇到了很多问题,如果有大佬擅长这块,希望能为我提供一些帮助,谢谢

共有1个答案

薛钧
2024-05-31

问题1:在自定义的组件中引用了第三方组件,主项目中也必须安装这个依赖嘛,如果是这样是否有些不合理

答案
是的,如果自定义组件A依赖于第三方库(例如virtual-tree),那么任何使用组件A的项目(比如项目B)都必须显式安装这些依赖。这是npm/yarn等包管理器的工作方式决定的。虽然这看起来可能有些不合理,特别是当组件A已经被打包成了一个npm包的时候,但实际上这是为了确保项目依赖的完整性和可预测性。每个项目都应该能够明确地知道它依赖了哪些包,以及这些包的版本,这样可以避免因为不同版本的依赖包导致的冲突或不可预期的行为。

问题2:在以本地引入的方式在项目B中安装组件A后,发现node_modules/组件A中带上了.svn文件(公司用的SVN),请问有什么方法可以在安装的时候忽略掉.svn文件嘛

答案
在npm/yarn中,可以通过在项目的.npmignore.yarnignore文件中列出不需要的文件或目录来忽略它们。如果你不希望.svn目录被包含在npm包中,你应该在组件A的根目录下创建一个.npmignore文件(如果还没有的话),并在其中添加.svn。这样,当你从组件A的目录发布npm包时,.svn目录就不会被包含进去。

如果.npmignore文件已经存在,确保.svn已经被添加到其中。如果还没有这个文件,你可以创建一个,并添加以下内容:

.svn/

这将会告诉npm忽略所有.svn目录和文件。然后,当你重新构建并发布组件A的npm包时,.svn目录就不会再出现在node_modules/组件A中了。

请注意,如果你在本地安装组件A时遇到这个问题(例如使用npm install ../组件A),那么这可能是因为npm在链接本地包时直接复制了文件,而没有考虑.npmignore。在这种情况下,你可以尝试先删除node_modules目录和package-lock.json(或yarn.lock),然后再重新运行安装命令,以确保npm正确处理.npmignore文件中的忽略规则。如果问题依旧存在,你可能需要手动从node_modules/组件A中删除.svn目录。

 类似资料:
  • 我已经按照这份指南使用Gradle创建了一个自定义任务。http://www.ysofters.com/2015/02/26/how-to-create-gradle-project-with-custom-task-classes-in-groovy/I还查看了gradle文档。https://docs.gradle.org/current/userguide/custom_tasks.html

  • 问题内容: 我已按照本指南使用Gradle创建自定义任务。 http://www.ysofters.com/2015/02/26/how-to-create- gradle-project-with-custom-task-classes-in- groovy/ 我也查看了gradle文档。https://docs.gradle.org/current/userguide/custom_tasks

  • 我在一个多模块的maven项目上工作,并有第三方jar在中央或公共存储库中不可用,我甚至不想放在公共Repo上。我在父pom中提供以下插件指令,以便在子项目中解决jar的依赖性之前,在本地maven存储库中安装jar。 现在我在孩子项目中提供依赖项作为; 但是我构建了这个项目,它成功地在本地maven存储库中添加了依赖项(将第三方jar放在。m2文件夹中),但同时它也给出了以下错误。看起来,它也在

  • Apache ShardingSphere 在数据库治理模块使用 SPI 方式载入数据到配置中心和注册中心,进行实例熔断和数据库禁用。 目前,Apache ShardingSphere 内部支持 ZooKeeper,Etcd等常用的配置中心/注册中心。 此外,开发者可以使用其他第三方组件,并通过 SPI 的方式注入到 Apache ShardingSphere,从而使用该配置中心和注册中心,实现数

  • 引入第三方js跨域问题,如何解决? 项目中引入了“天地图”js库, 但是自己的站点是“https”协议,发布站点后,发现请求的库里面重定向到了“http”开头的地址,导致引入该库报错,导致无法使用天地图, 演示: 访问官方demo:http://lbs.tianditu.gov.cn/api/js4.0/examples.html 打开f12,你能看到都是重定向(307)的http,哪怕你把例子中

  • 在 Ubuntu 系统中,使用了源码的方式安装了一个软件,因为某些特性需要源码安装。该软件有一些第三方模块,如果使用 apt-get 的方式安装第三方模块,会提示需要该软件安装后才可以安装这些第三方模块,也就是 apt-get 的方式是无法知道通过源码方式已经安装了的软件的。 现在安装第三方模块也采用了源码方式进行安装,但是这样比较麻烦,有没有更好的方式来安装这些第三方模块?