Как подключить пакеты из node_modules к Laravel?

Для подключения пакетов из node_modules к Laravel есть несколько подходов, в зависимости от версии Laravel, которую вы используете.

1. В Laravel 5.7 и выше:
В версии Laravel 5.7 и выше добавлено автоматическое подключение пакетов из node_modules. Для этого вам нужно запустить команду npm install, которая установит все зависимости проекта из файла package.json, включая пакеты, необходимые для фронтенда. После этого файл webpack.mix.js (находится в корневой директории проекта) автоматически подключит все файлы из node_modules, определенные вами в resources/js/app.js и resources/sass/app.scss. Результатом будет один объединенный файл public/js/app.js и один объединенный файл public/css/app.css, которые будут содержать код из node_modules.

2. В Laravel 5.6 и ниже:
Если вы используете Laravel 5.6 или более раннюю версию, вам придется добавить несколько дополнительных шагов для подключения пакетов из node_modules:

- Установите все необходимые пакеты с помощью команды npm install.
- Создайте новую директорию resources/assets/vendor в корневой папке проекта.
- Скопируйте файлы из node_modules в resources/assets/vendor. Например, если вы хотите подключить пакет jQuery, скопируйте файл jquery.js из node_modules/jquery/dist/jquery.js в resources/assets/vendor/jquery.js.
- Откройте файл webpack.mix.js, который находится в корневой папке проекта, и добавьте следующую строку после строки, содержащей mix.js('resources/js/app.js', 'public/js'):
mix.copy('resources/assets/vendor', 'public/vendor');
Эта строка скопирует файлы из resources/assets/vendor в public/vendor.
- Запустите команду npm run dev или npm run watch. Это скомпилирует ваши ресурсы и создаст папку public/vendor, в которой будут находиться скопированные файлы из node_modules.

После выполнения этих шагов вы сможете подключить скопированные файлы в ваш layout или view, используя стандартные средства Laravel для подключения стилей и скриптов.

Теперь вы можете использовать пакеты из node_modules в вашем проекте Laravel.