处理节点中子模块的本地依赖性的最佳方法是什么?
what is the best way to deal with local dependencies on submodules in node?
在我们的环境中,我们有一个节点应用程序,它依赖于一个子模块,该子模块也是一个节点模块。我们 运行 使用 npm link 遇到问题,所以我们尝试使用本地依赖项(即将 package.json 中的依赖项的值设置为 file:./path/to/dep)。这样做的问题是,当您在子模块中进行更改时,您必须修改版本并在父模块中更新它。有没有更好的方法来处理这种类型的依赖关系,这样我就可以在我的子模块中进行更改并将其传播到父模块?
当您在子模块中进行更改时,这意味着您必须在父仓库中进行提交(以便记录新的gitlink, a special entry in the index 记住你的子模块的新 SHA1)
为什么不利用该提交机会自动执行一个脚本,该脚本将使用正确的信息修改 package.json
文件?
从内容过滤器驱动程序调用 'clean' script:
(图片显示在“Customizing Git - Git Attributes", from "Pro Git book”)
干净的脚本是:
- 用
git config filter.<filtername>.clean ./<filterscript>
声明
- 用于
.gitattributes
file。
它的功能是获取 npm 子模块的版本并适当地更新 package.json
文件。
如果您希望在子模块中所做的更改立即反映在主模块中,我知道的唯一方法是从主模块的 node_modules/
创建一个符号 link目录到你的子模块的目录。我真的建议找出为什么 npm link
对你不起作用,因为这是实现这一点的最好方法。但是,如果您愿意,也可以手动创建 link。
例如,如果您的子模块的包名称是 'wonderful' 并且您的文件结构如下所示:
main-module/
sub-module/
然后你可以创建一个符号 link main-module/node_modules/wonderful
指向 main-module/sub-module
通过 运行 从主模块的根目录执行以下命令:
ln -s ../sub-module ./node_modules/wonderful
然后您在子模块中所做的任何更改都将立即用于主模块。
两个注意事项:
- 在创建 link 之前,确保
main-module/node_modules/wonderful
不作为 npm install
编辑的目录存在,否则它将无法工作。
- 当你再次
npm install
时,它会覆盖你的符号link,所以如果你想经常执行上面的命令,把它放在shell脚本中。
在我们的环境中,我们有一个节点应用程序,它依赖于一个子模块,该子模块也是一个节点模块。我们 运行 使用 npm link 遇到问题,所以我们尝试使用本地依赖项(即将 package.json 中的依赖项的值设置为 file:./path/to/dep)。这样做的问题是,当您在子模块中进行更改时,您必须修改版本并在父模块中更新它。有没有更好的方法来处理这种类型的依赖关系,这样我就可以在我的子模块中进行更改并将其传播到父模块?
当您在子模块中进行更改时,这意味着您必须在父仓库中进行提交(以便记录新的gitlink, a special entry in the index 记住你的子模块的新 SHA1)
为什么不利用该提交机会自动执行一个脚本,该脚本将使用正确的信息修改 package.json
文件?
从内容过滤器驱动程序调用 'clean' script:
(图片显示在“Customizing Git - Git Attributes", from "Pro Git book”)
干净的脚本是:
- 用
git config filter.<filtername>.clean ./<filterscript>
声明
- 用于
.gitattributes
file。
它的功能是获取 npm 子模块的版本并适当地更新 package.json
文件。
如果您希望在子模块中所做的更改立即反映在主模块中,我知道的唯一方法是从主模块的 node_modules/
创建一个符号 link目录到你的子模块的目录。我真的建议找出为什么 npm link
对你不起作用,因为这是实现这一点的最好方法。但是,如果您愿意,也可以手动创建 link。
例如,如果您的子模块的包名称是 'wonderful' 并且您的文件结构如下所示:
main-module/
sub-module/
然后你可以创建一个符号 link main-module/node_modules/wonderful
指向 main-module/sub-module
通过 运行 从主模块的根目录执行以下命令:
ln -s ../sub-module ./node_modules/wonderful
然后您在子模块中所做的任何更改都将立即用于主模块。
两个注意事项:
- 在创建 link 之前,确保
main-module/node_modules/wonderful
不作为npm install
编辑的目录存在,否则它将无法工作。 - 当你再次
npm install
时,它会覆盖你的符号link,所以如果你想经常执行上面的命令,把它放在shell脚本中。