typescript - NPM 仅安装后依赖项

标签 typescript npm yarnpkg

我正在使用 git 分发内部 TypeScript NPM 包。因为我不想在我的存储库中有构建文件,所以我在安装包时使用安装后操作来构建包:

"postinstall": "tsc -p tsconfig.json"

要构建我的包,需要一些依赖项(例如 TypeScript)。但是,当我将它们添加为开发依赖项时,它们在安装后阶段不可用,因此我必须将它们添加为常规依赖项。

所以我的问题是:

  • 在我的 package.json 中将这些构建依赖项声明为常规依赖项有什么缺点吗?
  • 如果是这样,在通过 git 安装的 NPM 包中表达仅构建依赖项的首选方式是什么?

最佳答案

我不得不强烈反对 zamber 的回答。将所有依赖项声明为产品依赖项存在相当大的缺点。 如果你这样做,任何安装你的包的人也会在他们的 node_modules 文件夹中安装你所有的开发依赖项。在这一点上这似乎不是什么大问题,但想象一下如果每个人都这样做。还要记住,不仅仅是安装您的项目的人,还有安装使用您项目的任何依赖项的人。

node_modules 文件夹已经很大并且 npm install 已经花费了很长时间。如果每个人都添加开发依赖项作为产品,带宽、处理能力和硬盘空间需求将会显着增加。

在我的很多项目中,真正的依赖项确实很少,但有很多大型开发依赖项:构建依赖项(如 typescript)、测试依赖项(如 jest 或 jasmine)、linting 依赖项,甚至整个浏览器以进行自动化测试。除了您之外,没有其他人需要这些依赖项,因此不必为它们支付时间和硬​​盘空间。

发布 TS 库的方法是先构建再发布。这意味着不需要任何开发依赖项。

关于typescript - NPM 仅安装后依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63828595/

相关文章:

java - Jhipster 应用程序生成失败

typescript - "Property or method "foo "is not defined on the instance but referenced during render"Vuejs typescript

javascript - 如何在 typescript 中编写遍历列表的函数?

angular - 使用 Visual Studio 构建 Angular2 应用程序时出错

node.js - yarn 启动命令失败,退出代码为 1

npm - yarn 工作区也可以与npm一起使用吗?

javascript - 在 TypeScript 中找不到名称 jsPdf

javascript - 需要带有 npm 和 typescript 的自定义模块

NPM + Zurb 基金会 + WebPack : Cannot resolve module 'foundation'

火警警告 : Invalid query string segment - Warning when deploying simple Firebase Cloud function