2015-11-01 94 views
2

如果我编写一个包,我确定需要Node 4或更高版本,我不希望它可以使用旧版本进行安装。发布严格要求最低节点版本的npm包

我知道package.json引擎字段,但这只是建议(只会导致警告)。而enginesStrict已被弃用。

那么我该怎么办?

一个想法是有一个预安装脚本,用于在节点版本和错误不足时阻止安装,从而检查节点版本和错误。这样做有什么问题吗?还有更好的方法吗?

+1

为什么你需要做任何事情?有人使用它会看到节点v4是预期的,所以如果它不起作用,他们不应该感到惊讶。 –

+0

@FelixKling很容易错过关于期望的Node版本的一些警告,尤其是在各种软件包的安装后脚本中产生的一些噪音 – callum

+0

个人而言,我只是在自述文件中添加备注。 –

回答

1

如果您想获得良好体验,请使CLI入口点标准为ES5和CommonJS,检测节点版本(process.version),然后打印详细且有用的消息,然后退出非零值。请记住,您的模块可能会安装一些节点版本,然后用户使用nvm或他们的PATH或其他软件,然后在不同的版本下运行您的代码。因此,我认为在运行时很好地失败是最重要的。如果你愿意,你也可以选择在安装时失败。

+0

好的谢谢。但是,剩下的一个问题是,如果我的CLI依赖于像node-sass这样的实际构建方式,则取决于节点版本。这意味着用户在升级节点后必须重新安装CLI。因此,在预安装的早期失败似乎是最好的。我也可以按照你的建议做一次运行时检查。 – callum

+0

我认为node-sass问题应该由'npm rebuild'处理,它是处理节点版本X上的安装并尝试在节点版本Y上运行的官方方式。 –