All files / tasks installPeerDependencies.ts

100% Statements 20/20
100% Branches 2/2
100% Functions 2/2
100% Lines 20/20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3142x   42x 42x 3x 3x 3x 3x   3x 3x 3x 3x   3x 2x 2x 2x 2x 1x   1x 1x       1x        
import { execSync as exec } from 'child_process';
 
export = function(grunt: IGrunt, packageJson: any) {
	grunt.registerTask('peerDepInstall', <any> function () {
		const peerDeps = packageJson.peerDependencies;
		let packageCmd = 'npm install';
		let message = '';
		let peerDepsFound = false;
 
		for (let name in peerDeps) {
			packageCmd = `${packageCmd} ${name}@"${peerDeps[name]}"`;
			message = `${message}installing peer dependency ${name} with version ${peerDeps[name]}\n`;
			peerDepsFound = true;
		}
		if (peerDepsFound) {
			packageCmd = `${packageCmd} --no-save`;
			grunt.log.write(message);
			try {
				exec(packageCmd, { stdio: 'ignore' });
				grunt.log.ok('complete.');
			} catch (error) {
				grunt.log.verbose.error(error);
				grunt.log.error('failed.');
			}
		}
		else {
			grunt.log.write('No peer dependencies detected.');
		}
	});
};