Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
eab9337
Merge pull request #178 from pdehaan/i177
TheLarkInn Aug 27, 2017
b3186a9
chore: Use prettier (#173)
DanielaValero Sep 13, 2017
6525162
[Feature] Added support to Flow inside transformations (#174)
ematipico Sep 18, 2017
c09be3b
docs: Documentation for migrate (#175)
thescientist13 Sep 20, 2017
e887dba
Feature/generate loader (#183)
ianjsikes Sep 29, 2017
c8633c0
Add unit tests for CLI and add flow compilation (#186)
evenstensberg Oct 5, 2017
79c7360
ast for devServer (#185)
evenstensberg Oct 5, 2017
acb6285
feat: replace yarn backup w/ normal yarn (#160)
evenstensberg Oct 5, 2017
21ebcbe
Use yarn if available (#189)
evenstensberg Oct 5, 2017
c7691e3
bump version to 1.3.4
evenstensberg Oct 5, 2017
5470ef2
update package.json
evenstensberg Oct 5, 2017
7a099c7
1.3.5
evenstensberg Oct 5, 2017
f24f06b
prepublish -> postinstall
evenstensberg Oct 5, 2017
710e6cf
1.3.6
evenstensberg Oct 5, 2017
40ec7ca
temp fix to prepublish issue
evenstensberg Oct 5, 2017
2a18dfa
1.3.7
evenstensberg Oct 5, 2017
3a30f61
add propper post install
evenstensberg Oct 5, 2017
4b8796e
1.3.8
evenstensberg Oct 5, 2017
bb59416
re-add manual build step
evenstensberg Oct 5, 2017
f9b60b7
1.3.9
evenstensberg Oct 5, 2017
08d07e7
refactor
evenstensberg Oct 22, 2017
4aff633
bump version
evenstensberg Oct 22, 2017
6b1bb23
disable published pkg
evenstensberg Oct 22, 2017
1929487
Merge branch 'master' into build-step
evenstensberg Oct 22, 2017
49f33f2
add ignore patterns
evenstensberg Oct 22, 2017
78e39f1
add more ignore patterns for npm
evenstensberg Oct 22, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .babelrc
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"presets": ["es2015", "stage-3"]
"presets": ["es2015", "stage-3", "flow"]
}
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
**/__testfixtures__/*
coverage
test
dist
4 changes: 2 additions & 2 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
module.exports = {
"root": true,
"plugins": ["node"],
"extends": ["eslint:recommended", "plugin:node/recommended"],
"plugins": ["node", "flowtype"],
"extends": ["eslint:recommended", "plugin:node/recommended", "plugin:flowtype/recommended"],
"env": {
"node": true,
"es6": true,
Expand Down
11 changes: 11 additions & 0 deletions .flowconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[ignore]

[include]

[libs]
flow-typed

[options]
module.system.node.resolve_dirname=./lib/
module.system.node.resolve_dirname=node_modules
experimental.const_params=false
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,8 @@ yarn-error.log
# Jest Coverage
coverage

# Distribution Build
dist

# Test Compilation
test/js/*
15 changes: 15 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
test
coverage
lib
.travis.yml
.eslintrc*
.fitcommitjsrc.json
.vscode
.editorconfig
.eslintignore
__mocks__
__testfixtures__
*.test.js
*.input.js
types.js
*.spec.js
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,6 @@ before_script:
- bash <(curl -s https://codecov.io/bash)

script:
- npm run prepublish
- npm run lint
- npm run test
32 changes: 14 additions & 18 deletions bin/webpack.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,20 @@ var resolveCwd = require("resolve-cwd");
// Local version replace global one
var localCLI = resolveCwd.silent("webpack-cli/bin/webpack");

if (process.argv.slice(2).indexOf("init") >= 0) {
var initPkgs =
process.argv.slice(2).length === 1 ? [] : [process.argv.slice(2).pop()];
//eslint-disable-next-line
return require("../lib/initialize")(initPkgs);
} else if (process.argv.slice(2).indexOf("migrate") >= 0) {
var filePaths =
process.argv.slice(2).length === 1 ? [] : [process.argv.slice(2).pop()];
if (!filePaths.length) {
throw new Error("Please specify a path to your webpack config");
}
var inputConfigPath = path.resolve(process.cwd(), filePaths[0]);
//eslint-disable-next-line
return require("../lib/migrate.js")(inputConfigPath, inputConfigPath);
} else if (process.argv.slice(2).indexOf("generate-loader") >= 0) {
return require("../lib/generate-loader/index.js")();
} else if (process.argv.slice(2).indexOf("generate-plugin") >= 0) {
return require("../lib/generate-plugin/index.js")();
const NON_COMPILATION_ARGS = [
"init",
"migrate",
"generate-loader",
"generate-plugin"
];

const NON_COMPILATION_CMD = process.argv.find(arg => {
return NON_COMPILATION_ARGS.find(a => a === arg);
});

if (NON_COMPILATION_CMD) {
// eslint-disable-next-line
return require("../dist/index")(NON_COMPILATION_CMD, process.argv);
}

if (localCLI && path.relative(localCLI, __filename) !== "") {
Expand Down
66 changes: 66 additions & 0 deletions dist/creator/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
"use strict";

const yeoman = require("yeoman-environment");
const Generator = require("yeoman-generator");
const path = require("path");
const defaultGenerator = require("./yeoman/webpack-generator");
const WebpackAdapter = require("./yeoman/webpack-adapter");
const runTransform = require("./transformations/index");

/*
* @function creator
*
* Runs yeoman and runs the transformations based on the object
* built up from an author/user
*
* @param { String } options - An path to the given generator
* @returns { Function } runTransform - Run transformations based on yeoman prompt
*/

function creator(options) {
let env = yeoman.createEnv("webpack", null, new WebpackAdapter());
const generatorName = options
? replaceGeneratorName(path.basename(options[0]))
: "webpack-default-generator";
if (options) {
const WebpackGenerator = class extends Generator {
initializing() {
options.forEach(path => {
return this.composeWith(require.resolve(path));
});
}
};
env.registerStub(WebpackGenerator, generatorName);
} else {
env.registerStub(defaultGenerator, "webpack-default-generator");
}

env.run(generatorName).on("end", () => {
if (generatorName !== "webpack-default-generator") {
//HACK / FIXME
env = env.options.env;
return runTransform(env.configuration);
} else {
return runTransform(env.getArgument("configuration"));
}
});
}

/*
* @function replaceGeneratorName
*
* Replaces the webpack-addons pattern with the end of the addons name merged
* with 'generator'
*
* @param { String } name - name of the generator
* @returns { String } name - replaced pattern of the name
*/

function replaceGeneratorName(name) {
return name.replace(/(webpack-addons)?([^:]+)(:.*)?/g, "generator$2");
}

module.exports = {
creator,
replaceGeneratorName
};
10 changes: 10 additions & 0 deletions dist/creator/index.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
"use strict";

const replaceGeneratorName = require("./index").replaceGeneratorName;

describe("replaceGeneratorName", () => {
it("should replace a pattern of an addon", () => {
const generatorName = replaceGeneratorName("webpack-addons-thefox");
expect(generatorName).toEqual("generator-thefox");
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = {
entry: 'index.js',
output: {
filename: 'bundle.js'
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = {
entry: 'index.js',
output: {
filename: 'bundle.js'
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = {
entry: 'index.js',
output: {
filename: 'bundle.js'
}
}
32 changes: 32 additions & 0 deletions dist/creator/transformations/context/context.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
"use strict";

const utils = require("../../../transformations/utils");

/*
*
* Transform for context. Finds the context property from yeoman and creates a
* property based on what the user has given us.
*
* @param j — jscodeshift API
* @param ast - jscodeshift API
* @param { Object } webpackProperties - Object containing transformation rules
* @returns ast - jscodeshift API
*/

module.exports = function(j, ast, webpackProperties) {
if (webpackProperties) {
return ast
.find(j.ObjectExpression)
.filter(p =>
utils.isAssignment(
j,
p,
utils.pushCreateProperty,
"context",
webpackProperties
)
);
} else {
return ast;
}
};
7 changes: 7 additions & 0 deletions dist/creator/transformations/context/context.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
"use strict";

const defineTest = require("../../../transformations/defineTest");

defineTest(__dirname, "context", "context-0", "path.resolve(__dirname, 'app')");
defineTest(__dirname, "context", "context-1", "'./some/fake/path'");
defineTest(__dirname, "context", "context-2", "contextVariable");
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = {
entry: 'index.js',
output: {
filename: 'bundle.js'
},
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = {
entry: 'index.js',
output: {
filename: 'bundle.js'
}
}
40 changes: 40 additions & 0 deletions dist/creator/transformations/devServer/devServer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
"use strict";

const utils = require("../../../transformations/utils");

/*
*
* Transform for devServer. Finds the devServer property from yeoman and creates a
* property based on what the user has given us.
*
* @param j — jscodeshift API
* @param ast - jscodeshift API
* @param { Object } webpackProperties - Object containing transformation rules
* @returns ast - jscodeshift API
*/

module.exports = function(j, ast, webpackProperties) {
function createDevServerProperty(p) {
utils.pushCreateProperty(j, p, "devServer", j.objectExpression([]));
return utils.pushObjectKeys(j, p, webpackProperties, "devServer");
}
if (webpackProperties && typeof webpackProperties === "object") {
return ast
.find(j.ObjectExpression)
.filter(p => utils.isAssignment(null, p, createDevServerProperty));
} else if (webpackProperties && webpackProperties.length) {
return ast
.find(j.ObjectExpression)
.filter(p =>
utils.isAssignment(
j,
p,
utils.pushCreateProperty,
"devServer",
webpackProperties
)
);
} else {
return ast;
}
};
10 changes: 10 additions & 0 deletions dist/creator/transformations/devServer/devServer.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
"use strict";

const defineTest = require("../../../transformations/defineTest");

defineTest(__dirname, "devServer", "devServer-0", {
contentBase: "path.join(__dirname, 'dist')",
compress: true,
port: 9000
});
defineTest(__dirname, "devServer", "devServer-1", "someVar");
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = {
entry: 'index.js',
output: {
filename: 'bundle.js'
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = {
entry: 'index.js',
output: {
filename: 'bundle.js'
}
}
32 changes: 32 additions & 0 deletions dist/creator/transformations/devtool/devtool.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
"use strict";

const utils = require("../../../transformations/utils");

/*
*
* Transform for devtool. Finds the devtool property from yeoman and creates a
* property based on what the user has given us.
*
* @param j — jscodeshift API
* @param ast - jscodeshift API
* @param { Object } webpackProperties - Object containing transformation rules
* @returns ast - jscodeshift API
*/

module.exports = function(j, ast, webpackProperties) {
if (webpackProperties) {
return ast
.find(j.ObjectExpression)
.filter(p =>
utils.isAssignment(
j,
p,
utils.pushCreateProperty,
"devtool",
webpackProperties
)
);
} else {
return ast;
}
};
8 changes: 8 additions & 0 deletions dist/creator/transformations/devtool/devtool.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
"use strict";

const defineTest = require("../../../transformations/defineTest");

defineTest(__dirname, "devtool", "devtool-0", "'source-map'");
defineTest(__dirname, "devtool", "devtool-0", "myVariable");
defineTest(__dirname, "devtool", "devtool-1", "'cheap-module-source-map'");
defineTest(__dirname, "devtool", "devtool-1", "false");
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = {}
Loading