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.