webpack --watch не игнорирует файлы - PullRequest
0 голосов
/ 26 марта 2020

Основная проблема в том, что когда 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/**'
    ]
}

Заранее благодарю за любые рекомендации.

1 Ответ

0 голосов
/ 26 марта 2020

Итак, это было частично из-за того, что я в настоящее время перехожу между Grunt и Webpack, поэтому мне пришлось HtmlWebpackPlugin просматривать шаблон и выводить полученный файл index.php в тот же каталог (который Оказалось, что тот же каталог, что и мой веб-пакет output.path в конфигурации). Кроме того, я еще не осознал этого, но это также привело к добавлению новых скомпилированных сценариев в индекс. php страница без удаления предыдущих.

Все еще не уверен, почему это не так игнорируя файл, который я явно сказал игнорировать, но я исправил проблему, изменив мою старую конфигурацию Grunt, чтобы построить индексный файл в каталог build_app_tmp вместо конечного каталога build_app (т. е. директива вывода webpack), и затем я настроил HtmlWebpackPlugin на использование каталога build_app_tmp для поиска шаблона.

Это также позволяет мне просматривать каталог build_app_tmp на предмет любых изменений в файле index.php, которые мог внести Grunt.

...