refactor(@embark/pipeline): move pipeline into own package

This commit is contained in:
Pascal Precht 2019-05-10 15:31:54 +02:00 committed by Pascal Precht
parent 79873bd3e7
commit 880a3a6946
17 changed files with 140 additions and 48 deletions

View File

@ -0,0 +1,4 @@
engine-strict = true
package-lock = false
save-exact = true
scripts-prepend-node-path = true

View File

@ -0,0 +1,6 @@
# `embark-pipeline`
> Build pipeline module for Embark
Visit [embark.status.im](https://embark.status.im/) to get started with
[Embark](https://github.com/embark-framework/embark).

View File

@ -0,0 +1,72 @@
{
"name": "embark-pipeline",
"version": "4.1.0-beta.0",
"author": "Iuri Matias <iuri.matias@gmail.com>",
"contributors": [],
"description": "Build pipeline module for Embark",
"homepage": "https://github.com/embark-framework/embark/tree/master/packages/embark-pipeline#readme",
"bugs": "https://github.com/embark-framework/embark/issues",
"keywords": [
"blockchain",
"dapps",
"ethereum",
"ipfs",
"serverless",
"solc",
"solidity"
],
"files": [
"dist"
],
"license": "MIT",
"repository": {
"directory": "packages/embark-pipeline",
"type": "git",
"url": "https://github.com/embark-framework/embark.git"
},
"main": "./dist/index.js",
"scripts": {
"build": "cross-env BABEL_ENV=node babel src --copy-files --extensions \".js\" --out-dir dist --root-mode upward --source-maps",
"ci": "npm run qa",
"clean": "npm run reset",
"lint": "npm-run-all lint:*",
"lint:js": "eslint src/",
"// lint:ts": "tslint -c tslint.json \"src/**/*.ts\"",
"package": "npm pack",
"// qa": "npm-run-all lint typecheck build package",
"qa": "npm-run-all lint build package",
"reset": "npx rimraf dist embark-*.tgz package",
"start": "npm run watch",
"// typecheck": "tsc",
"watch": "run-p watch:*",
"watch:build": "npm run build -- --verbose --watch",
"// watch:typecheck": "npm run typecheck -- --preserveWatchOutput --watch"
},
"eslintConfig": {
"extends": "../../.eslintrc.json"
},
"dependencies": {
"@babel/runtime-corejs2": "7.3.1",
"async": "2.6.1",
"embark-core": "^4.1.0-beta.0",
"embark-i18n": "^4.1.0-beta.0",
"embark-utils": "^4.1.0-beta.0",
"find-up": "2.1.0",
"webpack": "4.29.3"
},
"devDependencies": {
"@babel/cli": "7.2.3",
"@babel/core": "7.2.2",
"cross-env": "5.2.0",
"eslint": "5.7.0",
"npm-run-all": "4.1.5",
"rimraf": "2.6.3",
"tslint": "5.16.0",
"typescript": "3.4.5"
},
"engines": {
"node": ">=8.12.0",
"npm": ">=6.4.1",
"yarn": ">=1.12.3"
}
}

View File

@ -1,11 +1,10 @@
const path = require('path'); const path = require('path');
const async = require('async'); const async = require('async');
const utils = require('../../utils/utils.js');
import { __ } from 'embark-i18n'; import { __ } from 'embark-i18n';
import {joinPath, LongRunningProcessTimer} from 'embark-utils'; import { joinPath, LongRunningProcessTimer, fileTreeSort } from 'embark-utils';
import { dappPath, ProcessLauncher } from 'embark-core'; import { dappPath, ProcessLauncher } from 'embark-core';
const constants = require('embark-core/constants'); const constants = require('embark-core/constants');
const WebpackConfigReader = require('../pipeline/webpackConfigReader'); const WebpackConfigReader = require('./webpackConfigReader');
class Pipeline { class Pipeline {
constructor(embark, options) { constructor(embark, options) {
@ -118,7 +117,7 @@ class Pipeline {
dirname: dir, dirname: dir,
path: path.join(dir, name), path: path.join(dir, name),
isHidden: (name.indexOf('.') === 0 || name === "node_modules"), isHidden: (name.indexOf('.') === 0 || name === "node_modules"),
children: utils.fileTreeSort(walk(path.join(dir, name), filelist)) children: fileTreeSort(walk(path.join(dir, name), filelist))
}; };
} }
return { return {
@ -129,7 +128,7 @@ class Pipeline {
isHidden: (name.indexOf('.') === 0 || name === "node_modules") isHidden: (name.indexOf('.') === 0 || name === "node_modules")
}; };
}); });
const files = utils.fileTreeSort(walk(dappPath())); const files = fileTreeSort(walk(dappPath()));
res.send(files); res.send(files);
} }
); );
@ -237,7 +236,8 @@ class Pipeline {
action: constants.pipeline.init, action: constants.pipeline.init,
options: { options: {
webpackConfigName: self.webpackConfigName, webpackConfigName: self.webpackConfigName,
pipelineConfig: self.pipelineConfig pipelineConfig: self.pipelineConfig,
fs: self.embark.fs
} }
}); });
webpackProcess.send({action: constants.pipeline.build, assets: self.assetFiles, importsList}); webpackProcess.send({action: constants.pipeline.build, assets: self.assetFiles, importsList});

