编译node-sass需要10分钟。

13

我们运营许多小型网站,通常使用Digital Ocean的$5-$10服务器进行托管。

我们的部署流程中使用node-sass将Sass编译为CSS。

在我们的最新服务器上,node-sass库的编译时间显著增加(不是实际的scss文件)。具体来说,我们需要8-10分钟,而在其他项目中只需30秒至100秒。

我们使用node 8.11.1(最新LTS版本)和yarn 1.6.0(最新版本),以及node-sass 4.8.3(最新版本),运行在Ubuntu 16.04.4上。

是否有任何方法可以在部署之间缓存编译过程?或者有人知道为什么编译node-sass需要这么长时间吗?


它由yarn install触发 - 是的,每次部署都会安装新的node_modules。 - jakub_jo
实际上,它确实是通过生产标志触发的。我们有一个部署脚本:创建文件夹,从 Git 上拉取代码,安装依赖项,运行构建脚本,切换到发布目录。 - jakub_jo
也许你可以创建一些冗长的日志输出,这样你就可以查看哪个进程花费了太长时间。我曾经遇到过在虚拟主机上进行npm安装需要花费很长时间的情况。我通过以root身份安装所有节点包来解决这个问题,这样虚拟主机用户只使用所需的方法,而不必安装节点包。 - muecas
这是node-sass编译所花费的时间太长了,yarn显示:node-sass: g++ '-DNODE_GYP_MODULE_NAME=libsass' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-D_LARGEFILE_ ...等等。 - jakub_jo
你的Sass文件中是否有使用URL导入? - muecas
显示剩余2条评论
4个回答

7
如果有人通过搜索引擎找到这篇文章:
我们没有找到任何解决问题的方法。我们将 droplet 的规模放大和缩小回到原来的大小,问题就解决了。

3

如果您正在运行支持的操作系统和Node组合(请查看GH上发布页面以获取您的node-sass版本),则应为您下载预构建的二进制文件。


0

我在我的 Mac Mini 上工作后,又在我的 PC 上工作时遇到了这个问题。我遇到了这个:

const sassCompiler = require('gulp-sass')(require('sass'));

在 Mac 上它表现不错,也许是 M1 的原因,但在我的 PC 上,虽然是几年前的高端机型,但每次 CSS 更改都需要大约一分钟。

我查看了文档,第二个参数 (require('sass')) 表示编译器,主要有两个选项:sassnode-sass

由于我正在使用 Yarn,所以我在项目中执行了 yarn add node-sass。然后将我的 gulpfile 行修改为:

const sassCompiler = require('gulp-sass')(require('node-sass'));

差距十倍。

使用SASS编译器: With SASS

使用Node-SASS编译器: With Node-SASS

我还没有在我的Mac上尝试新的配置,但我认为不会有太大的区别。


0
npm install

yarn 在缓存方面存在一些问题(可能是在您的个人电脑上,也可能是在 CDN 上)。如果您的个人电脑上安装有几个节点版本(例如 nvm),这可能会导致巨大的时间增加。在我的情况下,使用 npm 安装依赖项效果很好:40 秒,而使用 yarn 需要 5 分钟以上(我没有等到最后)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接