refactor pipeline to remove duplicated code

This commit is contained in:
Iuri Matias 2018-01-17 15:29:34 -05:00
parent 80e8f6323a
commit d09b94a5db
1 changed files with 59 additions and 113 deletions

View File

@ -55,26 +55,7 @@ class Pipeline {
async.waterfall([ async.waterfall([
function findImports(next) { function findImports(next) {
webpack({ self.webpackRun(file.filename, {}, false, importsList, next);
entry: utils.joinPath(fs.dappPath(), file.filename),
output: {
libraryTarget: 'umd',
path: utils.joinPath(fs.dappPath(), '.embark'),
filename: file.filename
},
resolve: {
alias: importsList,
modules: [
fs.embarkPath('node_modules'),
utils.joinPath(fs.dappPath(), 'node_modules')
]
},
externals: function(context, request, callback) {
callback();
}
}).run((_err, _stats) => {
next();
});
}, },
function changeCwd(next) { function changeCwd(next) {
@ -84,20 +65,7 @@ class Pipeline {
}, },
function findImportsPhase2(next) { function findImportsPhase2(next) {
webpack({ self.webpackRun(file.filename, {
entry: utils.joinPath(fs.dappPath(), file.filename),
output: {
libraryTarget: 'umd',
path: utils.joinPath(fs.dappPath(), '.embark'),
filename: file.filename
},
resolve: {
alias: importsList,
modules: [
fs.embarkPath('node_modules'),
utils.joinPath(fs.dappPath(), 'node_modules')
]
},
externals: function(context, request, callback) { externals: function(context, request, callback) {
if (request === utils.joinPath(fs.dappPath(), file.filename)) { if (request === utils.joinPath(fs.dappPath(), file.filename)) {
callback(); callback();
@ -111,89 +79,12 @@ class Pipeline {
} }
callback(null, "amd " + Math.random()); callback(null, "amd " + Math.random());
} }
},
module: {
rules: [
{
test: /\.css$/,
use: [{loader: "style-loader"}, {loader: "css-loader"}]
},
{
test: /\.scss$/,
use: [{loader: "style-loader"}, {loader: "css-loader"}]
},
{
test: /\.(png|woff|woff2|eot|ttf|svg)$/,
loader: 'url-loader?limit=100000'
},
{
test: /\.js$/,
loader: "babel-loader",
exclude: /(node_modules|bower_components)/,
options: {
presets: ['es2016', 'es2017', 'react'],
plugins: ["babel-plugin-webpack-aliases"]
}
}
]
} }
}).run((_err, _stats) => { }, true, importsList, next);
next();
});
}, },
function runWebpack(next) { function runWebpack(next) {
webpack({ self.webpackRun(file.filename, {}, true, importsList, next);
entry: utils.joinPath(fs.dappPath(), file.filename),
output: {
libraryTarget: 'umd',
path: utils.joinPath(fs.dappPath(), '.embark'),
filename: file.filename
},
resolve: {
alias: importsList,
modules: [
fs.embarkPath('node_modules'),
utils.joinPath(fs.dappPath(), 'node_modules')
]
},
externals: function(context, request, callback) {
if (request === "Embark/contracts/all") {
return callback(null, fs.readFileSync(utils.joinPath(fs.dappPath(), '.embark', 'embark.js')));
// should be .toString() ?
}
callback();
},
module: {
rules: [
{
test: /\.css$/,
use: [{loader: "style-loader"}, {loader: "css-loader"}]
},
{
test: /\.scss$/,
use: [{loader: "style-loader"}, {loader: "css-loader"}]
},
{
test: /\.(png|woff|woff2|eot|ttf|svg)$/,
loader: 'url-loader?limit=100000'
},
{
test: /\.js$/,
loader: "babel-loader",
exclude: /(node_modules|bower_components)/,
options: {
presets: ['es2016', 'es2017', 'react'],
plugins: ["babel-plugin-webpack-aliases"]
}
}
]
}
}).run((_err, _stats) => {
next();
});
}, },
function changeCwdBack(next) { function changeCwdBack(next) {
@ -261,6 +152,61 @@ class Pipeline {
}); });
} }
webpackRun(filename, options, includeModules, importsList, callback) {
let defaultOptions = {
entry: utils.joinPath(fs.dappPath(), filename),
output: {
libraryTarget: 'umd',
path: utils.joinPath(fs.dappPath(), '.embark'),
filename: filename
},
resolve: {
alias: importsList,
modules: [
fs.embarkPath('node_modules'),
utils.joinPath(fs.dappPath(), 'node_modules')
]
},
externals: function(context, request, callback) {
callback();
}
};
let webpackOptions = utils.recursiveMerge(defaultOptions, options);
if (includeModules) {
webpackOptions.module = {
rules: [
{
test: /\.css$/,
use: [{loader: "style-loader"}, {loader: "css-loader"}]
},
{
test: /\.scss$/,
use: [{loader: "style-loader"}, {loader: "css-loader"}]
},
{
test: /\.(png|woff|woff2|eot|ttf|svg)$/,
loader: 'url-loader?limit=100000'
},
{
test: /\.js$/,
loader: "babel-loader",
exclude: /(node_modules|bower_components)/,
options: {
presets: ['es2016', 'es2017', 'react'],
plugins: ["babel-plugin-webpack-aliases"]
}
}
]
};
}
webpack(webpackOptions).run((_err, _stats) => {
callback();
});
}
buildContracts(contractsJSON) { buildContracts(contractsJSON) {
fs.mkdirpSync(utils.joinPath(fs.dappPath(), this.buildDir, 'contracts')); fs.mkdirpSync(utils.joinPath(fs.dappPath(), this.buildDir, 'contracts'));