应该打字吗?如果不是,如何在不破坏用户的情况下在 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 中获取任意数量的输入?
如何在不请求的情况下在firebase-auth中首次加载时获取currentUser