`npm 运行 watch` 在 Laravel 5.4 中不工作

`npm run watch` not working in Laravel 5.4

使用 Laravel 5.4 和 Mix,当我 运行 npm run watch 它编译所有内容一次,看起来它正在等待更改,但是当我对我的任何资产文件进行更改时它似乎没有检测到任何东西。还有其他人在 5.4 中遇到此问题或有解决方案吗?

该解决方案由 Laracasts 的 Jeffrey Way 提供。

尝试将 --watch-poll 标记添加到您的 package.json 脚本中。或者试试:

node_modules/.bin/webpack --watch --watch-poll --config=node_modules/laravel-mix/setup/webpack.config.js

npm run watch-poll

它也在 ubuntu 上工作并且自动编译代码更改。 谢谢。

npm run watch-poll

watch-poll 定期检查(轮询)变化,例如每 1000 毫秒它会手动检查是否有任何文件已更改。

laravel 文档怎么说?

您可能会发现,在某些环境中,当您的文件更改时,Webpack 不会更新。如果您的系统是这种情况,请考虑使用 watch-poll 命令。 您可以阅读文档以获取有关 mix.

的更多信息

我使用的是 mix.scripts,它实际上并没有编译您的脚本,只是复制它们,所以编译时没有 npm 读数,因为它没有编译任何东西。如果您没有在 webpack.mix.js 文件中使用 mix.jsmix.sass(r 任何其他 编译器 ,那么 npm run watch 将出现什么都不做,因为它只是在后台复制。

我更喜欢使用 inotify-tools。 要安装此工具集 运行 此命令:

Ubuntu:

sudo apt install inotify-tools -y

Centos:

sudo yum -y install inotify-tools

然后对于大文件夹 运行:

sudo sysctl fs.inotify.max_user_watches=500000000

最后 运行 这个监视文件夹变化的命令:

while true; do npm run dev; inotifywait -e modify,create,delete,move -r resources/ ; done

您可以限制目标观看目录(本例中为资源/)以获得更好的性能。