应该打字吗?如果不是,如何在不破坏用户的情况下在 npm install 上触发类型安装?

Posted

技术标签:

【中文标题】应该打字吗?如果不是,如何在不破坏用户的情况下在 npm install 上触发类型安装?【英文标题】:Should typings be committed? If no, how to trigger typings install on npm install without breaking users? 【发布时间】:2016-11-03 22:54:04 【问题描述】:

我有一个 npm 包 (X),它是用 Typescript 编写的,并使用通过 typings 安装的类型。

我没有提交由typings 生成的typings 目录,因为我有一个typings.json,typings 工具可以从中重新生成该目录。事实上,我添加了 Typings 作为 devDependency 和一个 npm 脚本“postinstall”来运行“typings install”,因此任何新开发人员都可以在全新结帐时运行“npm install”后进行所有设置。

问题是,有另一个包在使用这个包(例如 Y)。当用户转到“npm install Y”时,他们拉下 X 并且“postinstall”脚本正在他们的机器上运行。 Typings 是一个 devDependency,所以它不会被下载(我也不希望它适合他们——他们不是在 X 上开发的)。他们也没有全局安装类型,所以他们安装的 Y 错误。

什么是正确的解决方案?我应该提交打字吗?或者是否有另一个 npm 生命周期脚本仅在安装后运行没有 args 的“npm install”?还是别的什么?

谢谢!

【问题讨论】:

相关:github.com/Microsoft/TypeScript/issues/9184 嗨古。那么目前没有解决方案吗? (并且解决方案与 Typescript 2.0 一起提供?)。如果是这样,您能否将其作为答案提交,以便我关闭此问题。谢谢 抱歉,我不确定解决方案,我只想说解决方案可能会在接下来的几周内发生变化。 好的,谢谢 Paleo 【参考方案1】:

您在运行时不需要typings。它们仅由 TypeScript 在开发环境中使用。将.ts编译成.js后,就不需要typings了。

所以,不,不要提交typings

【讨论】:

嗨,米海。我明白这一点,这就是我目前正在做的事情。有没有办法为开发包的开发人员自动下载带有npm install 的类型,但为包的用户避免这种情况? npm install --production --ignore-scripts 你在找什么吗? 我不这么认为。很可能正如古指出的那样。一旦 Typescript 类型被视为 npm 上的包(因为它们可以被列为 devDependencies),就会有一个适当的解决方案(不使用 npm 脚本)。不过感谢那些标志。不知道 --ignore-scripts

以上是关于应该打字吗?如果不是,如何在不破坏用户的情况下在 npm install 上触发类型安装?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不破坏“菜单”按钮默认行为的情况下在 tvOS 游戏中设置主菜单

如何在不定义任何限制的情况下在 python 中获取任意数量的输入?

有没有办法在不破坏格式的情况下在 CSV 列中包含逗号?

如何在不请求的情况下在firebase-auth中首次加载时获取currentUser

Ajax“有新内容吗?如果有,更新页面”——如何在不破坏服务器的情况下做到这一点?

如何在不刷新页面的情况下在 ReactJS 中重新加载?