View File

@ -1,6 +1,7 @@
import { dappPath, embarkPath } from 'embark-core'; import { dappPath } from 'embark-core';
const {errorMessage} = require('../../utils/utils'); import { errorMessage } from 'embark-utils';
const fs = require('fs-extra'); const fs = require('fs-extra');
import * as path from 'path';
class WebpackConfigReader { class WebpackConfigReader {
constructor(options) { constructor(options) {
@ -9,7 +10,7 @@ class WebpackConfigReader {
async readConfig(callback){ async readConfig(callback){
const dappConfigPath = dappPath('webpack.config.js'); const dappConfigPath = dappPath('webpack.config.js');
const defaultConfigPath = embarkPath('dist/lib/modules/pipeline', 'webpack.config.js'); const defaultConfigPath = path.resolve(__dirname, 'webpack.config.js');
let config, configPath; let config, configPath;
try { try {

View File

@ -1,8 +1,8 @@
import { dappPath, ProcessWrapper } from 'embark-core'; import { dappPath, ProcessWrapper } from 'embark-core';
import { errorMessage } from 'embark-utils';
const constants = require('embark-core/constants'); const constants = require('embark-core/constants');
const webpack = require('webpack'); const webpack = require('webpack');
const writeFile = require('util').promisify(require('fs').writeFile); const writeFile = require('util').promisify(require('fs').writeFile);
const {errorMessage} = require('../../utils/utils');
const WebpackConfigReader = require('./webpackConfigReader'); const WebpackConfigReader = require('./webpackConfigReader');
let webpackProcess; let webpackProcess;

View File

@ -0,0 +1,4 @@
{
"extends": "../../tsconfig.json",
"include": ["src/**/*"]
}

View File

@ -0,0 +1,3 @@
{
"extends": "../../tslint.json"
}

View File

@ -109,6 +109,25 @@ function copyToClipboard(text) {
clipboardy.writeSync(text); clipboardy.writeSync(text);
} }
function byName(a, b) {
return a.name.localeCompare(b.name);
}
function isFolder(node) {
return node.children && node.children.length;
}
function isNotFolder(node){
return !isFolder(node);
}
function fileTreeSort(nodes){
const folders = nodes.filter(isFolder).sort(byName);
const files = nodes.filter(isNotFolder).sort(byName);
return folders.concat(files);
}
function proposeAlternative(word, _dictionary, _exceptions) { function proposeAlternative(word, _dictionary, _exceptions) {
const propose = require('propose'); const propose = require('propose');
let exceptions = _exceptions || []; let exceptions = _exceptions || [];
@ -226,6 +245,15 @@ function joinPath() {
function tmpDir(...args) { return joinPath(os.tmpdir(), ...args); } function tmpDir(...args) { return joinPath(os.tmpdir(), ...args); }
function errorMessage(e) {
if (typeof e === 'string') {
return e;
} else if (e && e.message) {
return e.message;
}
return e;
}
const Utils = { const Utils = {
buildUrl, buildUrl,
buildUrlFromConfig, buildUrlFromConfig,
@ -242,11 +270,13 @@ const Utils = {
decodeParams, decodeParams,
dockerHostSwap, dockerHostSwap,
exit, exit,
errorMessage,
getAddressToContract, getAddressToContract,
getTransactionParams, getTransactionParams,
isDocker, isDocker,
checkIsAvailable, checkIsAvailable,
findNextPort, findNextPort,
fileTreeSort,
hashTo32ByteHexString, hashTo32ByteHexString,
hexToNumber, hexToNumber,
isHex, isHex,

View File

@ -108,6 +108,7 @@
"embark-i18n": "^4.1.0-beta.0", "embark-i18n": "^4.1.0-beta.0",
"embark-library-manager": "^4.1.0-beta.0", "embark-library-manager": "^4.1.0-beta.0",
"embark-logger": "^4.1.0-beta.0", "embark-logger": "^4.1.0-beta.0",
"embark-pipeline": "^4.1.0-beta.0",
"embark-plugin-cmd": "^4.1.0-beta.0", "embark-plugin-cmd": "^4.1.0-beta.0",
"embark-process-logs-api": "^4.1.0-beta.0", "embark-process-logs-api": "^4.1.0-beta.0",
"embark-profiler": "^4.1.0-beta.0", "embark-profiler": "^4.1.0-beta.0",

View File

@ -1,6 +1,7 @@
import { BlockchainClient, Simulator } from 'embark-blockchain-process'; import { BlockchainClient, Simulator } from 'embark-blockchain-process';
import { dappPath, embarkPath } from 'embark-core'; import { dappPath, embarkPath } from 'embark-core';
import { __ } from 'embark-i18n'; import { __ } from 'embark-i18n';
import findUp from 'find-up';
let async = require('async'); let async = require('async');
const constants = require('embark-core/constants'); const constants = require('embark-core/constants');
const Logger = require('embark-logger'); const Logger = require('embark-logger');
@ -450,13 +451,13 @@ class EmbarkController {
} }
ejectWebpack() { ejectWebpack() {
var embarkConfig = embarkPath('dist/lib/modules/pipeline/webpack.config.js'); const embarkConfig = (findUp.sync('node_modules/embark-pipeline/dist/webpack.config.js', {cwd: embarkPath()}) || embarkPath("node_modules/embark-pipeline/dist/webpack.config.js"));
var dappConfig = dappPath('webpack.config.js'); const dappConfig = dappPath('webpack.config.js');
fs.copyPreserve(embarkConfig, dappConfig); fs.copyPreserve(embarkConfig, dappConfig);
console.log(__('webpack config ejected to:').dim.yellow); console.log(__('webpack config ejected to:').dim.yellow);
console.log(`${dappConfig}`.green); console.log(`${dappConfig}`.green);
var embarkOverrides = embarkPath('dist/lib/modules/pipeline/babel-loader-overrides.js'); const embarkOverrides = (findUp.sync('node_modules/embark-pipeline/dist/babel-loader-overrides.js', {cwd: embarkPath()}) || embarkPath("node_modules/embark-pipeline/dist/babel-loader-overrides.js"));
var dappOverrides = dappPath('babel-loader-overrides.js'); const dappOverrides = dappPath('babel-loader-overrides.js');
fs.copyPreserve(embarkOverrides, dappOverrides); fs.copyPreserve(embarkOverrides, dappOverrides);
console.log(__('webpack overrides ejected to:').dim.yellow); console.log(__('webpack overrides ejected to:').dim.yellow);
console.log(`${dappOverrides}`.green); console.log(`${dappOverrides}`.green);

View File

@ -142,7 +142,7 @@ class Engine {
pipelineService(_options) { pipelineService(_options) {
const self = this; const self = this;
this.registerModule('pipeline', { this.registerModulePackage('embark-pipeline', {
webpackConfigName: this.webpackConfigName, webpackConfigName: this.webpackConfigName,
useDashboard: this.useDashboard useDashboard: this.useDashboard
}); });

View File

@ -4,7 +4,7 @@ const findUp = require('find-up');
const fs = require('../core/fs.js'); const fs = require('../core/fs.js');
const hostedGitInfo = require('hosted-git-info'); const hostedGitInfo = require('hosted-git-info');
const utils = require('./utils.js'); const utils = require('./utils.js');
import {joinPath, runCmd} from 'embark-utils'; import { joinPath, runCmd, errorMessage } from 'embark-utils';
const semver = require('semver'); const semver = require('semver');
const {promisify} = require('util'); const {promisify} = require('util');
const {execSync} = require('child_process'); const {execSync} = require('child_process');
@ -37,7 +37,7 @@ class TemplateGenerator {
try { try {
await promisify(utils.downloadFile)(url, tmpFilePath); await promisify(utils.downloadFile)(url, tmpFilePath);
} catch (e) { } catch (e) {
console.error(utils.errorMessage(e).red); console.error(errorMessage(e).red);
throw e; throw e;
} }
} }
@ -55,7 +55,7 @@ class TemplateGenerator {
try { try {
ext = await this.getExternalProject(uri); ext = await this.getExternalProject(uri);
} catch (e) { } catch (e) {
console.error(utils.errorMessage(e).red); console.error(errorMessage(e).red);
process.exit(1); process.exit(1);
} }
let {url, filePath, browse} = ext; let {url, filePath, browse} = ext;

View File

@ -256,34 +256,6 @@ function interceptLogs(consoleContext, logger) {
}; };
} }
function errorMessage(e) {
if (typeof e === 'string') {
return e;
} else if (e && e.message) {
return e.message;
}
return e;
}
function isFolder(node) {
return node.children && node.children.length;
}
function isNotFolder(node){
return !isFolder(node);
}
function byName(a, b) {
return a.name.localeCompare(b.name);
}
function fileTreeSort(nodes){
const folders = nodes.filter(isFolder).sort(byName);
const files = nodes.filter(isNotFolder).sort(byName);
return folders.concat(files);
}
function getWindowSize() { function getWindowSize() {
const windowSize = require('window-size'); const windowSize = require('window-size');
if (windowSize) { if (windowSize) {
@ -336,8 +308,6 @@ module.exports = {
normalizeInput, normalizeInput,
groupBy, groupBy,
interceptLogs, interceptLogs,
errorMessage,
fileTreeSort,
getWindowSize, getWindowSize,
isEs6Module, isEs6Module,
urlJoin urlJoin