跨节点项目共享通用打字稿代码

时间:2017-10-23 04:40:28

标签: javascript node.js typescript npm shared-libraries

假设我有以下项目结构:

  • web应用
    • 项目A
      • SomeClass.ts
      • 的package.json
    • 项目B
      • SomeClass.ts
      • 的package.json
    • 普通
      • LoggingClass.ts
      • 的package.json

Common“LoggingClass”需要从NPM导入模块。我们假设该模块是UUID(https://www.npmjs.com/package/uuid

问题或挑战如下:我们想在ProjectA和ProjectB中使用并导入“LoggingClass”。

事实是,他们可以毫无问题地从公共文件夹导入代码,但是那些项目中不存在模块“UUID”,因为我们没有在各自的 Package.json中指定

我不想创建实际的节点模块,因为我的代码需要被检入git存储库。 (有人建议直接开发到node_modules目录中。)

我想知道社区中其他的打字稿开发人员在使用npm时分享他们的代码。 (如果它只是打字稿文件那就不会有问题,但是由于我们对npm的依赖关系......它变得复杂了)。

任何想法都将不胜感激!

2 个答案:

答案 0 :(得分:1)

  

我不想创建实际的节点模块,因为我的代码需要被检入git存储库。

真正的npm模块实际上是一种去恕我直言的方式。您不必专门将其存储在npmjs.org中(您可以拥有自己的npm存储库)。

  

有些人建议直接开发到node_modules目录。

这实际上是我能想象到的最不方便的方式。也许,我错过了一些重要的事情,但我很想知道他们的思维方式。

有些事情你无法通过基于git的解决方案轻松实现。例如,如何检查共享代码的特定版本,并保持其余代码完好无损?当您只有一个所有共享代码所在的目录时,相对很容易。但是,如果你有很多(基本上,目录为包),那么它会变得很麻烦。甚至搞清楚他们的版本"也很棘手 - 您必须发明并遵循git标记规则或其他方式来注释提交。

无论如何,我想说的是我的回答并不完全是你所要求的;我的回答是建议重新评估你关于(不)将代码打包到npm模块的位置 - 这是事实上是JavaScript / TypeScript社区中的标准 >

答案 1 :(得分:-2)

  

我想知道社区中其他的打字稿开发人员在使用npm时分享他们的代码

由于您的要求I do not want to create actual node modules since my code needs to be checked into a git repository.

我只是重新组织为

  • web应用
    • 的package.json
    • 了projectA
      • SomeClass.ts
    • 项目B
      • SomeClass.ts
      • 的package.json
    • 共同
      • LoggingClass.ts