Node.js 我们与客户共享一个文件夹&;服务器, 情况: 客户端和服务器都共享一个文件夹shared 当我们在开发流程中更改共享时,我们希望相应的引用在客户和服务器中更改 服务器之所以能工作,是因为它与npm一起工作,共享和服务器使用npm 客户不工作,使用纱线 混合类型脚本和js项目 代码结构: 试过什么

Node.js 我们与客户共享一个文件夹&;服务器, 情况: 客户端和服务器都共享一个文件夹shared 当我们在开发流程中更改共享时,我们希望相应的引用在客户和服务器中更改 服务器之所以能工作,是因为它与npm一起工作,共享和服务器使用npm 客户不工作,使用纱线 混合类型脚本和js项目 代码结构: 试过什么,node.js,reactjs,typescript,webpack,yarnpkg,Node.js,Reactjs,Typescript,Webpack,Yarnpkg,建议的3项解决办法 在根目录下创建一个公用文件夹,只需要从文件中获取所需的文件。但最终可能会得到“long”require,例如require(“../../../../../../common/file”) long require不适用于webpack的分辨率,这不是一个好的解决方案 使用模块别名可避免该问题: 模块别名的行为方式似乎与下一个解决方案相同 您可以共用一个本地模块(使用文件:)并将其安装在package.json中 我们目前正在这样做,但我们仍然需要在更改时重

建议的3项解决办法

  • 在根目录下创建一个公用文件夹,只需要从文件中获取所需的文件。但最终可能会得到“long”require,例如require(“../../../../../../common/file”)

  • long require不适用于webpack的分辨率,这不是一个好的解决方案

  • 使用模块别名可避免该问题:

  • 模块别名的行为方式似乎与下一个解决方案相同

  • 您可以共用一个本地模块(使用文件:)并将其安装在package.json中

  • 我们目前正在这样做,但我们仍然需要在更改时重新安装
    共享
    文件夹,我们目前使用
    纱线升级共享
    ,这需要很长时间,并且仍然需要我们知道何时需要运行它

  • 此外,我们试图使
    纱线链接
    正常工作,但似乎链接不正确

  • 我们尝试使用
    后拉
    钩子运行
    纱线升级共享
    ,但每次拉都太慢,特别是因为不经常需要

  • 我们考虑过像Lerna这样的真正的mono回购“套餐”,但仍然不认为迁移成本是必要的

  • 在安装后脚本上同步链接文件夹,但此操作失败

  • 目标
    • 或者
      • 找到一种在
        dev
        environment中自动同步这些文件的方法
      • 找到一个手动安装/更新的解决方案-但速度很快,可以在每次拉动时运行
      • 找到一种方法,自动运行仅在需要时(大致)运行的
        共享
        ,而不是一直运行
      • 我想我们可以找到一种方法,在
        共享
        版本
        键发生任何更改时自动增加版本,然后对其进行跟踪,我们可以运行
        纱线安装
        ,这样就可以了

    找到的解决方案是我们使用的是React-Native,因此同步的正常步骤适用于IDE,但不适用于React-Native应用程序

    这是一篇很好的文章,介绍了如何使用metro bundler—但是对于Typescript,我们将其添加到了TSConfig,对于IDE,我们仍然需要使用
    文件:../shared
    指令将其添加到包中

    root/
    |- client/
       |- package.json
       |- src/
          |- ...
    |- server/
       |- package.json
       |- src/
          |- ...
    |- shared/
       |- package.json // we don't want to change version every change
       |- src/
          |- ...