TLDR:(在没有解释的情况下似乎违反直觉)
npm install caniuse-lite browserslist
npm uninstall caniuse-lite browserslist
说明:
如果发现已安装的caniuse-lite版本比当前版本早2个版本,则会在构建/启动过程中由浏览器列表中的脚本输出此警告消息(“ canisuse-lite已过时,请....”)。如果项目中的任何内容都没有更改,并且在启动或构建项目时突然看到此消息,则可能意味着caniuse-lite有最新版本的更新。
不幸的是,仅当您将caniuse-lite安装为项目的依赖项时,browserslist所显示的msg文本才有用。您很可能没有。因此,当您运行建议的“ npm update caniuse-lite”或“ npm update'caniuse-lite @ latest”(或“ npm install”)时,npm不会在package.json依赖项中看到该软件包,因此它会忽略请求。
这些包如何成为依赖项?在创建项目时(可能使用应用程序angularapp或create-react-app或类似的框架),npm安装的browserslist是其所需工具的依赖项,而不是项目的依赖项之一。同时,caniuse-lite被安装为浏览器列表的依赖项。后来在更新项目时,创建了package-lock.json文件,该文件将所有依赖项锁定到特定版本。
如果您能够在package-lock.json的依赖项列表中更新版本信息,那么运行“ npm install”将更新node_modules中的这些软件包。您不应该手动编辑package-lock.json。相反,最好的方法是:
暂时使这些软件包成为您项目的依赖项:
npm install caniuse-lite浏览器列表
除了将软件包更新到最新版本外,这还将更新package.json和(最重要的是)package-lock.json中的依赖项列表。
删除这些程序包作为项目的直接依赖项:
npm卸载caniuse-lite浏览器列表
由于其他依赖项使用了这些软件包,因此不会将它们从node_modules中删除。仅package.json被更新以将其删除为项目依赖项。
提交package-lock.json。现在其他任何人都可以运行“ npm install”来从package-lock.json中的子依赖项列表中获取更新的两个软件包,并停止警告消息。
npm update caniuse-lite browserslist
?