Skip to content

Commit

Permalink
Merge pull request #893 from anikethsaha/chore/plugin-name-add-generator
Browse files Browse the repository at this point in the history
chore(add-generator): changed the naming of the plugin in config file
  • Loading branch information
evenstensberg committed May 30, 2019
2 parents a36678a + 61697b8 commit de9c89c
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 29 deletions.
14 changes: 14 additions & 0 deletions packages/generators/__tests__/add-generator.test.ts
@@ -0,0 +1,14 @@
import { generatePluginName } from "../utils/plugins"

describe("generatePluginName", () => {
it("should return webpack Standard Plugin Name for Name : extract-text-webpack-plugin", () => {
const pluginName = generatePluginName("extract-text-webpack-plugin");
expect(pluginName).toEqual("ExtractTextWebpackPlugin");
});

it("should return webpack Standard Plugin Name for Name : webpack.DefinePlugin", () => {
const pluginName = generatePluginName("webpack.DefinePlugin");
expect(pluginName).toEqual("webpack.DefinePlugin");
});
});

31 changes: 4 additions & 27 deletions packages/generators/add-generator.ts
Expand Up @@ -11,26 +11,11 @@ import { AutoComplete, Confirm, Input, List } from "@webpack-cli/webpack-scaffol

import { SchemaProperties, WebpackOptions } from "./types";
import entryQuestions from "./utils/entry";

import webpackDevServerSchema from "webpack-dev-server/lib/options.json";
import webpackSchema from "./utils/optionsSchema.json";
import { generatePluginName } from "./utils/plugins";
import * as webpackDevServerSchema from "webpack-dev-server/lib/options.json";
import * as webpackSchema from "./utils/optionsSchema.json";
const PROPS: string[] = Array.from(PROP_TYPES.keys());

/**
*
* Replaces the string with a substring at the given index
* https://gist.github.com/efenacigiray/9367920
*
* @param {String} str - string to be modified
* @param {Number} index - index to replace from
* @param {String} replace - string to replace starting from index
*
* @returns {String} string - The newly mutated string
*
*/
function replaceAt(str: string, index: number, replace: string): string {
return str.substring(0, index) + replace + str.substring(index + 1);
}

/**
*
Expand Down Expand Up @@ -395,15 +380,7 @@ export default class AddGenerator extends Generator {
(p: boolean): void => {
if (p) {
this.dependencies.push(answerToAction.actionAnswer);
const normalizePluginName = answerToAction.actionAnswer.replace(
"-webpack-plugin",
"Plugin"
);
const pluginName = replaceAt(
normalizePluginName,
0,
normalizePluginName.charAt(0).toUpperCase()
);
const pluginName = generatePluginName(answerToAction.actionAnswer)
this.configuration.config.topScope.push(
`const ${pluginName} = require("${answerToAction.actionAnswer}")`
);
Expand Down
42 changes: 41 additions & 1 deletion packages/generators/utils/plugins.ts
@@ -1,3 +1,4 @@

/**
*
* Callable function with the initial plugins
Expand All @@ -6,6 +7,45 @@
* that consists of terser-webpack-plugin
*/

export default function(): string[] {
export default function (): string[] {
return ["new TerserPlugin()"];
}

/**
*
* Replaces the string with a substring at the given index
* https://gist.github.com/efenacigiray/9367920
*
* @param {String} str - string to be modified
* @param {Number} index - index to replace from
* @param {String} replace - string to replace starting from index
*
* @returns {String} string - The newly mutated string
*
*/

export const replaceAt = (str: string, index: number, replace: string) : string => {
return str.substring(0, index) + replace + str.substring(index + 1);
}


/**
*
* Generate a webpack standard webpack plugin name from the plugin name from the Answer
*
* @param {String} rawPluginName - plugin name from answer
*
* @returns {String} string - the webpack standard plugin name
*
*/


export const generatePluginName = (rawPluginName: string): string => {
let myPluginNameArray : string[];
myPluginNameArray = rawPluginName.split("-");
const pluginArrLength : number = myPluginNameArray.length;
for (let i = 0; i < pluginArrLength && pluginArrLength > 1 ; i++) {
myPluginNameArray[i] = replaceAt(myPluginNameArray[i], 0, myPluginNameArray[i].charAt(0).toUpperCase());
}
return myPluginNameArray.join("")
}
3 changes: 2 additions & 1 deletion tsconfig.base.json
Expand Up @@ -4,7 +4,8 @@
"module": "commonjs",
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"skipLibCheck": true
"skipLibCheck": true,
"resolveJsonModule": true,
},
"include": ["packages/**/*.ts"],
"exclude": [
Expand Down

0 comments on commit de9c89c

Please sign in to comment.