Основная проблема в том, что когда watch обнаруживает изменение в исходном файле и перекомпилируется, он застревает в al oop, потому что обновил страницу index.php
, где я вставляю скомпилированный javascript в элемент (через HtmlWebpackPlugin). Я пытался игнорировать все (в watchOptions
в моем конфигурационном файле) в моем каталоге build_app
, в котором находится файл index. php, а также явно игнорировать этот файл, и он все еще застревает в этой перестройке l oop, потому что он обнаруживает изменения в этом файле.
Я пытался использовать TimeFixPlugin , который, похоже, помог некоторым людям, и я использую этот WatchRunPlugin кто-то создал в другом вопросе StackOverflow отладку, какие файлы были обнаружены как измененные webpack --watch
, но это, похоже, не помогает.
вывод, когда --watch обнаруживает мой первый измененный файл (обратите внимание, что когда Компиляция заканчивается, она обнаруживает другое изменение в index.php
, когда новый скрипт. js добавляется на страницу индекса через HtmlWebpackPlugin:
====================================
NEW BUILD FILES CHANGED:
/Users/blah/project1/src/common/services/AuthService/AuthService.class.js
====================================
Compilation starting…
Compilation finished
Hash: b90fb62dff8c1a7732e0
Version: webpack 4.42.0
Time: 375ms
Built at: 03/26/2020 1:47:11 PM
Asset Size Chunks Chunk Names
assets/js/app.b90fb62dff8c1a7732e0.js 736 KiB app [emitted] [immutable] app
index.php 76.6 KiB [emitted]
+ 1 hidden asset
Entrypoint app = assets/js/vendors.6828eff62e21c38585ce.js assets/js/app.b90fb62dff8c1a7732e0.js
[./src/common/services/AuthService/AuthService.class.js] 9.76 KiB {app} [built]
+ 36 hidden modules
Child html-webpack-plugin for "index.php":
1 asset
Entrypoint undefined = index.php
[./node_modules/html-webpack-plugin/lib/loader.js!./build_app/index.php] 77.9 KiB {1} [built]
+ 3 hidden modules
====================================
NEW BUILD FILES CHANGED:
/Users/blah/project1/build_app/index.php
====================================
webpack.config. js (находится в /Users/blah/project1
, из той же директории, из которой я запускаю команду webpack):
mode: 'development',
plugins: [
new TimeFixPlugin(),
new WatchRunPlugin(),
// Clean build_app folder
new CleanWebpackPlugin(['build_app_webpack'], {
// Write logs to console.
verbose: true,
// perform clean just before files are emitted to the output dir
// Default: false
beforeEmit: true
}),
// Create our index.php file
new HtmlWebpackPlugin({
template: './build_app/index.php',
filename: 'index.php',
inject: 'head', // place scripts in head because we bootstrap the app at the end of the body
hash: true, // cache busting helper
templateParameters: {
LR_VERSION: gitRevisionPlugin.version(),
LR_HASH: gitRevisionPlugin.commithash()
}
}),
// Expose _ (underscoreJS) to the global JavaScript scope
new webpack.ProvidePlugin({
_: 'underscore'
})
],
watchOptions: {
ignored: [
'bin_*/**',
'build_*/**',
'build_app/index.php',
'karma/html-output/**',
'jest/coverage/**',
'jest/test-results/**',
'node_modules/**',
'vendor/**'
]
}
Заранее благодарю за любые рекомендации.