mirror of
https://github.com/strapi/strapi.git
synced 2025-07-18 14:32:56 +00:00
61 lines
1.5 KiB
JavaScript
Executable File
61 lines
1.5 KiB
JavaScript
Executable File
// Import node modules.
|
|
const { exec } = require('child_process');
|
|
const path = require('path');
|
|
|
|
const _ = require('lodash');
|
|
|
|
const addCheckMark = require('./helpers/checkmark');
|
|
const animateProgress = require('./helpers/progress');
|
|
const pkg = require(path.resolve(__dirname, '..', '..', '..', 'package.json'));
|
|
|
|
process.stdin.resume();
|
|
process.stdin.setEncoding('utf8');
|
|
let interval;
|
|
|
|
// List of necessary dependencies.
|
|
const helperDependencies = [
|
|
'cross-env',
|
|
'plop',
|
|
'prettier',
|
|
'rimraf',
|
|
'webpack',
|
|
];
|
|
|
|
/**
|
|
* Define the list of necessary dependencies, with their respective versions.
|
|
*/
|
|
const necessaryDependencies = _.map(
|
|
_.pickBy(pkg.dependencies, (version, devDependency) =>
|
|
_.includes(helperDependencies, devDependency) || _.startsWith(devDependency, 'eslint')
|
|
), (version, devDependency) =>
|
|
`${devDependency}@${version}`
|
|
);
|
|
|
|
/**
|
|
* Install necessary dependencies.
|
|
*/
|
|
const installNecessaryDeps = () => {
|
|
process.stdout.write('\nInstalling necessary dependencies');
|
|
interval = animateProgress('Installing necessary dependencies');
|
|
|
|
// Exec installation.
|
|
exec(`npm install ${necessaryDependencies.join(' ')} --save-dev`, addCheckMark.bind(null, installDepsCallback));
|
|
};
|
|
|
|
/**
|
|
* Callback function after installing dependencies.
|
|
*/
|
|
const installDepsCallback = (error) => {
|
|
clearInterval(interval);
|
|
process.stdout.write('\n');
|
|
if (error) {
|
|
process.stderr.write(error);
|
|
process.stdout.write('\n');
|
|
process.exit(1);
|
|
}
|
|
|
|
process.exit(0);
|
|
};
|
|
|
|
installNecessaryDeps();
|