虚拟机中npm run watch-poll占用cpu过高

在虚拟机中做laravel+vue的开发,为了在win下更改后虚拟机能实时编译,需要用到npm run watch-poll。
但是缺点就是cpu占用较严重,一直稳定在50~60%。我也是听着风扇不停的转,才发现的。

推荐直接拉到底部,看方案三

方案一

这里(点击查看)有人就建议在本地npm run watch。

方案二

最后,在这里(点击查看)找到了其他方案

# Polling will definitely push your CPU more. Try setting a longer poll interval. Within your package.json file, update your watch-poll script to use a five second interval, like this:
"watch-poll": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --watch-poll=5000 --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",

在 laravel5.6 的package.json中,只需要更改

"watch-poll": "npm run watch --watch-poll=5000",

就可以了。cpu占用率稳定在3~10%,编译的时候升到二三十,然后就又会降下来。
这应该就可以了。

2019年5月7日23:22:34补充
本来这里只是记录下自己做过的东西,因为记性不好,方便自己复用来着。没想到这篇文章真的会有人来看,作为大龄新手感觉亚历山大。
所以时隔一年后再来修改下文章格式,然后再补充些内容

laravelChina偶然看到其他解决方法,因为对webpack完全不熟,根本就没有想到要去看下文档,[webpack文档中]里确实有提到

For some systems, watching many file systems can result in a lot of CPU or memory usage. It is possible to exclude a huge folder like node_modules

所以就有了以下的(可以不使用方案二啦

方案三

//加在webpack.mix.js
//配置忽略node_modules文件夹
if(Mix.isWatching()){
    mix.webpackConfig({
        watchOptions:{
            ignored : /node_modules/,
            //poll : 1000
        },
    })
}

效果很好。

因此也在laravel文档里发现mix.webpackConfig()的使用方法

Mix 提供了一个有用的 webpackConfig 方法,从而允许你合并任意简短的 Webpack 配置覆盖。这是一个很吸引人的选择,因为不需要你拷贝或维护自己的webpack.config.js 文件副本,webpackConfig 方法接收一个对象,该对象包含了任意你想要应用的Webpack指定配置:

结合webpack文档,就可以自定义webpack配置啦!
然后又找到了配置npm run hot时的host的方法,可以在homestead中开心的使用npm run hot啦。补充在laravel5.5下 npm run hot 的使用了。

2 评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注