Skip to content

Commit 093a36d

Browse files
committedMay 28, 2019
feat(init): wip typescript support
1 parent f46f4e5 commit 093a36d

File tree

2 files changed

+33
-16
lines changed

2 files changed

+33
-16
lines changed
 

‎packages/generators/init-generator.ts

+9-14
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { Confirm, Input, List } from "@webpack-cli/webpack-scaffold";
1010

1111
import { WebpackOptions } from "./types";
1212
import entryQuestions from "./utils/entry";
13-
import getBabelPlugin from "./utils/module";
13+
import langQuestionHandler from "./utils/language";
1414
import styleQuestionHandler, { ILoader, StylingType } from "./utils/style";
1515
import tooltip from "./utils/tooltip";
1616

@@ -194,22 +194,17 @@ export default class InitGenerator extends Generator {
194194
})
195195
.then(() =>
196196
this.prompt([
197-
Confirm("useBabel", "Will you be using ES2015?"),
197+
List("langType", "Will you use one of the below JS solutions?", [
198+
"ES6",
199+
"Typescript",
200+
"No",
201+
]),
198202
]),
199203
)
200-
.then((useBabelAnswer: {
201-
useBabel: boolean;
204+
.then((langTypeAnswer: {
205+
langType: boolean;
202206
}) => {
203-
if (useBabelAnswer.useBabel) {
204-
this.configuration.config.webpackOptions.module.rules.push(
205-
getBabelPlugin(),
206-
);
207-
this.dependencies.push(
208-
"babel-loader",
209-
"@babel/core",
210-
"@babel/preset-env",
211-
);
212-
}
207+
langQuestionHandler(this, langTypeAnswer.langType);
213208
})
214209
.then(() =>
215210
this.prompt([

‎packages/generators/utils/module.ts ‎packages/generators/utils/language.ts

+24-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
interface Module extends Object {
1+
export enum LangType {
2+
ES6 = "ES6",
3+
Typescript = "Typescript",
4+
}
5+
6+
interface ModuleRule extends Object {
27
include: string[];
38
loader: string;
49
options: {
@@ -16,7 +21,7 @@ type Preset = string | object;
1621
*
1722
* @returns {Function} A callable function that adds the babel-loader with env preset
1823
*/
19-
export default function(): Module {
24+
export function getBabelPlugin(): ModuleRule {
2025
return {
2126
include: ["path.resolve(__dirname, 'src')"],
2227
loader: "'babel-loader'",
@@ -34,3 +39,20 @@ export default function(): Module {
3439
test: `${new RegExp(/\.js$/)}`
3540
};
3641
}
42+
43+
export default function language(self, langType) {
44+
switch (langType) {
45+
case LangType.ES6:
46+
self.configuration.config.webpackOptions.module.rules.push(
47+
getBabelPlugin(),
48+
);
49+
self.dependencies.push(
50+
"babel-loader",
51+
"@babel/core",
52+
"@babel/preset-env",
53+
);
54+
break;
55+
case LangType.Typescript:
56+
break;
57+
}
58+
}

0 commit comments

Comments
 (0)
Please sign in to comment.