Skip to content

Commit 67651ae

Browse files
matheus1lvasokra
authored andcommitted
small refactor over calls
Refactor back to resolve.request Add installation if webpack-cli is not present
1 parent d4115a6 commit 67651ae

3 files changed

Lines changed: 69 additions & 39 deletions

File tree

bin/webpack.js

100644100755
Lines changed: 39 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,59 @@
1-
const {exec} = require('child_process');
1+
#!/usr/bin/env node
22

3+
const {
4+
exec
5+
} = require("child_process");
6+
const inquirer = require("inquirer");
37

48
function runCommand(command) {
5-
exec(command, (err, data) => {
6-
if(data) {
7-
console.log(data);
8-
} else {
9-
console.log(err);
9+
exec(command, (error, stdout, stderr) => {
10+
if(!error) {
11+
console.log("webpack-cli installed successfully");
12+
return true;
1013
}
14+
console.log("failed to install webpack-cli");
15+
console.error(stderr);
16+
return false;
1117
});
1218
}
1319

1420
let webpackCliInstalled = false;
1521
try {
1622
require.resolve("webpack-cli");
1723
webpackCliInstalled = true;
18-
} catch (e) {
24+
} catch(err) {
1925
webpackCliInstalled = false;
2026
}
2127

22-
if (webpackCliInstalled) {
23-
require("webpack-cli"); // eslint-disable-line node/no-missing-require, node/no-extraneous-require, node/no-unpublished-require
24-
} else {
25-
const path = require('path');
26-
const fs = require('fs');
27-
const isYarn = fs.existsSync(path.resolve(process.cwd(), 'yarn.lock'));
28-
const {prompt} = require('inquirer');
28+
if(!webpackCliInstalled) {
29+
const path = require("path");
30+
const fs = require("fs");
31+
const isYarn = fs.existsSync(path.resolve(process.cwd(), "yarn.lock"));
32+
2933
let command;
30-
31-
34+
35+
if(isYarn) {
36+
command = "yarn add -D webpack-cli";
37+
} else {
38+
command = "npm install --save-dev webpack-cli";
39+
}
40+
3241
const question = {
33-
type: 'confirm',
34-
name: 'shouldInstall',
35-
message: 'Would you like to install webpack-cli?',
42+
type: "confirm",
43+
name: "shouldInstall",
44+
message: "Would you like to install webpack-cli?",
3645
default: true
37-
}
46+
};
3847

39-
if(isYarn){
40-
command = 'yarn add webpack-cli -D';
41-
}else{
42-
command = 'npm install --save-dev webpack-cli';
43-
}
44-
45-
console.error("The CLI moved into a separate package: webpack-cli.");
46-
prompt(question).then((anwswer) => {
47-
if(answer){
48-
console.error('Installing webpack-cli')
49-
runCommand(command);
48+
console.error("The CLI moved into a separate package: webpack-cli");
49+
inquirer.prompt(question).then((answer) => {
50+
if(answer) {
51+
console.error("Installing webpack-cli");
52+
if(runCommand(command)) {
53+
require("webpack-cli"); // eslint-disable-line node/no-missing-require, node/no-extraneous-require, node/no-unpublished-require
54+
}
5055
}
51-
})
52-
53-
console.error("Please install 'webpack-cli' in addition to webpack itself to use the CLI.");
54-
console.error("-> When using npm: npm install webpack-cli -D");
55-
console.error("-> When using yarn: yarn add webpack-cli -D");
56-
process.exitCode = 1;
56+
});
57+
} else {
58+
require("webpack-cli"); // eslint-disable-line node/no-missing-require, node/no-extraneous-require, node/no-unpublished-require
5759
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"chrome-trace-event": "^0.1.1",
1313
"enhanced-resolve": "^4.0.0",
1414
"eslint-scope": "^3.7.1",
15+
"inquirer": "5.1.0",
1516
"loader-runner": "^2.3.0",
1617
"loader-utils": "^1.1.0",
1718
"memory-fs": "~0.4.1",
@@ -41,7 +42,6 @@
4142
"file-loader": "^1.1.6",
4243
"glob": "^7.1.2",
4344
"i18n-webpack-plugin": "^1.0.0",
44-
"inquire": "^0.4.8",
4545
"istanbul": "^0.4.5",
4646
"jade": "^1.11.0",
4747
"jade-loader": "~0.8.0",

yarn.lock

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1438,7 +1438,7 @@ extend@~3.0.0, extend@~3.0.1:
14381438
version "3.0.1"
14391439
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
14401440

1441-
external-editor@^2.0.4:
1441+
external-editor@^2.0.4, external-editor@^2.1.0:
14421442
version "2.1.0"
14431443
resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48"
14441444
dependencies:
@@ -2012,6 +2012,24 @@ ini@~1.3.0:
20122012
version "1.3.4"
20132013
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
20142014

2015+
inquirer@5.1.0:
2016+
version "5.1.0"
2017+
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.1.0.tgz#19da508931892328abbbdd4c477f1efc65abfd67"
2018+
dependencies:
2019+
ansi-escapes "^3.0.0"
2020+
chalk "^2.0.0"
2021+
cli-cursor "^2.1.0"
2022+
cli-width "^2.0.0"
2023+
external-editor "^2.1.0"
2024+
figures "^2.0.0"
2025+
lodash "^4.3.0"
2026+
mute-stream "0.0.7"
2027+
run-async "^2.2.0"
2028+
rxjs "^5.5.2"
2029+
string-width "^2.1.0"
2030+
strip-ansi "^4.0.0"
2031+
through "^2.3.6"
2032+
20152033
inquirer@^3.0.6:
20162034
version "3.3.0"
20172035
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9"
@@ -3831,6 +3849,12 @@ rx-lite@*, rx-lite@^4.0.8:
38313849
version "4.0.8"
38323850
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
38333851

3852+
rxjs@^5.5.2:
3853+
version "5.5.6"
3854+
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.6.tgz#e31fb96d6fd2ff1fd84bcea8ae9c02d007179c02"
3855+
dependencies:
3856+
symbol-observable "1.0.1"
3857+
38343858
safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
38353859
version "5.1.1"
38363860
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
@@ -4296,6 +4320,10 @@ svgo@^0.7.0:
42964320
sax "~1.2.1"
42974321
whet.extend "~0.9.9"
42984322

4323+
symbol-observable@1.0.1:
4324+
version "1.0.1"
4325+
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4"
4326+
42994327
table@^4.0.1:
43004328
version "4.0.2"
43014329
resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36"

0 commit comments

Comments
 (0)