Skip to content
This repository was archived by the owner on Jan 26, 2019. It is now read-only.

Commit 27e76be

Browse files
azakordonetsgaearon
authored andcommitted
Beaufity output of eject.js script (#769)
* Beaufity output of eject.js script * change formatting of the eject.js output and move colors to cyan * change message about file copy * add missing three dots to some statements in eject.js script * change color of "copying files" line and do not repeat copy path anymore in log * fix merge conflict * Remove yellow color from "Removing dependency" line * changing color to "Adding dependency" line * Add line that outputs which react script is getting replaced by similar node script * remove not used anymore colors * add console line about updating Jest configs * fix typo * change formatting of replacing script output in eject.js * remove "Writing package.json" file console output * make quotes cyan in "Replacing script" console output * update console log output for Jest, Babel, ESLint update and group them under one statement * Style nits
1 parent 92d9cda commit 27e76be

File tree

1 file changed

+30
-14
lines changed

1 file changed

+30
-14
lines changed

packages/react-scripts/scripts/eject.js

+30-14
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,20 @@ var path = require('path');
1313
var prompt = require('react-dev-utils/prompt');
1414
var rimrafSync = require('rimraf').sync;
1515
var spawnSync = require('cross-spawn').sync;
16+
var chalk = require('chalk');
17+
var green = chalk.green;
18+
var cyan = chalk.cyan;
1619

1720
prompt(
1821
'Are you sure you want to eject? This action is permanent.',
1922
false
2023
).then(shouldEject => {
2124
if (!shouldEject) {
22-
console.log('Close one! Eject aborted.');
25+
console.log(cyan('Close one! Eject aborted.'));
2326
process.exit(1);
2427
}
2528

2629
console.log('Ejecting...');
27-
console.log();
2830

2931
var ownPath = path.join(__dirname, '..');
3032
var appPath = path.join(ownPath, '..', '..');
@@ -59,8 +61,10 @@ prompt(
5961
fs.mkdirSync(path.join(appPath, 'config', 'jest'));
6062
fs.mkdirSync(path.join(appPath, 'scripts'));
6163

64+
console.log();
65+
console.log('Copying files to ' + cyan(appPath));
6266
files.forEach(function(file) {
63-
console.log('Copying ' + file + ' to ' + appPath);
67+
console.log(' Copying ' + cyan(file));
6468
var content = fs
6569
.readFileSync(path.join(ownPath, file), 'utf8')
6670
// Remove dead code from .js files on eject
@@ -77,53 +81,65 @@ prompt(
7781
var babelConfig = JSON.parse(fs.readFileSync(path.join(ownPath, '.babelrc'), 'utf8'));
7882
var eslintConfig = JSON.parse(fs.readFileSync(path.join(ownPath, '.eslintrc'), 'utf8'));
7983

84+
console.log(cyan('Updating dependencies...'));
8085
var ownPackageName = ownPackage.name;
81-
console.log('Removing dependency: ' + ownPackageName);
86+
console.log(' Removing dependency: ' + cyan(ownPackageName));
8287
delete appPackage.devDependencies[ownPackageName];
8388

8489
Object.keys(ownPackage.dependencies).forEach(function (key) {
8590
// For some reason optionalDependencies end up in dependencies after install
8691
if (ownPackage.optionalDependencies[key]) {
8792
return;
8893
}
89-
console.log('Adding dependency: ' + key);
94+
console.log(' Adding dependency: ' + cyan(key));
9095
appPackage.devDependencies[key] = ownPackage.dependencies[key];
9196
});
92-
93-
console.log('Updating scripts');
97+
console.log();
98+
console.log(cyan('Updating scripts...'));
9499
delete appPackage.scripts['eject'];
95100
Object.keys(appPackage.scripts).forEach(function (key) {
96101
appPackage.scripts[key] = appPackage.scripts[key]
97102
.replace(/react-scripts (\w+)/g, 'node scripts/$1.js');
103+
console.log(
104+
' Replacing ' +
105+
cyan('\"react-scripts ' + key + '\"') +
106+
' with ' +
107+
cyan('\"' + appPackage.scripts[key] + '\"')
108+
);
98109
});
99110

111+
console.log();
112+
console.log(cyan('Adding configuration to ') + 'package.json' + cyan('...'));
100113
// Add Jest config
114+
console.log(' Adding ' + cyan('Jest') + ' configuration');
101115
appPackage.jest = createJestConfig(
102116
filePath => path.join('<rootDir>', filePath),
103117
null,
104118
true
105119
);
106120

107121
// Add Babel config
122+
123+
console.log(' Adding ' + cyan('Babel') + ' preset');
108124
appPackage.babel = babelConfig;
109125

110126
// Add ESlint config
127+
console.log(' Adding ' + cyan('ESLint') +' configuration');
111128
appPackage.eslintConfig = eslintConfig;
112129

113-
console.log('Writing package.json');
114130
fs.writeFileSync(
115131
path.join(appPath, 'package.json'),
116132
JSON.stringify(appPackage, null, 2)
117133
);
118134
console.log();
119135

120-
console.log('Running npm install...');
136+
console.log(cyan('Running npm install...'));
121137
rimrafSync(ownPath);
122138
spawnSync('npm', ['install'], {stdio: 'inherit'});
123-
console.log('Ejected successfully!');
139+
console.log(green('Ejected successfully!'));
124140
console.log();
125141

126-
console.log('Please consider sharing why you ejected in this survey:');
127-
console.log(' http://goo.gl/forms/Bi6CZjk1EqsdelXk1');
128-
console.log();
129-
});
142+
console.log(green('Please consider sharing why you ejected in this survey:'));
143+
console.log(green(' http://goo.gl/forms/Bi6CZjk1EqsdelXk1'));
144+
console.log()
145+
})

0 commit comments

Comments
 (0)