gpt4 book ai didi

node.js - Node : multiple projects workflow

转载 作者:搜寻专家 更新时间:2023-10-31 22:52:41 25 4
gpt4 key购买 nike

假设你有这样的设置:


项目1
package.json {“版本”:“0.0.1”}
项目2
package.json { “版本”:“0.0.1”,
“依赖项”:{“project1”:“^0.0.1”]}
主要的
package.json ("dependencies": { "project1": "^0.0.1"}

Project1、project2、projectXxxx... 和 main 必须一起更改。它们可能所有一直改变(如果不依赖于 project1、project2 等,几乎不可能在 main 中实现任何东西......这不是 很少更改库的场景。)

你如何避免这两个陷阱:

  • 您可以在本地使用“npm 链接”。但是,每个开发人员都必须手动在所有项目中以正确的顺序调用“npm link”。新开发人员(或刚刚 checkout 新开发分支的人员)的工作流程是:

    • CD 主
    • npm 安装
    • 出现错误,因为缺少 project2
    • npm 链接 ../project2
    • 出现错误,因为缺少 project1
    • cd ../project2
    • npm 链接 ../project1
    • npm 安装
    • CD 主
    • npm 安装

让它超过两个项目,这太疯狂了。

  • 或者您可以使用“预安装”脚本为您创建“npm 链接”(如许多其他 SO 问题中所建议的那样),但实际上,您不能,因为文档告诉您 使用预安装脚本:https://www.npmjs.org/doc/scripts.html

tl;dr Don't use install. Use a .gyp file for compilation, and prepublish for anything else.

You should almost never have to explicitly set a preinstall or install script. If you are doing this, please consider if there is another option.

The only valid use of install or preinstall scripts is for compilation which must be done on the target architecture.

  • 或者您可以在每次更改某些内容时将每个模块发布到私有(private)存储库。工作流程(据我所知):

    • 编辑项目1中的一个文件
    • 凹凸版
    • npm 发布项目 1
    • 回到项目2
    • npm 安装
    • 编辑
    • npm 发布项目 1
    • 回到主界面
    • npm 安装
    • 编辑
    • 意识到你犯了一个错误并重新开始。疯狂也是。

如您所见,这些都是 Not Acceptable 。

那么,为了获得合理的工作流程,您会做出哪些改变?

您是否将所有内容都放在同一个项目中? (遗憾的是,这对我来说是 Not Acceptable ,因为其他地方的其他项目也需要 project1。)

我是否缺少执行此操作的“npm xxxxx”命令?

谢谢

最佳答案

听起来通常是小麻烦的事情正在成为您的大问题,因为您的项目设计没有实现足够松散的耦合。从根本上说,我认为你有一种代码味道,在某种形式或另一种形式下,main、project1 和 project2 实际上仍然是一个整体应用程序,应该是一个单一的模块,或者 project1 没有被正确抽象,所以它可以被拆分和使用主要2。继续重构它,在某个时候您会灵光一闪,找到一个更干净的组织。

不过,与此同时,我确实有一个对您有帮助的建议。当我处于类似情况时,我们将所有帮助程序模块作为单独的项目保存在它们自己的私有(private) github 存储库中,当新开发人员克隆 main 时,我们有一个 shell 脚本来设置以下结构,关键是 node_modules 比正常目录高一个目录:

ROOT
main
project1
project2
node_modules
project1 (symlink to ../project1)
project2 {symlink to ../project2)

这允许两种开发模式:

  • cd main && npm install 会让你进入正常模式,并会像往常一样在 ROOT/main/node_modules/project1 中安装兄弟项目
    • 主要在 main 上工作时使用它
    • 在提交更新到 main/package.json
    • 之前进行最终测试时也使用它
  • cd main && rm -rf node_modules/project[12] 会让你进入同步开发模式
    • main 中的代码执行 require("project1") 时,它将从本地 ROOT/node_modules/project1 符号链接(symbolic link)中找到它,您可以快速编辑任何项目中的代码。无需修改版本号、推送提交或 npm 安装任何东西来测试更改。
    • 完成后,cd main && npm install 让您回到正常模式

由于使用了符号链接(symbolic link),这在 Windows 上可能无法正常工作,仅供引用。

您可以在 main 中编写一个 shell 脚本,当您的开发人员首次克隆 main 存储库时,可以运行该脚本来设置此结构。

关于node.js - Node : multiple projects workflow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24913300/

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