Laravel mix / webpack не запускает функцию просмотра при компиляции скриптов через babel ()

Мы запускаем некоторые из наших файлов javascript с помощью babel() функций, которые предоставляет Laravel mix, чтобы обеспечить некоторую обратную совместимость.

Проблема заключается в том, что если мы что-то изменим в app.js или app.scss, запускается сценарий просмотра, и Laravel mix автоматически компилирует правильные сценарии, но не запускается при каких-либо изменениях ни в одном из файлов, которые мы загружаем. babel(). Не имеет значения, запускаем ли мы watch или watch-poll. Он компилирует babel() скрипты, если мы повторно запускаем watch вручную или запускаем production / dev.

Я попытался найти документацию по babel() или watch, объясняющую это странное поведение. но не смог найти ничего, что объясняет эту странную проблему.

webpack.mix.js

mix.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css')
// Compile some resources independently to not include it in all pages.
.babel('resources/assets/js/cart.js', 'public/js/cart.js')
.babel('resources/assets/js/manage-addresses.js', 'public/js/manage-addresses.js')
.babel('resources/assets/js/catalog-overview-order.js', 'public/js/catalog-overview-order.js');

package.json

"scripts": {
        "dev": "npm run development",
        "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
        "watch": "npm run development -- --watch",
        "watch-poll": "npm run watch -- --watch-poll",
        "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
        "prod": "npm run production",
        "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
    },

Версии программного обеспечения:

  • NPM: 6.4.1
  • Node.js: 8.12.0
  • Webpack: 4.29.0
  • Laravel: 5.5
  • Микс Laravel: 4.0.14
  • ОС: Ubuntu 18.04
  • PHP: 7.0.30
  • Докер: 18.09.1, сборка 4c52b90

package.json

{
    "private": true,
    "scripts": {
        "dev": "npm run development",
        "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
        "watch": "npm run development -- --watch",
        "watch-poll": "npm run watch -- --watch-poll",
        "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
        "prod": "npm run production",
        "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
    },
    "devDependencies": {
        "@fortawesome/fontawesome-free": "^5.5.0",
        "axios": "^0.17",
        "bootstrap": "^4.1.3",
        "cross-env": "^5.1",
        "datatables": "^1.10.18",
        "datatables.net-bs4": "^1.10.19",
        "datatables.net-buttons-bs4": "^1.5.3",
        "datatables.net-plugins": "^1.10.18",
        "datatables.net-rowreorder": "^1.2.5",
        "datatables.net-rowreorder-bs4": "^1.2.5",
        "jquery": "^3.2",
        "laravel-mix": "^4.0.14",
        "popper.js": "^1.14.6",
        "resolve-url-loader": "^2.3.1",
        "sass": "^1.16.1",
        "sass-loader": "^7.1.0",
        "vue-template-compiler": "^2.5.22"
    },
    "dependencies": {
        "@babel/polyfill": "^7.2.5",
        "animate.css": "^3.7.0",
        "bootstrap4-notify": "^4.0.3",
        "dropzone": "^5.5.1",
        "jquery-mask-plugin": "^1.14.15",
        "select2": "^4.0.5",
        "toastr": "^2.1.4"
    }
}


person Sitethief    schedule 05.02.2019    source источник


Ответы (1)


У вас должен быть mix.js () с некоторыми входными данными, переданными в babel.

mix.js('resources/assets/js/cart.js', 'public/js/cart.js').babel('public/js/cart.js', 'public/js/cart.js')
person mwm    schedule 07.02.2019
comment
Сегодня утром я потратил час или два на изучение этой проблемы. Спасибо! - person Max; 13.12.2019
comment
Через час я все еще застрял. Я не могу использовать .js, так как комбинирую устаревший код ... За исключением случаев, когда я использую .combine, .scripts или .babel watch по-прежнему ничего не делает! Если я использую .js для 1 файла, у которого нет никаких зависимостей, часы работают, но я не могу использовать .js для своих нужд. Я так застрял - person Max; 13.12.2019
comment
Если кому-то интересно, оказывается, что он перекомпилируется .. Это просто не говорит мне, что это как при использовании .js - person Max; 13.12.2019
comment
Спасибо, мужик! Я использовал babel () без js (), вот в чем проблема! - person Luciano Fantuzzi; 28.06.2021