【问题标题】:Share common typescript code across node projects跨节点项目共享通用打字稿代码
【发布时间】:2018-04-03 13:41:54
【问题描述】:

假设我有以下项目结构:

  • 网络应用
    • 项目A
      • SomeClass.ts
      • Package.json
    • 项目B
      • SomeClass.ts
      • Package.json
    • 普通
      • Lo​​ggingClass.ts
      • Package.json

常见的“LoggingClass”需要从 NPM 导入一个模块。假设模块是 UUID (https://www.npmjs.com/package/uuid)

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

问题是,他们可以毫无问题地从 common 文件夹中导入代码,但是这些项目中不存在模块“UUID”,因为我们没有在他们自己的 Package.json 中指定。强>。

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

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

任何想法将不胜感激!

【问题讨论】:

  • Some people recommend to develop directly into node_modules directory NOOOO!

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


【解决方案1】:

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

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

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

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

使用仅基于 git 的解决方案,您将无法 [轻松地] 实现某些事情。例如,您将如何签出共享代码的特定版本,同时保持其余代码不变?当您只有一个目录存放所有共享代码时,这相对很容易。但是如果你有很多(基本上是目录即包),那么它会变得很麻烦。甚至弄清楚它们的“版本”也很棘手——你必须发明并遵循 git 标记规则或其他方式来注释提交。

无论如何,我想说的是,我的答案并不完全符合您的要求;我的回答是建议您重新评估您对(不)将代码打包到 npm 模块中的立场——这是 JavaScript/TypeScript 社区中的事实上的标准出于某种原因.

【讨论】:

  • 你有这方面的例子吗?由于在 node_modules 目录中开发不便,我试图避开 node 模块。如果我们能以不同的方式做到这一点,那么这可能会成为一种选择。此外,可以创建私有 npm 模块?
  • npm module -- which is de facto a standard in the JavaScript/TypeScript community 所以假设我分享了@98​​7654323@ 并且我想在那里编辑一行。我需要重新发布包然后在每个项目中更新吗?这是迄今为止最糟糕的解决方案,如果这是 standard in the JavaScript/TypeScript community 说了很多的话
  • 您不必将其专门存储在 npmjs.org 中(您可以拥有自己的 npm 存储库)。 如果您使用 CI 系统,这将如何工作,就像 Netlify,你推送到 git 并自动部署?我很乐意使用npm link,如果它可以以某种方式移植到我的开发机器以外的其他地方,而不必发布到 NPM。
【解决方案2】:

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

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

我会简单地重组为

  • 网络应用
    • package.json
    • 项目A
      • SomeClass.ts
    • 项目B
      • SomeClass.ts
      • Package.json
    • 常见
      • Lo​​ggingClass.ts

【讨论】:

  • 如果我理解得很好,您在根目录中添加了一个 package.json 文件。这在编译时如何工作?我们在较高的文件夹中有一些 node_modules,在较低的文件夹中有一些其他的 node_modules
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-27
  • 2020-08-25
  • 2020-01-16
  • 2022-01-05
  • 2017-08-22
  • 1970-01-01
相关资源
最近更新 更多