mirror of
https://github.com/BorysLevytskyi/BitwiseCmd.git
synced 2025-12-23 13:12:42 +01:00
implemented support of emphasize bytes command
This commit is contained in:
2
e2e.bat
2
e2e.bat
@@ -1,4 +1,4 @@
|
|||||||
@echo off
|
pr@echo off
|
||||||
|
|
||||||
SET appUrl="http://localhost:13270/src/#clear"
|
SET appUrl="http://localhost:13270/src/#clear"
|
||||||
SET confFile=e2e.chrome.js
|
SET confFile=e2e.chrome.js
|
||||||
|
|||||||
45
npm-debug.log
Normal file
45
npm-debug.log
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
0 info it worked if it ends with ok
|
||||||
|
1 verbose cli [ '/usr/local/bin/node', '/usr/local/bin/npm', 'run', 'serv' ]
|
||||||
|
2 info using npm@3.10.10
|
||||||
|
3 info using node@v6.10.0
|
||||||
|
4 verbose run-script [ 'preserv', 'serv', 'postserv' ]
|
||||||
|
5 info lifecycle BitwiseCmd@1.0.0~preserv: BitwiseCmd@1.0.0
|
||||||
|
6 silly lifecycle BitwiseCmd@1.0.0~preserv: no script for preserv, continuing
|
||||||
|
7 info lifecycle BitwiseCmd@1.0.0~serv: BitwiseCmd@1.0.0
|
||||||
|
8 verbose lifecycle BitwiseCmd@1.0.0~serv: unsafe-perm in lifecycle true
|
||||||
|
9 verbose lifecycle BitwiseCmd@1.0.0~serv: PATH: /usr/local/lib/node_modules/npm/bin/node-gyp-bin:/Users/boryslevytskyi/git/BitwiseCmd/node_modules/.bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/share/dotnet:/Library/Frameworks/Mono.framework/Versions/Current/Commands
|
||||||
|
10 verbose lifecycle BitwiseCmd@1.0.0~serv: CWD: /Users/boryslevytskyi/git/BitwiseCmd
|
||||||
|
11 silly lifecycle BitwiseCmd@1.0.0~serv: Args: [ '-c', 'webpack-dev-server --content-base ./src' ]
|
||||||
|
12 silly lifecycle BitwiseCmd@1.0.0~serv: Returned: code: 1 signal: null
|
||||||
|
13 info lifecycle BitwiseCmd@1.0.0~serv: Failed to exec serv script
|
||||||
|
14 verbose stack Error: BitwiseCmd@1.0.0 serv: `webpack-dev-server --content-base ./src`
|
||||||
|
14 verbose stack Exit status 1
|
||||||
|
14 verbose stack at EventEmitter.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/lifecycle.js:255:16)
|
||||||
|
14 verbose stack at emitTwo (events.js:106:13)
|
||||||
|
14 verbose stack at EventEmitter.emit (events.js:191:7)
|
||||||
|
14 verbose stack at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/spawn.js:40:14)
|
||||||
|
14 verbose stack at emitTwo (events.js:106:13)
|
||||||
|
14 verbose stack at ChildProcess.emit (events.js:191:7)
|
||||||
|
14 verbose stack at maybeClose (internal/child_process.js:877:16)
|
||||||
|
14 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
|
||||||
|
15 verbose pkgid BitwiseCmd@1.0.0
|
||||||
|
16 verbose cwd /Users/boryslevytskyi/git/BitwiseCmd
|
||||||
|
17 error Darwin 16.5.0
|
||||||
|
18 error argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "serv"
|
||||||
|
19 error node v6.10.0
|
||||||
|
20 error npm v3.10.10
|
||||||
|
21 error code ELIFECYCLE
|
||||||
|
22 error BitwiseCmd@1.0.0 serv: `webpack-dev-server --content-base ./src`
|
||||||
|
22 error Exit status 1
|
||||||
|
23 error Failed at the BitwiseCmd@1.0.0 serv script 'webpack-dev-server --content-base ./src'.
|
||||||
|
23 error Make sure you have the latest version of node.js and npm installed.
|
||||||
|
23 error If you do, this is most likely a problem with the BitwiseCmd package,
|
||||||
|
23 error not with npm itself.
|
||||||
|
23 error Tell the author that this fails on your system:
|
||||||
|
23 error webpack-dev-server --content-base ./src
|
||||||
|
23 error You can get information on how to open an issue for this project with:
|
||||||
|
23 error npm bugs BitwiseCmd
|
||||||
|
23 error Or if that isn't available, you can get their info via:
|
||||||
|
23 error npm owner ls BitwiseCmd
|
||||||
|
23 error There is likely additional logging output above.
|
||||||
|
24 verbose exit [ 1, true ]
|
||||||
@@ -4,7 +4,8 @@
|
|||||||
"description": "Bitwise Operations Console",
|
"description": "Bitwise Operations Console",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
|
"serv": "webpack-dev-server --content-base ./src"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -46,8 +47,5 @@
|
|||||||
"lodash": "^4.17.2",
|
"lodash": "^4.17.2",
|
||||||
"react": "^15.4.0",
|
"react": "^15.4.0",
|
||||||
"react-dom": "^15.4.0"
|
"react-dom": "^15.4.0"
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"serv": "webpack-dev-server --content-base ./src"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,8 @@ export default {
|
|||||||
|
|
||||||
cmd.commands({
|
cmd.commands({
|
||||||
'help': function(c) {
|
'help': function(c) {
|
||||||
// TODO: var helpResult = document.querySelector('.result .helpResultTpl');
|
// TODO: implement latest behavior - pull up help result to the top
|
||||||
|
// var helpResult = document.querySelector('.result .helpResultTpl');
|
||||||
// if(helpResult != null) {
|
// if(helpResult != null) {
|
||||||
// moveResultUp(helpResult);
|
// moveResultUp(helpResult);
|
||||||
// return;
|
// return;
|
||||||
@@ -31,7 +32,7 @@ export default {
|
|||||||
appState.clearCommmandResults();
|
appState.clearCommmandResults();
|
||||||
},
|
},
|
||||||
'em': function() {
|
'em': function() {
|
||||||
cmdConfig.emphasizeBytes = !cmdConfig.emphasizeBytes;
|
appState.toggleEmphasizeBytes();
|
||||||
},
|
},
|
||||||
'dark': function() {
|
'dark': function() {
|
||||||
appState.setUiTheme('dark');
|
appState.setUiTheme('dark');
|
||||||
|
|||||||
@@ -10,8 +10,26 @@ export default class AppRoot extends React.Component {
|
|||||||
refresh() {
|
refresh() {
|
||||||
this.setState(this.props.appState);
|
this.setState(this.props.appState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getIndicator(value) {
|
||||||
|
if(value) {
|
||||||
|
return "on";
|
||||||
|
}
|
||||||
|
|
||||||
|
return "off";
|
||||||
|
}
|
||||||
|
|
||||||
|
getResultViews() {
|
||||||
|
var results = this.state.commandResults.map((r, i) => <DisplayResultView key={i} content={r} input={r.input} inputHash={r.inputHash} appState={this.props.appState} />);
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleEmphasizeBytes() {
|
||||||
|
console.log(this.props.appState);
|
||||||
|
this.props.appState.toggleEmphasizeBytes();
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
var results = this.state.commandResults.map((r, i) => <DisplayResultView key={i} content={r} input={r.input} inputHash={r.inputHash} />);
|
|
||||||
return <div className={`app-root ${this.state.uiTheme}`}>
|
return <div className={`app-root ${this.state.uiTheme}`}>
|
||||||
<div className="header">
|
<div className="header">
|
||||||
<h1>Bitwise<span style={{color: "#c5c5c5"}}>Cmd</span></h1>
|
<h1>Bitwise<span style={{color: "#c5c5c5"}}>Cmd</span></h1>
|
||||||
@@ -32,12 +50,12 @@ export default class AppRoot extends React.Component {
|
|||||||
<InputBox />
|
<InputBox />
|
||||||
|
|
||||||
<span className="configPnl">
|
<span className="configPnl">
|
||||||
<span id="emphasizeBytes" data-cmd="em" className="indicator on" title="Emphasize Bytes">[em]</span>
|
<span id="emphasizeBytes" data-cmd="em" className={"indicator " + this.getIndicator(this.state.emphasizeBytes)} title="Toggle Emphasize Bytes" onClick={e => this.toggleEmphasizeBytes()}>[em]</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="output">
|
<div id="output">
|
||||||
{results}
|
{this.getResultViews()}
|
||||||
</div>
|
</div>
|
||||||
</div>;
|
</div>;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import React from 'react';
|
|||||||
import * as expression from '../../expression';
|
import * as expression from '../../expression';
|
||||||
import formatter from '../../formatter';
|
import formatter from '../../formatter';
|
||||||
import BinaryStringView from './BinaryStringView';
|
import BinaryStringView from './BinaryStringView';
|
||||||
|
import BitwiseExpressionViewModel from './models/BitwiseExpressionViewModel'
|
||||||
|
|
||||||
export default class BitwiseOperationEpxressionView extends React.Component {
|
export default class BitwiseOperationEpxressionView extends React.Component {
|
||||||
render() {
|
render() {
|
||||||
@@ -21,12 +22,12 @@ export default class BitwiseOperationEpxressionView extends React.Component {
|
|||||||
const expr = this.props.expression;
|
const expr = this.props.expression;
|
||||||
|
|
||||||
if(expr instanceof expression.SingleOperandExpression) {
|
if(expr instanceof expression.SingleOperandExpression) {
|
||||||
const m = BitwiseExpressionViewModel.buildNot(expr);
|
const m = BitwiseExpressionViewModel.buildNot(expr, { emphasizeBytes: this.props.emphasizeBytes });
|
||||||
return m.items.map((itm, i) => <ExpressionRow key={i} {...itm} maxNumberOfBits={m.maxNumberOfBits} />);
|
return m.items.map((itm, i) => <ExpressionRow key={i} {...itm} maxNumberOfBits={m.maxNumberOfBits} />);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(expr instanceof expression.MultipleOperandsExpression) {
|
if(expr instanceof expression.MultipleOperandsExpression) {
|
||||||
const m = BitwiseExpressionViewModel.buildMultiple(expr);
|
const m = BitwiseExpressionViewModel.buildMultiple(expr, { emphasizeBytes: this.props.emphasizeBytes });
|
||||||
console.log('Render model', m);
|
console.log('Render model', m);
|
||||||
return m.items.map((itm, i) => <ExpressionRow key={i} {...itm} maxNumberOfBits={m.maxNumberOfBits} />);
|
return m.items.map((itm, i) => <ExpressionRow key={i} {...itm} maxNumberOfBits={m.maxNumberOfBits} />);
|
||||||
}
|
}
|
||||||
@@ -48,82 +49,4 @@ class ExpressionRow extends React.Component {
|
|||||||
<td className="other">{other}</td>
|
<td className="other">{other}</td>
|
||||||
</tr>;
|
</tr>;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
class BitwiseExpressionViewModel {
|
|
||||||
|
|
||||||
constructor() {
|
|
||||||
this.items = [];
|
|
||||||
this.maxNumberOfBits = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static buildMultiple (expr) {
|
|
||||||
var op = expr.expressions[0],
|
|
||||||
i = 1, l = expr.expressions.length,
|
|
||||||
ex, m = new BitwiseExpressionViewModel();
|
|
||||||
|
|
||||||
m.addOperand(op);
|
|
||||||
|
|
||||||
for (;i<l;i++) {
|
|
||||||
ex = expr.expressions[i];
|
|
||||||
op = ex.apply(op.value);
|
|
||||||
|
|
||||||
if(ex.isShiftExpression()){
|
|
||||||
m.addShiftExpressionResult(ex, op);
|
|
||||||
} else {
|
|
||||||
m.addExpression(ex);
|
|
||||||
m.addExpressionResult(op);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
m.maxNumberOfBits = m.emphasizeBytes(m.maxNumberOfBits);
|
|
||||||
return m;
|
|
||||||
};
|
|
||||||
|
|
||||||
static buildNot (expression) {
|
|
||||||
var m = new BitwiseExpressionViewModel();
|
|
||||||
m.addExpression(expression);
|
|
||||||
m.addExpressionResult(expression.apply());
|
|
||||||
m.maxNumberOfBits = m.emphasizeBytes(m.maxNumberOfBits);
|
|
||||||
return m;
|
|
||||||
};
|
|
||||||
|
|
||||||
addOperand(operand) {
|
|
||||||
this.maxNumberOfBits = Math.max(operand.getLengthInBits(), this.maxNumberOfBits);
|
|
||||||
this.items.push({ sign:'', label: operand.toString(), bin: operand.bin, other: operand.other, css: ''});
|
|
||||||
};
|
|
||||||
|
|
||||||
addExpression(expression) {
|
|
||||||
this.maxNumberOfBits = Math.max(expression.operand1.getLengthInBits(), this.maxNumberOfBits);
|
|
||||||
this.items.push({ sign: expression.sign, label: expression.operand1.toString(), bin: expression.operand1.bin, other: expression.operand1.other, css: ''});
|
|
||||||
};
|
|
||||||
|
|
||||||
addShiftExpressionResult(expression, resultOperand) {
|
|
||||||
this.maxNumberOfBits = Math.max(resultOperand.getLengthInBits(), this.maxNumberOfBits);
|
|
||||||
this.items.push({
|
|
||||||
sign: expression.sign + expression.operand1.input,
|
|
||||||
label: resultOperand.toString(),
|
|
||||||
bin: resultOperand.bin,
|
|
||||||
other: resultOperand.other,
|
|
||||||
css: 'expression-result'});
|
|
||||||
};
|
|
||||||
|
|
||||||
addExpressionResult(operand) {
|
|
||||||
this.maxNumberOfBits = Math.max(operand.getLengthInBits(), this.maxNumberOfBits);
|
|
||||||
this.items.push({ sign:'=', label: operand.toString(), bin: operand.bin, other: operand.other, css: 'expression-result'});
|
|
||||||
};
|
|
||||||
|
|
||||||
emphasizeBytes = function (bits) {
|
|
||||||
// var cmdConfig = app.get('cmdConfig');
|
|
||||||
// if(cmdConfig.emphasizeBytes && bits % 8 != 0) {
|
|
||||||
// if(bits < 8) {
|
|
||||||
// return 8;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// var n = bits - (bits % 8);
|
|
||||||
// return n + 8;
|
|
||||||
// }
|
|
||||||
console.warn('[BitwiseExpressionViewModel] emphasizeBytes() not implemented');
|
|
||||||
return bits;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
@@ -36,7 +36,7 @@ export default class DisplayResult extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(result instanceof ExpressionResult) {
|
if(result instanceof ExpressionResult) {
|
||||||
return <ExpressionResultView result={result} />
|
return <ExpressionResultView result={result} emphasizeBytes={this.props.appState.emphasizeBytes} />
|
||||||
}
|
}
|
||||||
|
|
||||||
console.warn('Unknown result:', result);
|
console.warn('Unknown result:', result);
|
||||||
|
|||||||
@@ -10,12 +10,12 @@ export default class ExpressionResultView extends React.Component {
|
|||||||
|
|
||||||
if(expr instanceof expression.ListOfNumbersExpression) {
|
if(expr instanceof expression.ListOfNumbersExpression) {
|
||||||
return <div>
|
return <div>
|
||||||
<ListOfNumbersExpressionView expression={expr} />
|
<ListOfNumbersExpressionView expression={expr} emphasizeBytes={this.props.emphasizeBytes} />
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
if(expr instanceof expression.SingleOperandExpression || expr instanceof expression.MultipleOperandsExpression) {
|
if(expr instanceof expression.SingleOperandExpression || expr instanceof expression.MultipleOperandsExpression) {
|
||||||
return <div>
|
return <div>
|
||||||
<BitwiseOperationExpressionView expression={expr} />
|
<BitwiseOperationExpressionView expression={expr} emphasizeBytes={this.props.emphasizeBytes} />
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import formatter from '../../formatter';
|
import formatter from '../../formatter';
|
||||||
import BinaryStringView from './BinaryStringView';
|
import BinaryStringView from './BinaryStringView';
|
||||||
|
import BitwiseExpressionViewModel from './models/BitwiseExpressionViewModel'
|
||||||
|
//import calc from '../../calc';
|
||||||
|
|
||||||
export default class ListOfNumersExpressionView extends React.Component {
|
export default class ListOfNumersExpressionView extends React.Component {
|
||||||
render() {
|
render() {
|
||||||
const expr = this.props.expression;
|
const expr = this.props.expression;
|
||||||
const numberRows = expr.numbers.map((n, i) => <OperandView key={i} operand={n} maxBitsLegnth={expr.maxBitsLegnth} />);
|
const maxBitsLegnth = BitwiseExpressionViewModel.getNumberOfBits(expr.maxBitsLegnth, this.props.emphasizeBytes);
|
||||||
|
const numberRows = expr.numbers.map((n, i) => <OperandView key={i} operand={n} maxBitsLegnth={maxBitsLegnth} />);
|
||||||
return <table className="expression">
|
return <table className="expression">
|
||||||
<tbody>
|
<tbody>
|
||||||
{numberRows}
|
{numberRows}
|
||||||
|
|||||||
@@ -0,0 +1,80 @@
|
|||||||
|
export default class BitwiseExpressionViewModel {
|
||||||
|
|
||||||
|
constructor({ emphasizeBytes = false } = {}) {
|
||||||
|
this.emphasizeBytes = emphasizeBytes;
|
||||||
|
this.items = [];
|
||||||
|
this.maxNumberOfBits = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static buildMultiple (expr, config) {
|
||||||
|
console.log(config);
|
||||||
|
var op = expr.expressions[0],
|
||||||
|
i = 1, l = expr.expressions.length,
|
||||||
|
ex, m = new BitwiseExpressionViewModel(config);
|
||||||
|
|
||||||
|
m.addOperand(op);
|
||||||
|
|
||||||
|
for (;i<l;i++) {
|
||||||
|
ex = expr.expressions[i];
|
||||||
|
op = ex.apply(op.value);
|
||||||
|
|
||||||
|
if(ex.isShiftExpression()){
|
||||||
|
m.addShiftExpressionResult(ex, op);
|
||||||
|
} else {
|
||||||
|
m.addExpression(ex);
|
||||||
|
m.addExpressionResult(op);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m.maxNumberOfBits = BitwiseExpressionViewModel.getNumberOfBits(m.maxNumberOfBits, m.emphasizeBytes);
|
||||||
|
return m;
|
||||||
|
};
|
||||||
|
|
||||||
|
static buildNot (expression, cofig) {
|
||||||
|
console.log(config);
|
||||||
|
var m = new BitwiseExpressionViewModel(config);
|
||||||
|
m.addExpression(expression);
|
||||||
|
m.addExpressionResult(expression.apply());
|
||||||
|
m.maxNumberOfBits = BitwiseExpressionViewModel.getNumberOfBits(m.maxNumberOfBits, m.emphasizeBytes);
|
||||||
|
return m;
|
||||||
|
};
|
||||||
|
|
||||||
|
addOperand(operand) {
|
||||||
|
this.maxNumberOfBits = Math.max(operand.getLengthInBits(), this.maxNumberOfBits);
|
||||||
|
this.items.push({ sign:'', label: operand.toString(), bin: operand.bin, other: operand.other, css: ''});
|
||||||
|
};
|
||||||
|
|
||||||
|
addExpression(expression) {
|
||||||
|
this.maxNumberOfBits = Math.max(expression.operand1.getLengthInBits(), this.maxNumberOfBits);
|
||||||
|
this.items.push({ sign: expression.sign, label: expression.operand1.toString(), bin: expression.operand1.bin, other: expression.operand1.other, css: ''});
|
||||||
|
};
|
||||||
|
|
||||||
|
addShiftExpressionResult(expression, resultOperand) {
|
||||||
|
this.maxNumberOfBits = Math.max(resultOperand.getLengthInBits(), this.maxNumberOfBits);
|
||||||
|
this.items.push({
|
||||||
|
sign: expression.sign + expression.operand1.input,
|
||||||
|
label: resultOperand.toString(),
|
||||||
|
bin: resultOperand.bin,
|
||||||
|
other: resultOperand.other,
|
||||||
|
css: 'expression-result'});
|
||||||
|
};
|
||||||
|
|
||||||
|
addExpressionResult(operand) {
|
||||||
|
this.maxNumberOfBits = Math.max(operand.getLengthInBits(), this.maxNumberOfBits);
|
||||||
|
this.items.push({ sign:'=', label: operand.toString(), bin: operand.bin, other: operand.other, css: 'expression-result'});
|
||||||
|
};
|
||||||
|
|
||||||
|
// TODO: move this method elsewhere. It is also used in LisOfNumbersExpressionView.js
|
||||||
|
static getNumberOfBits = function (bits, emphasizeBytes) {
|
||||||
|
if(emphasizeBytes && bits % 8 != 0) {
|
||||||
|
if(bits < 8) {
|
||||||
|
return 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
var n = bits - (bits % 8);
|
||||||
|
return n + 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
return bits;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -17,8 +17,8 @@ commands.initialize(cmd, appState);
|
|||||||
|
|
||||||
console.log("appState", appState);
|
console.log("appState", appState);
|
||||||
|
|
||||||
// cmd.execute('1');
|
cmd.execute('1');
|
||||||
// cmd.execute('2');
|
cmd.execute('2');
|
||||||
cmd.execute('1|2<<2');
|
cmd.execute('1|2<<2');
|
||||||
|
|
||||||
var root = <AppRoot appState={appState} />;
|
var root = <AppRoot appState={appState} />;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
entry: __dirname + "/src/app/index.jsx",
|
entry: __dirname + "/src/app/index.jsx",
|
||||||
output: {
|
output: {
|
||||||
fileame: 'bundle.js',
|
filename: 'bundle.js',
|
||||||
path: __dirname + '/src',
|
path: __dirname + '/src',
|
||||||
publicPath: 'http://localhost:8080/'
|
publicPath: 'http://localhost:8080/'
|
||||||
},
|
},
|
||||||
@@ -9,9 +9,9 @@ module.exports = {
|
|||||||
module: {
|
module: {
|
||||||
loaders: [{
|
loaders: [{
|
||||||
test: /\.jsx?$/,
|
test: /\.jsx?$/,
|
||||||
loader: 'babel',
|
loader: 'babel-loader',
|
||||||
exclude: /node-modules/,
|
exclude: /node-modules/,
|
||||||
output: { path: __dirname + '/src', filename: 'bundle.js' },
|
//output: { path: __dirname + '/src', filename: 'bundle.js' },
|
||||||
query: {
|
query: {
|
||||||
presets: [require.resolve('babel-preset-es2015'), require.resolve('babel-preset-react')],
|
presets: [require.resolve('babel-preset-es2015'), require.resolve('babel-preset-react')],
|
||||||
plugins: [require.resolve('babel-plugin-transform-class-properties')]
|
plugins: [require.resolve('babel-plugin-transform-class-properties')]
|
||||||
@@ -24,6 +24,6 @@ module.exports = {
|
|||||||
// 'react': 'React'
|
// 'react': 'React'
|
||||||
// },
|
// },
|
||||||
resolve: {
|
resolve: {
|
||||||
extensions: ['', '.js', '.jsx']
|
extensions: ['.js', '.jsx']
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Reference in New Issue
Block a user