【问题标题】:How to shrinkwrap symlink node module created with 'npm link'?如何收缩使用“npm link”创建的符号链接节点模块?
【发布时间】:2016-07-12 09:00:06
【问题描述】:

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

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

npm ERR! extraneous C:\other\node_modules\theOne\node_modules\{xxxx}

{xxxx} 是一个开发依赖项,对于 npm 来说似乎是无关的。

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

注意:

  • npm 3.10.3
  • 节点 6.3.0

【问题讨论】:

  • 对我来说,shrinkwrap 本身确实有效,但是随后对 npm link theOne && npm install 的任何尝试都失败了,说“未找到:theOne”
  • 你试过npm link ../theOne 吗?我的意思是,使用相对路径?
  • 其实我的问题是由于打字稿。修复后它工作正常,是的 npm shrinkwrap 也工作正常。也许在 plunker 中分享您的代码?

标签: node.js npm symlink shrinkwrap npm-shrinkwrap


【解决方案1】:

我在这里发布一个解决方案。它没有解释如何收缩包装符号链接,但我找到了一个更好的解决方法来一次开发多个模块,这些模块之间存在依赖关系。

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

在 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我的项目连接时,我就不会从js-common文件夹中得到无关的坏文件夹。

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

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

【讨论】:

    猜你喜欢
    • 2018-04-26
    • 2016-12-14
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    相关资源
    最近更新 更多