-
-
Notifications
You must be signed in to change notification settings - Fork 668
Expand file tree
/
Copy pathmigrate.js
More file actions
36 lines (35 loc) · 1.13 KB
/
migrate.js
File metadata and controls
36 lines (35 loc) · 1.13 KB
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
31
32
33
34
35
36
const fs = require('fs');
const diff = require('diff');
const chalk = require('chalk');
const transform = require('./transformations').transform;
const inquirer = require('inquirer');
module.exports = (currentConfigPath, outputConfigPath) => {
let currentConfig = fs.readFileSync(currentConfigPath, 'utf8');
const outputConfig = transform(currentConfig);
const diffOutput = diff.diffLines(currentConfig, outputConfig);
diffOutput.map(diffLine => {
if (diffLine.added) {
process.stdout.write(chalk.green(`+ ${diffLine.value}`));
} else if (diffLine.removed) {
process.stdout.write(chalk.red(`- ${diffLine.value}`));
}
});
inquirer
.prompt([
{
type: 'confirm',
name: 'confirmMigration',
message: 'Are you sure these changes are fine?',
default: 'Y'
}
])
.then(answers => {
if (answers['confirmMigration']) {
// TODO validate the config
fs.writeFileSync(outputConfigPath, outputConfig, 'utf8');
process.stdout.write(chalk.green(`Congratulations! Your new webpack v2 config file is at ${outputConfigPath}`));
} else {
process.stdout.write(chalk.yellow('Migration aborted'));
}
});
};