diff --git a/packages/generators/types/index.ts b/packages/generators/types/index.ts index 449dc0cc477..32ed902ab23 100644 --- a/packages/generators/types/index.ts +++ b/packages/generators/types/index.ts @@ -214,7 +214,7 @@ export interface WebpackOptions { }; } -interface Rule { +export interface Rule { enforce?: "pre" | "post"; exclude?: IRuleSetCondition; include?: IRuleSetCondition; diff --git a/packages/generators/utils/language.ts b/packages/generators/utils/language.ts index 266a16c8ccb..7d3c1f901cf 100644 --- a/packages/generators/utils/language.ts +++ b/packages/generators/utils/language.ts @@ -1,21 +1,10 @@ +import { Rule } from "../types"; + export enum LangType { ES6 = "ES6", Typescript = "Typescript", } -interface ModuleRule extends Object { - include?: string[]; - exclude?: string[]; - loader: string; - options?: { - plugins: string[]; - presets: Preset[][]; - }; - test: string; -} - -type Preset = string | object; - const replaceExt = (path: string, ext: string): string => path.substr(0, path.lastIndexOf(".")) + `${ext}'`; @@ -54,14 +43,14 @@ function getEntryFolders(self): string[] { * * Returns an module.rule object for the babel loader * @param {string[]} includeFolders An array of folders to include - * @returns {ModuleRule} A configuration containing the babel-loader with env preset + * @returns {Rule} A configuration containing the babel-loader with env preset */ -export function getBabelLoader(includeFolders: string[]): ModuleRule { +export function getBabelLoader(includeFolders: string[]): Rule { const include = includeFolders.map((folder: string): string => `path.resolve(__dirname, '${folder}')` ); return { - test: "/\.js$/", + test: "/\.(js|jsx)$/", include, loader: "'babel-loader'", options: { @@ -82,14 +71,14 @@ export function getBabelLoader(includeFolders: string[]): ModuleRule { * * Returns an module.rule object for the typescript loader * @param {string[]} includeFolders An array of folders to include - * @returns {ModuleRule} A configuration containing the ts-loader + * @returns {Rule} A configuration containing the ts-loader */ -export function getTypescriptLoader(includeFolders: string[]): ModuleRule { +export function getTypescriptLoader(includeFolders: string[]): Rule { const include = includeFolders.map((folder: string): string => `path.resolve(__dirname, '${folder}')` ); return { - test: "/\.tsx?$/", + test: "/\.(ts|tsx)?$/", loader: "'ts-loader'", include, exclude: ["/node_modules/"],