laravel - Laravel 混合观看模式下的无限重建循环
问题描述
在 Xubuntu 18.04 下使用 PhpStorm 2020.1,我正在将 JS 游戏构建到 Laravel 6.18.8 全新安装中。
每次我运行npm run watch
ornpm run watch-poll
时,我的资产都会无限地重建。
这是我的配置:
// Dependencies in package.json:
"devDependencies": {
"axios": "^0.19",
"bootstrap": "^4.4.1",
"cross-env": "^7.0",
"fibers": "^4.0.2",
"jquery": "^3.5.0",
"laravel-mix": "^5.0.1",
"lodash": "^4.17.13",
"node-sass": "^4.13.1",
"pixi.js": "^5.2.1",
"popper.js": "^1.16.1",
"resolve-url-loader": "^3.1.0",
"sass": "^1.15.2",
"sass-loader": "^8.0.0",
"vue-template-compiler": "^2.6.11"
}
// webpack.mix.js config:
mix
.copyDirectory('resources/images', 'public/images')
.sass('resources/sass/app.scss', 'public/css')
.js('resources/js/app.js', 'public/js')
.extract(['lodash', 'popper.js', 'jquery', 'bootstrap', 'axios', 'pixi.js'])
.version(['public/images'])
.sourceMaps()
;
我用谷歌搜索了很多,主要是找到这个解决方案,但是改变processCssUrls
选项并没有改变任何东西。
请注意,我的应用程序图像均未从任何 scss 文件中使用,因此我认为这不是重写 url 问题。
深入挖掘,我也使用了以下插件来查看哪个文件触发了重建:
class WatchRunPlugin {
apply(compiler) {
compiler.hooks.watchRun.tap('WatchRun', (comp) => {
let mtimes = comp.watchFileSystem.watcher.mtimes;
let changes = Object.keys(mtimes);
if (changes.length) {
changes = changes.map(file => ` ${file} (${mtimes[file]})\n`).join('');
console.log(`CHANGES:\n${changes}`);
}
});
}
}
在每次重建时,它只显示/public/mix-manifest.json
一个新的时间戳,就好像这个文件更新触发了重建一样。
我试图忽略它,但这也不会改变任何东西;
mix
.webpackConfig({
watchOptions: {
ignored: ['public/mix-manifest.json']
}
})
// ...
;
最后,我尝试一个一个地删除每个语句webpack.mix.js
,但是无论定义的重建任务如何,问题仍然存在。这个问题可能是由操作系统和/或 IDE 引起的吗?
这让我发疯,我在这里没有选择^^
任何帮助将不胜感激,在此先感谢。
编辑
我正在导入/public/mix-manifest.json
我的脚本(认为将它用作我的游戏的资产清单很聪明)。
所以每次创建manifest都会触发rebuild,然后manifest又被创建,然后……无限循环!
将其更改为适当且专用的方法来管理游戏资产清单,现在一切都很好。
愚蠢,但花了我一些时间来弄清楚......
解决方案
如果你还没有弄清楚。尝试禁用 PhpStorm 的“自动保存”。每次您在 IDE 中编写内容时,它都会自动保存它,这会导致资产一次又一次地重新编译。
Open PhpStorm settings (Command + , on Mac) >
Appearance & Behaviour >
System Settings >
uncheck "Save files on frame deactivation" and "Save files automatically if application is idle for ..."
推荐阅读
- json - 使用 jq 通过非唯一键将数组转换为对象
- scala - Scala 中 Derived DataFrame 的持久化工作原理及其对性能的影响
- reactjs - 反应路由器循环并返回
- python - 使用部分文本获取标签的值
- ios - 每场比赛的游戏中心排行榜
- assembly - nasm 键盘驱动程序 I/O
- vuetify.js - 如何使用 Vuetify 将 v-card 放在页面中心
- javascript - React Js 中的路由
- c# - 如何使用 TOptions 在 .net core 3.1 中配置和注入 JwtOptions?
- permissions - 我可以授予管道权限,以便它可以使用 API 读取 Azure Devops 中不同项目的信息吗?