import, require and include hate for JS
Preamble: next time I will read words like "easy" or "simple" in a Javascript package manager presentation page, I will look for the maintainer's home address and will dump a full load of shit in front of his door.
Recently, I started to adopt Laravel Mix to build assets included in my works. Given that collecting a bunch of JS files into a folder and handling them with Minify is way easier, after a few weeks I still insist in this onanist exercise.
Today I've learned a fundamental lesson, to be shared here for later reference. I had to import TempusDominus datepicker library: I've npm
'd it, import
'd in my app.js
file, npm run dev
'd all together, and it insisted about missing Moment.js library. I've import
'd and require
'd it in all ways, but none of them worked.
In the end, I ended up modifying my webpack.mix.js
file (mostly stackoverflowed, of course) like this:
mix.autoload({
jquery: ['$', 'window.jQuery', 'jQuery'],
'popper.js/dist/umd/popper.js': ['Popper'],
'moment/moment.js': ['moment'], // THIS LINE ADDED
}).js([
'node_modules/jquery/dist/jquery.min.js',
'node_modules/popper.js/dist/popper.min.js',
'node_modules/bootstrap/dist/js/bootstrap.js',
'resources/assets/js/app.js'
], 'public/js/app.js')
.sass('resources/assets/sass/app.scss', 'public/css/app.css');
I've no idea of what it means, but it works.