我正在使用 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/