| Server IP : 34.87.99.72 / Your IP : 216.73.217.31 Web Server : Apache/2.4.46 (Unix) OpenSSL/1.1.1n System : Linux zlock-bitnami-lamp-prod-v2-vm 4.19.0-16-cloud-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 User : bitnami ( 1000) PHP Version : 7.4.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /opt/bitnami/apache/htdocs/app/node_modules/laravel-mix/src/components/ |
Upload File : |
let glob = require('glob');
let File = require('../File');
let Assert = require('../Assert');
class JavaScript {
constructor() {
this.toCompile = [];
}
/**
* The API name for the component.
*/
name() {
let name = this.constructor.name.toLowerCase();
return name === 'javascript' ? 'js' : name;
}
/**
* Register the component.
*
* @param {*} entry
* @param {string} output
*/
register(entry, output) {
if (typeof entry === 'string' && entry.includes('*')) {
entry = glob.sync(entry);
}
Assert.js(entry, output);
entry = [].concat(entry).map(file => new File(file));
output = new File(output);
this.toCompile.push({ entry, output });
Mix.bundlingJavaScript = true;
}
/**
* Assets to append to the webpack entry.
*
* @param {Entry} entry
*/
webpackEntry(entry) {
this.toCompile.forEach(js => {
entry.addFromOutput(
js.entry.map(file => file.path()),
js.output,
js.entry[0]
);
});
}
/**
* webpack rules to be appended to the master config.
*/
webpackRules() {
return [
{
test: /\.(cjs|mjs|jsx?|tsx?)$/,
exclude: /(node_modules|bower_components)/,
use: [
{
loader: 'babel-loader',
options: Config.babel()
}
]
}
];
}
}
module.exports = JavaScript;