improve full support for es6

This commit is contained in:
Iuri Matias 2018-01-16 19:17:52 -05:00
parent a322d03053
commit be1c5badd8
7 changed files with 128 additions and 17 deletions

View File

@ -7,6 +7,11 @@ var utils = require('../utils/utils.js');
//let currentWeb3Version = require('../../package.json').dependencies.web3.replace("^","");
const webpack = require("webpack");
require("babel-preset-react");
require("babel-preset-es2015");
require("babel-preset-es2016");
require("babel-preset-es2017");
class Pipeline {
constructor(options) {
@ -57,6 +62,42 @@ class Pipeline {
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) {
realCwd = process.env.PWD;
process.chdir(fs.embarkPath(''));
next();
},
function findImportsPhase2(next) {
webpack({
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 === utils.joinPath(fs.dappPath(), file.filename)) {
callback();
@ -70,16 +111,38 @@ class Pipeline {
}
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) => {
next();
});
},
function changeCwd(next) {
realCwd = process.env.PWD;
process.chdir(fs.embarkPath(''));
next();
},
function runWebpack(next) {
@ -117,9 +180,20 @@ class Pipeline {
{
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();
});
@ -192,16 +266,16 @@ class Pipeline {
}
buildContracts(contractsJSON) {
fs.mkdirpSync(this.buildDir + 'contracts');
fs.mkdirpSync(utils.joinPath(fs.dappPath(), this.buildDir, 'contracts'));
for (let className in contractsJSON) {
let contract = contractsJSON[className];
fs.writeJSONSync(this.buildDir + 'contracts/' + className + ".json", contract, {spaces: 2});
fs.writeJSONSync(utils.joinPath(fs.dappPath(), this.buildDir, 'contracts', className + ".json"), contract, {spaces: 2});
}
}
buildContractJS(contractName) {
let contractJSON = fs.readFileSync('dist/contracts/' + contractName + '.json').toString();
let contractJSON = fs.readFileSync(utils.joinPath(fs.dappPath(), this.buildDir, 'contracts', contractName + '.json')).toString();
let contractCode = "";
contractCode += "import web3 from 'Embark/web3';\n";

View File

@ -21,6 +21,13 @@
},
"dependencies": {
"async": "^2.0.1",
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-preset-es2015": "^6.24.1",
"babel-preset-es2016": "^6.24.1",
"babel-preset-es2017": "6.24.1",
"babel-preset-react": "^6.24.1",
"babel-plugin-webpack-aliases": "^1.1.3",
"blessed": "^0.1.81",
"chokidar": "^1.6.0",
"colors": "^1.1.2",

View File

@ -4,9 +4,11 @@
<!-- <link rel="stylesheet" href="css/app.css"> -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js"></script>
<!-- <script src="js/bootstrap.js"></script> -->
<script src="js/app.js"></script>
</head>
<body class="container">
<div id="root"></div>
<h3>Embark - Usage Example</h3>
<ul class="nav nav-tabs" role="tablist" id="myTabs">
@ -105,5 +107,6 @@
</div>
</div>
<script src="js/app.js"></script>
</body>
</html>

View File

@ -1,20 +1,46 @@
/*globals $, SimpleStorage, document*/
//import React, { Component } from 'react';
import EmbarkJS from 'Embark/EmbarkJS';
import SimpleStorage from 'Embark/contracts/SimpleStorage';
import Test from 'Embark/contracts/Test';
import React from 'react';
let Component = React.Component;
import ReactDOM from 'react-dom';
//import $ from './_vendor/jquery.min';
import $ from 'jquery';
import 'bootstrap';
import 'bootstrap/dist/css/bootstrap.min.css';
//import 'bootstrap/dist/js/bootstrap.min.js';
import EmbarkJS from 'Embark/EmbarkJS';
import SimpleStorage from 'Embark/contracts/SimpleStorage';
import Test from 'Embark/contracts/Test';
window.EmbarkJS = EmbarkJS;
window.SimpleStorage = SimpleStorage;
window.Test = Test;
window.React = React;
import './foo.css';
class App extends Component {
render() {
return (
<div className="App">
<header className="App-header">
<h1 className="App-title">Welcome to React</h1>
</header>
<p className="App-intro">
To get started, edit <code>src/App.js</code> and save to reload.
</p>
</div>
);
}
}
ReactDOM.render(<App />, document.getElementById('root'));
var addToLog = function(id, txt) {
$(id + " .logs").append("<br>" + txt);
};

View File

@ -14,7 +14,6 @@
"buildDir": "dist/",
"config": "config/",
"plugins": {
"embark-babel": {"files": ["**/*.js", "**/*.jsx", "!**/_vendor/*.js"]},
"embark-service": {}
}
}

View File

@ -12,8 +12,9 @@
"devDependencies": {},
"dependencies": {
"bootstrap": "^3.3.6",
"embark-babel": "^1.0.0",
"embark-service": "./extensions/embark-service",
"jquery": "^1.11.3"
"jquery": "^1.11.3",
"react": "^16.0.0",
"react-dom": "^16.2.0"
}
}

1
webpack.config.js Normal file
View File

@ -0,0 +1 @@
{}