问题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
目录。