![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mets.corals.io/wp-content/metras.v32.1/node_modules/laravel-mix/src/ |
let childProcess = require('child_process'); let File = require('./File'); let Log = require('./Log'); let argv = require('yargs').argv; class Dependencies { /** * Create a new Dependencies instance. * * @param {Object} dependencies */ constructor(dependencies) { this.dependencies = dependencies; } /** * Install all dependencies that aren't available. * * @param {Boolean} abortOnComplete * @param {Boolean} forceNpm */ install(abortOnComplete = false, forceNpm = false) { this.dependencies .reject(dependency => { try { return require.resolve( dependency.replace(/(?!^@)@.+$/, '') ); } catch (e) {} }) .tap(dependencies => { this.execute( this.buildInstallCommand(dependencies, forceNpm), dependencies, abortOnComplete ); }); } /** * Execute the provided console command. * * @param {string} command * @param {Boolean} abortOnComplete */ execute(command, dependencies, abortOnComplete) { Log.feedback( 'Additional dependencies must be installed. This will only take a moment.' ); Log.feedback(`Running: ${command}`); childProcess.execSync(command); Log.feedback( 'Okay, done. The following packages have been installed and saved to your package.json dependencies list:' ); dependencies.forEach(d => Log.feedback('- ' + d)); this.respond(abortOnComplete); } /** * Build the dependency install command. * * @param {Object} dependencies * @param {Boolean} forceNpm */ buildInstallCommand(dependencies, forceNpm = false) { dependencies = [].concat(dependencies).join(' '); if (!forceNpm) { try { childProcess.execSync('command -v yarn >/dev/null'); return `yarn add ${dependencies} --dev --production=false`; } catch (e) {} } return `npm install ${dependencies} --save-dev --production=false`; } /** * Complete the install process. * * @param {Boolean} abortOnComplete */ respond(abortOnComplete) { if (abortOnComplete) { Log.feedback( typeof abortOnComplete === 'string' ? abortOnComplete : 'Finished. Please run Mix again.' ); if (!argv['$0'].includes('ava')) { process.exit(); } } } } module.exports = Dependencies;