node.js - 使用 Windows 上的构建工具升级到 Node 11.1 后的 node-sass 大小
问题描述
最初我使用的是 Node v10(我相信),当生成一个新的 Angular 项目(v7)时,我的 node_modules 是“适度的”~140 Mb。
然后我决定升级到 Node v11.1 并安装构建工具,安装程序现在可以选择允许您安装。我的 node_modules 大小超过 700 MB。罪魁祸首是 node-sass 包,它现在正在下载整个项目(cpp 文件、.sln 和所有文件)并在初始 npm 安装时完全编译(使用 node-gyp)。
有没有办法将这种行为改变为在没有安装构建工具的情况下做事的方式?(没有手动卸载节点自动安装的构建管道)
或者有什么我没有看到的优势?对我来说,这一切都很好(包括所有与 scss 和 sass 相关的东西),而占用空间没有大幅增加。
解决方案
所以,我发现了发生了什么。
当前版本的 Angular(cli 版本 7.0.6)安装 node-sass 版本为 4.9.3。版本 4.9.3 不支持节点 v11。4.10.0添加了对节点 v11 的支持。因此,node-sass 正在运行的安装脚本找不到要从 github 下载的预构建二进制文件,并回退到构建源文件(这会导致 400 MB 空间浪费)。
这就是为什么在我更新到最新的节点版本后问题开始出现的原因。
目前有2个解决方案:
- 坚持使用节点的 LTS v10(有一个预构建的二进制文件)
- 手动升级到最新版本的 node-sass 并希望 angular 不会因此而崩溃
我选择了选项 1 并安装了 LTS 节点版本。这是一个可能会及时解决的问题,因为 Angular 更新了它的 node-sass 依赖关系。暂时我希望答案能帮助面临同样情况的人。
推荐阅读
- android - 更新 Android 库会导致我的代码出错吗?
- c# - 基于另一个键的 XML 分组
- python - 查找浮点字符串时,正则表达式的行为很奇怪
- javascript - 点击后如何加载特定的片段?
- security - 保护 JSF 应用程序以防止访问 WEB-INF 文件夹中应用程序的 XML 资源
- android - 防止使用自定义键盘
- sql - 连接 2 个表以从每个表中提取所有值
- dependency-injection - 为什么作用域服务会被多次实例化?
- batch-file - 修复达到的最大 setlocal 递归级别
- .net - .NET Standard NuGet 包是如何实现的?