Node.js 发布严格要求最低节点版本的npm包
如果我写一个包,我肯定需要Node4或更高版本,我不希望它可以用旧版本安装 我知道package.json引擎字段,但这只是建议(只会引起警告)。EngineStrict已被弃用 那我该怎么办Node.js 发布严格要求最低节点版本的npm包,node.js,npm,Node.js,Npm,如果我写一个包,我肯定需要Node4或更高版本,我不希望它可以用旧版本安装 我知道package.json引擎字段,但这只是建议(只会引起警告)。EngineStrict已被弃用 那我该怎么办 一个想法是使用预安装脚本检查节点版本和错误(如果不够高),从而阻止安装继续进行。这样做有什么问题吗?还有更好的方法吗?如果您想获得良好的体验,请将您的CLI入口点设置为标准ES5和CommonJS,检测节点版本(process.version),并打印详细且有用的消息,然后退出非零。请记住,您的模块可能安
一个想法是使用预安装脚本检查节点版本和错误(如果不够高),从而阻止安装继续进行。这样做有什么问题吗?还有更好的方法吗?如果您想获得良好的体验,请将您的CLI入口点设置为标准ES5和CommonJS,检测节点版本(
process.version
),并打印详细且有用的消息,然后退出非零。请记住,您的模块可能安装了某个节点版本,然后用户使用nvm或其路径或其他任何工具进行修改,然后在不同版本下运行您的代码。因此,我认为在运行时很好地失败是最重要的事情。如果愿意,您也可以选择在安装时失败。为什么需要执行任何操作?使用它的人会看到Node v4是预期的,因此如果它不起作用,他们不应该感到惊讶。@FelixKling很容易忽略有关预期节点版本的一点警告,特别是在各种程序包的安装后脚本发出的一系列噪音中。我只会在自述文件中添加一条注释。如果有任何区别,这适用于CLI工具,而不是可重用模块。我不希望人们安装我的CLI工具,如果这意味着,当他们第一次尝试使用它时,他们会在我的代码中遇到一个关于“错误语法”的令人困惑的错误。阻止安装并打印一条有用的消息,解释他们需要升级节点并重试,这对我来说是一个更好的用户体验。好的,谢谢。不过,还有一个问题是,如果我的CLI依赖于节点sass之类的东西,则根据节点版本的不同,实际构建的方式也不同。这意味着用户无论如何都必须在升级节点后重新安装CLI。因此,在这种情况下,早期预装失败似乎是最好的。不过,我也可以按照您的建议进行运行时检查。我认为节点sass问题应该由npm rebuild
处理,这是处理在节点版本X上安装并尝试在节点版本Y上运行的正式方法。