gpt4 book ai didi

node.js - 如何收缩使用 'npm link' 创建的符号链接(symbolic link) Node 模块?

转载 作者:太空宇宙 更新时间:2023-11-03 22:30:07 25 4
gpt4 key购买 nike

我同时处理两个存储库。其中一个依赖于另一个(在 package.json 依赖项中列出)。

因此,我在 other 中使用 npm link ..\theOne 来同时处理两个模块。因此,我可以在另一个模块上测试对一个模块的修改。问题是在这个 other 模块上执行 npm Shrinkwrap 时:它会生成如下错误:

npm 错误!无关的 C:\other\node_modules\theOne\node_modules\{xxxx}

{xxxx} 是一个开发依赖项,对于 npm 来说显得无关紧要。

有人成功地用符号链接(symbolic link)将模块收缩包装到另一个模块吗?

注意:

  • npm 3.10.3
  • Node 6.3.0

最佳答案

我在这里发布了一个解决方案。它没有解释如何收缩符号链接(symbolic link),但我找到了一个更好的解决方法,可以通过这些模块之间的依赖关系一次开发多个模块。

解决方案是使用 npm link 的替代方案来处理开发过程中的模块关系:而不是将文件夹A链接到另一个文件夹B(又名符号链接(symbolic link)),解决方案是将 B 中的修改文件复制到文件夹 A 中。该解决方案非常强大,因为它避免了由于 B 中不需要的模块而导致 Node 模块收缩错误。如何做:

在 Mac 上

您可以使用wml :Wml 监听某个文件夹中的更改(使用 Watchman)并将更改的文件复制到另一个文件夹中。我从不使用它,但我使用 Mac 的队友每天都使用它。

在窗口上

我使用DSynchronize (单击此链接后,向下滚动以查看可执行文件)。 DSynchronize 是一个独立的实用程序,可让您定期同步两个或多个文件夹。您可以从复制中排除某些文件夹(例如 node_modules)或包含其他文件夹(例如 lib)。配置文件DSynchronize.ini 可以使用文本编辑器进行编辑。例如:

Source0000=-C:\DEV\workspace\js-common
Destination0000=-C:\DEV\workspace\connexme\node_modules\js-common
Filter0000=
VolumeSerialOri0000=407325536
VolumeSerialDest0000=407325536
ExcludeFilter0000=0
NoSubDirectory0000=0
NoFilterDirectory0000=1
DateBeforeToExcludeFiles0000=00:00:00
FilterFolder0000=\.git|\.vscode|\node_modules

此配置会将文件从 C:\DEV\workspace\js-common 复制到 C:\DEV\workspace\connexme\node_modules\js-common。这样,当我 npm Shrinkwrap 我的项目 connexme 时,我不会从 js-common 文件夹中获取无关的错误文件夹。

关于编辑 DSynchronizeDSynchronize.ini 的最后三件事配置:

  • 使用或关闭它会将配置保存在 DSynchronize.ini 中,因此在编辑 DSynchronize.ini 和关闭它时要小心。它将覆盖 DSynchronize.ini
  • 确保每个变量都是唯一的。示例:Source0000Source0001...
  • 确保每个源/目标都存在所有变量(请参见上面的示例)。

关于node.js - 如何收缩使用 'npm link' 创建的符号链接(symbolic link) Node 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38324282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com