Indent with tabs!
This commit is contained in:
parent
cc1ca7f645
commit
ee50422200
@ -8,11 +8,11 @@ trim_trailing_whitespace = true
|
|||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
|
|
||||||
[*.{json,js,jsx,html,css}]
|
[*.{json,js,jsx,html,css}]
|
||||||
indent_style = space
|
indent_style = tab
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|
||||||
[.eslintrc]
|
[.eslintrc]
|
||||||
indent_style = space
|
indent_style = tab
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|
||||||
[*.md]
|
[*.md]
|
||||||
|
110
.eslintrc
110
.eslintrc
@ -1,43 +1,71 @@
|
|||||||
{
|
{
|
||||||
"parser": "babel-eslint",
|
"parser": "babel-eslint",
|
||||||
"extends": "airbnb",
|
"extends": "airbnb",
|
||||||
"env": {
|
"env": {
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"node": true
|
"node": true
|
||||||
},
|
},
|
||||||
"rules": {
|
"rules": {
|
||||||
"arrow-parens": ["off"],
|
"arrow-parens": [
|
||||||
"compat/compat": "error",
|
"off"
|
||||||
"consistent-return": "off",
|
],
|
||||||
"comma-dangle": "off",
|
"compat/compat": "error",
|
||||||
"generator-star-spacing": "off",
|
"consistent-return": "off",
|
||||||
"import/no-unresolved": "error",
|
"comma-dangle": "off",
|
||||||
"import/no-extraneous-dependencies": "off",
|
"generator-star-spacing": "off",
|
||||||
"no-console": "off",
|
"import/no-unresolved": "error",
|
||||||
"no-use-before-define": "off",
|
"import/no-extraneous-dependencies": "off",
|
||||||
"no-multi-assign": "off",
|
"indent": [
|
||||||
"promise/param-names": "error",
|
"error",
|
||||||
"promise/always-return": "error",
|
"tab"
|
||||||
"promise/catch-or-return": "error",
|
],
|
||||||
"promise/no-native": "off",
|
"no-console": "off",
|
||||||
"react/sort-comp": ["error", {
|
"no-tabs": "off",
|
||||||
"order": ["type-annotations", "static-methods", "lifecycle", "everything-else", "render"]
|
"no-use-before-define": "off",
|
||||||
}],
|
"no-multi-assign": "off",
|
||||||
"react/prop-types": "off",
|
"promise/param-names": "error",
|
||||||
"react/jsx-filename-extension": ["error", { "extensions": [".js", ".jsx"] }],
|
"promise/always-return": "error",
|
||||||
"react/prefer-stateless-function": "off"
|
"promise/catch-or-return": "error",
|
||||||
},
|
"promise/no-native": "off",
|
||||||
"plugins": [
|
"react/sort-comp": [
|
||||||
"import",
|
"error",
|
||||||
"promise",
|
{
|
||||||
"compat",
|
"order": [
|
||||||
"react"
|
"type-annotations",
|
||||||
],
|
"static-methods",
|
||||||
"settings": {
|
"lifecycle",
|
||||||
"import/resolver": {
|
"everything-else",
|
||||||
"webpack": {
|
"render"
|
||||||
"config": "webpack.config.eslint.js"
|
]
|
||||||
}
|
}
|
||||||
}
|
],
|
||||||
}
|
"react/prop-types": "off",
|
||||||
|
"react/jsx-indent": [
|
||||||
|
2,
|
||||||
|
'tab'
|
||||||
|
],
|
||||||
|
"react/jsx-filename-extension": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"extensions": [
|
||||||
|
".js",
|
||||||
|
".jsx"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"react/prefer-stateless-function": "off"
|
||||||
|
},
|
||||||
|
"plugins": [
|
||||||
|
"import",
|
||||||
|
"promise",
|
||||||
|
"compat",
|
||||||
|
"react"
|
||||||
|
],
|
||||||
|
"settings": {
|
||||||
|
"import/resolver": {
|
||||||
|
"webpack": {
|
||||||
|
"config": "webpack.config.eslint.js"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"rules": {
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,12 +1,12 @@
|
|||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
|
|
||||||
export default class Home extends Component {
|
export default class Home extends Component {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<h1>Home</h1>
|
<h1>Home</h1>
|
||||||
<h3>...is where the heart is</h3>
|
<h3>...is where the heart is</h3>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
import React, { PureComponent } from 'react';
|
import React, { PureComponent } from 'react';
|
||||||
|
|
||||||
export default class App extends PureComponent {
|
export default class App extends PureComponent {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<div className="window">
|
<div className="window">
|
||||||
<header className="toolbar toolbar-header">
|
<header className="toolbar toolbar-header">
|
||||||
<h1 className="title">Header</h1>
|
<h1 className="title">Header</h1>
|
||||||
</header>
|
</header>
|
||||||
<main className="window-content">
|
<main className="window-content">
|
||||||
{this.props.children}
|
{this.props.children}
|
||||||
</main>
|
</main>
|
||||||
<footer className="toolbar toolbar-footer">
|
<footer className="toolbar toolbar-footer">
|
||||||
<h1 className="title">Footer</h1>
|
<h1 className="title">Footer</h1>
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,9 +2,9 @@ import React, { Component } from 'react';
|
|||||||
import Home from '../components/Home';
|
import Home from '../components/Home';
|
||||||
|
|
||||||
export default class HomePage extends Component {
|
export default class HomePage extends Component {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<Home />
|
<Home />
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,9 +4,9 @@ import { Router } from 'react-router';
|
|||||||
import routes from '../routes';
|
import routes from '../routes';
|
||||||
|
|
||||||
export default function Root({ store, history }) {
|
export default function Root({ store, history }) {
|
||||||
return (
|
return (
|
||||||
<Provider store={store}>
|
<Provider store={store}>
|
||||||
<Router key={Math.random()} history={history} routes={routes} />
|
<Router key={Math.random()} history={history} routes={routes} />
|
||||||
</Provider>
|
</Provider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
20
app/index.js
20
app/index.js
@ -11,20 +11,20 @@ const store = configureStore();
|
|||||||
const history = syncHistoryWithStore(hashHistory, store);
|
const history = syncHistoryWithStore(hashHistory, store);
|
||||||
|
|
||||||
render(
|
render(
|
||||||
<AppContainer>
|
<AppContainer>
|
||||||
<Root store={store} history={history} />
|
<Root store={store} history={history} />
|
||||||
</AppContainer>,
|
</AppContainer>,
|
||||||
document.getElementById('root')
|
document.getElementById('root')
|
||||||
);
|
);
|
||||||
|
|
||||||
if (module.hot) {
|
if (module.hot) {
|
||||||
module.hot.accept('./containers/Root', () => {
|
module.hot.accept('./containers/Root', () => {
|
||||||
const NextRoot = require('./containers/Root'); // eslint-disable-line global-require
|
const NextRoot = require('./containers/Root'); // eslint-disable-line global-require
|
||||||
render(
|
render(
|
||||||
<AppContainer>
|
<AppContainer>
|
||||||
<NextRoot store={store} history={history} />
|
<NextRoot store={store} history={history} />
|
||||||
</AppContainer>,
|
</AppContainer>,
|
||||||
document.getElementById('root')
|
document.getElementById('root')
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -5,26 +5,26 @@ import MenuBuilder from './menu';
|
|||||||
let mainWindow = null;
|
let mainWindow = null;
|
||||||
|
|
||||||
if (process.env.NODE_ENV === 'production') {
|
if (process.env.NODE_ENV === 'production') {
|
||||||
const sourceMapSupport = require('source-map-support');
|
const sourceMapSupport = require('source-map-support');
|
||||||
sourceMapSupport.install();
|
sourceMapSupport.install();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (process.env.NODE_ENV === 'development') {
|
if (process.env.NODE_ENV === 'development') {
|
||||||
require('electron-debug')();
|
require('electron-debug')();
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const p = path.join(__dirname, '..', 'app', 'node_modules');
|
const p = path.join(__dirname, '..', 'app', 'node_modules');
|
||||||
require('module').globalPaths.push(p);
|
require('module').globalPaths.push(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
const installExtensions = async () => {
|
const installExtensions = async () => {
|
||||||
const installer = require('electron-devtools-installer');
|
const installer = require('electron-devtools-installer');
|
||||||
const forceDownload = !!process.env.UPGRADE_EXTENSIONS;
|
const forceDownload = !!process.env.UPGRADE_EXTENSIONS;
|
||||||
const extensions = [
|
const extensions = [
|
||||||
'REACT_DEVELOPER_TOOLS',
|
'REACT_DEVELOPER_TOOLS',
|
||||||
'REDUX_DEVTOOLS'
|
'REDUX_DEVTOOLS'
|
||||||
];
|
];
|
||||||
|
|
||||||
return Promise
|
return Promise
|
||||||
.all(extensions.map(name => installer.default(installer[name], forceDownload)))
|
.all(extensions.map(name => installer.default(installer[name], forceDownload)))
|
||||||
.catch(console.log);
|
.catch(console.log);
|
||||||
};
|
};
|
||||||
@ -33,39 +33,39 @@ const installExtensions = async () => {
|
|||||||
app.on('window-all-closed', () => {
|
app.on('window-all-closed', () => {
|
||||||
// Respect the OSX convention of having the application in memory even
|
// Respect the OSX convention of having the application in memory even
|
||||||
// after all windows have been closed
|
// after all windows have been closed
|
||||||
if (process.platform !== 'darwin') {
|
if (process.platform !== 'darwin') {
|
||||||
app.quit();
|
app.quit();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
app.on('ready', async () => {
|
app.on('ready', async () => {
|
||||||
if (process.env.NODE_ENV === 'development') {
|
if (process.env.NODE_ENV === 'development') {
|
||||||
await installExtensions();
|
await installExtensions();
|
||||||
}
|
}
|
||||||
|
|
||||||
mainWindow = new BrowserWindow({
|
mainWindow = new BrowserWindow({
|
||||||
show: false,
|
show: false,
|
||||||
width: 1024,
|
width: 1024,
|
||||||
height: 728
|
height: 728
|
||||||
});
|
});
|
||||||
|
|
||||||
mainWindow.loadURL(`file://${__dirname}/app.html`);
|
mainWindow.loadURL(`file://${__dirname}/app.html`);
|
||||||
|
|
||||||
// @TODO: Use 'ready-to-show' event
|
// @TODO: Use 'ready-to-show' event
|
||||||
// https://github.com/electron/electron/blob/master/docs/api/browser-window.md#using-ready-to-show-event
|
// https://github.com/electron/electron/blob/master/docs/api/browser-window.md#using-ready-to-show-event
|
||||||
mainWindow.webContents.on('did-finish-load', () => {
|
mainWindow.webContents.on('did-finish-load', () => {
|
||||||
if (!mainWindow) {
|
if (!mainWindow) {
|
||||||
throw new Error('"mainWindow" is not defined');
|
throw new Error('"mainWindow" is not defined');
|
||||||
}
|
}
|
||||||
mainWindow.show();
|
mainWindow.show();
|
||||||
mainWindow.focus();
|
mainWindow.focus();
|
||||||
});
|
});
|
||||||
|
|
||||||
mainWindow.on('closed', () => {
|
mainWindow.on('closed', () => {
|
||||||
mainWindow = null;
|
mainWindow = null;
|
||||||
});
|
});
|
||||||
|
|
||||||
const menuBuilder = new MenuBuilder(mainWindow);
|
const menuBuilder = new MenuBuilder(mainWindow);
|
||||||
menuBuilder.buildMenu();
|
menuBuilder.buildMenu();
|
||||||
});
|
});
|
||||||
|
272
app/menu.js
272
app/menu.js
@ -1,51 +1,51 @@
|
|||||||
import { app, Menu, shell, BrowserWindow } from 'electron';
|
import { app, Menu, shell, BrowserWindow } from 'electron';
|
||||||
|
|
||||||
export default class MenuBuilder {
|
export default class MenuBuilder {
|
||||||
mainWindow: BrowserWindow;
|
mainWindow: BrowserWindow;
|
||||||
|
|
||||||
constructor(mainWindow: BrowserWindow) {
|
constructor(mainWindow: BrowserWindow) {
|
||||||
this.mainWindow = mainWindow;
|
this.mainWindow = mainWindow;
|
||||||
}
|
}
|
||||||
|
|
||||||
buildMenu() {
|
buildMenu() {
|
||||||
if (process.env.NODE_ENV === 'development') {
|
if (process.env.NODE_ENV === 'development') {
|
||||||
this.setupDevelopmentEnvironment();
|
this.setupDevelopmentEnvironment();
|
||||||
}
|
}
|
||||||
|
|
||||||
let template;
|
let template;
|
||||||
|
|
||||||
if (process.platform === 'darwin') {
|
if (process.platform === 'darwin') {
|
||||||
template = this.buildDarwinTemplate();
|
template = this.buildDarwinTemplate();
|
||||||
} else {
|
} else {
|
||||||
template = this.buildDefaultTemplate();
|
template = this.buildDefaultTemplate();
|
||||||
}
|
}
|
||||||
|
|
||||||
const menu = Menu.buildFromTemplate(template);
|
const menu = Menu.buildFromTemplate(template);
|
||||||
Menu.setApplicationMenu(menu);
|
Menu.setApplicationMenu(menu);
|
||||||
|
|
||||||
return menu;
|
return menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
setupDevelopmentEnvironment() {
|
setupDevelopmentEnvironment() {
|
||||||
this.mainWindow.openDevTools();
|
this.mainWindow.openDevTools();
|
||||||
this.mainWindow.webContents.on('context-menu', (e, props) => {
|
this.mainWindow.webContents.on('context-menu', (e, props) => {
|
||||||
const { x, y } = props;
|
const { x, y } = props;
|
||||||
|
|
||||||
Menu
|
Menu
|
||||||
.buildFromTemplate([{
|
.buildFromTemplate([{
|
||||||
label: 'Inspect element',
|
label: 'Inspect element',
|
||||||
click: () => {
|
click: () => {
|
||||||
this.mainWindow.inspectElement(x, y);
|
this.mainWindow.inspectElement(x, y);
|
||||||
}
|
}
|
||||||
}])
|
}])
|
||||||
.popup(this.mainWindow);
|
.popup(this.mainWindow);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
buildDarwinTemplate() {
|
buildDarwinTemplate() {
|
||||||
const subMenuAbout = {
|
const subMenuAbout = {
|
||||||
label: 'Electron',
|
label: 'Electron',
|
||||||
submenu: [
|
submenu: [
|
||||||
{ label: 'About ElectronReact', selector: 'orderFrontStandardAboutPanel:' },
|
{ label: 'About ElectronReact', selector: 'orderFrontStandardAboutPanel:' },
|
||||||
{ type: 'separator' },
|
{ type: 'separator' },
|
||||||
{ label: 'Services', submenu: [] },
|
{ label: 'Services', submenu: [] },
|
||||||
@ -55,11 +55,11 @@ export default class MenuBuilder {
|
|||||||
{ label: 'Show All', selector: 'unhideAllApplications:' },
|
{ label: 'Show All', selector: 'unhideAllApplications:' },
|
||||||
{ type: 'separator' },
|
{ type: 'separator' },
|
||||||
{ label: 'Quit', accelerator: 'Command+Q', click: () => { app.quit(); } }
|
{ label: 'Quit', accelerator: 'Command+Q', click: () => { app.quit(); } }
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
const subMenuEdit = {
|
const subMenuEdit = {
|
||||||
label: 'Edit',
|
label: 'Edit',
|
||||||
submenu: [
|
submenu: [
|
||||||
{ label: 'Undo', accelerator: 'Command+Z', selector: 'undo:' },
|
{ label: 'Undo', accelerator: 'Command+Z', selector: 'undo:' },
|
||||||
{ label: 'Redo', accelerator: 'Shift+Command+Z', selector: 'redo:' },
|
{ label: 'Redo', accelerator: 'Shift+Command+Z', selector: 'redo:' },
|
||||||
{ type: 'separator' },
|
{ type: 'separator' },
|
||||||
@ -67,119 +67,119 @@ export default class MenuBuilder {
|
|||||||
{ label: 'Copy', accelerator: 'Command+C', selector: 'copy:' },
|
{ label: 'Copy', accelerator: 'Command+C', selector: 'copy:' },
|
||||||
{ label: 'Paste', accelerator: 'Command+V', selector: 'paste:' },
|
{ label: 'Paste', accelerator: 'Command+V', selector: 'paste:' },
|
||||||
{ label: 'Select All', accelerator: 'Command+A', selector: 'selectAll:' }
|
{ label: 'Select All', accelerator: 'Command+A', selector: 'selectAll:' }
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
const subMenuViewDev = {
|
const subMenuViewDev = {
|
||||||
label: 'View',
|
label: 'View',
|
||||||
submenu: [
|
submenu: [
|
||||||
{ label: 'Reload', accelerator: 'Command+R', click: () => { this.mainWindow.webContents.reload(); } },
|
{ label: 'Reload', accelerator: 'Command+R', click: () => { this.mainWindow.webContents.reload(); } },
|
||||||
{ label: 'Toggle Full Screen', accelerator: 'Ctrl+Command+F', click: () => { this.mainWindow.setFullScreen(!this.mainWindow.isFullScreen()); } },
|
{ label: 'Toggle Full Screen', accelerator: 'Ctrl+Command+F', click: () => { this.mainWindow.setFullScreen(!this.mainWindow.isFullScreen()); } },
|
||||||
{ label: 'Toggle Developer Tools', accelerator: 'Alt+Command+I', click: () => { this.mainWindow.toggleDevTools(); } }
|
{ label: 'Toggle Developer Tools', accelerator: 'Alt+Command+I', click: () => { this.mainWindow.toggleDevTools(); } }
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
const subMenuViewProd = {
|
const subMenuViewProd = {
|
||||||
label: 'View',
|
label: 'View',
|
||||||
submenu: [
|
submenu: [
|
||||||
{ label: 'Toggle Full Screen', accelerator: 'Ctrl+Command+F', click: () => { this.mainWindow.setFullScreen(!this.mainWindow.isFullScreen()); } }
|
{ label: 'Toggle Full Screen', accelerator: 'Ctrl+Command+F', click: () => { this.mainWindow.setFullScreen(!this.mainWindow.isFullScreen()); } }
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
const subMenuWindow = {
|
const subMenuWindow = {
|
||||||
label: 'Window',
|
label: 'Window',
|
||||||
submenu: [
|
submenu: [
|
||||||
{ label: 'Minimize', accelerator: 'Command+M', selector: 'performMiniaturize:' },
|
{ label: 'Minimize', accelerator: 'Command+M', selector: 'performMiniaturize:' },
|
||||||
{ label: 'Close', accelerator: 'Command+W', selector: 'performClose:' },
|
{ label: 'Close', accelerator: 'Command+W', selector: 'performClose:' },
|
||||||
{ type: 'separator' },
|
{ type: 'separator' },
|
||||||
{ label: 'Bring All to Front', selector: 'arrangeInFront:' }
|
{ label: 'Bring All to Front', selector: 'arrangeInFront:' }
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
const subMenuHelp = {
|
const subMenuHelp = {
|
||||||
label: 'Help',
|
label: 'Help',
|
||||||
submenu: [
|
submenu: [
|
||||||
{ label: 'Learn More', click() { shell.openExternal('http://electron.atom.io'); } },
|
{ label: 'Learn More', click() { shell.openExternal('http://electron.atom.io'); } },
|
||||||
{ label: 'Documentation', click() { shell.openExternal('https://github.com/atom/electron/tree/master/docs#readme'); } },
|
{ label: 'Documentation', click() { shell.openExternal('https://github.com/atom/electron/tree/master/docs#readme'); } },
|
||||||
{ label: 'Community Discussions', click() { shell.openExternal('https://discuss.atom.io/c/electron'); } },
|
{ label: 'Community Discussions', click() { shell.openExternal('https://discuss.atom.io/c/electron'); } },
|
||||||
{ label: 'Search Issues', click() { shell.openExternal('https://github.com/atom/electron/issues'); } }
|
{ label: 'Search Issues', click() { shell.openExternal('https://github.com/atom/electron/issues'); } }
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
const subMenuView = process.env.NODE_ENV === 'development'
|
const subMenuView = process.env.NODE_ENV === 'development'
|
||||||
? subMenuViewDev
|
? subMenuViewDev
|
||||||
: subMenuViewProd;
|
: subMenuViewProd;
|
||||||
|
|
||||||
return [
|
return [
|
||||||
subMenuAbout,
|
subMenuAbout,
|
||||||
subMenuEdit,
|
subMenuEdit,
|
||||||
subMenuView,
|
subMenuView,
|
||||||
subMenuWindow,
|
subMenuWindow,
|
||||||
subMenuHelp
|
subMenuHelp
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
buildDefaultTemplate() {
|
buildDefaultTemplate() {
|
||||||
const templateDefault = [{
|
const templateDefault = [{
|
||||||
label: '&File',
|
label: '&File',
|
||||||
submenu: [{
|
submenu: [{
|
||||||
label: '&Open',
|
label: '&Open',
|
||||||
accelerator: 'Ctrl+O'
|
accelerator: 'Ctrl+O'
|
||||||
}, {
|
}, {
|
||||||
label: '&Close',
|
label: '&Close',
|
||||||
accelerator: 'Ctrl+W',
|
accelerator: 'Ctrl+W',
|
||||||
click: () => {
|
click: () => {
|
||||||
this.mainWindow.close();
|
this.mainWindow.close();
|
||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
}, {
|
}, {
|
||||||
label: '&View',
|
label: '&View',
|
||||||
submenu: (process.env.NODE_ENV === 'development') ? [{
|
submenu: (process.env.NODE_ENV === 'development') ? [{
|
||||||
label: '&Reload',
|
label: '&Reload',
|
||||||
accelerator: 'Ctrl+R',
|
accelerator: 'Ctrl+R',
|
||||||
click: () => {
|
click: () => {
|
||||||
this.mainWindow.webContents.reload();
|
this.mainWindow.webContents.reload();
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
label: 'Toggle &Full Screen',
|
label: 'Toggle &Full Screen',
|
||||||
accelerator: 'F11',
|
accelerator: 'F11',
|
||||||
click: () => {
|
click: () => {
|
||||||
this.mainWindow.setFullScreen(!this.mainWindow.isFullScreen());
|
this.mainWindow.setFullScreen(!this.mainWindow.isFullScreen());
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
label: 'Toggle &Developer Tools',
|
label: 'Toggle &Developer Tools',
|
||||||
accelerator: 'Alt+Ctrl+I',
|
accelerator: 'Alt+Ctrl+I',
|
||||||
click: () => {
|
click: () => {
|
||||||
this.mainWindow.toggleDevTools();
|
this.mainWindow.toggleDevTools();
|
||||||
}
|
}
|
||||||
}] : [{
|
}] : [{
|
||||||
label: 'Toggle &Full Screen',
|
label: 'Toggle &Full Screen',
|
||||||
accelerator: 'F11',
|
accelerator: 'F11',
|
||||||
click: () => {
|
click: () => {
|
||||||
this.mainWindow.setFullScreen(!this.mainWindow.isFullScreen());
|
this.mainWindow.setFullScreen(!this.mainWindow.isFullScreen());
|
||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
}, {
|
}, {
|
||||||
label: 'Help',
|
label: 'Help',
|
||||||
submenu: [{
|
submenu: [{
|
||||||
label: 'Learn More',
|
label: 'Learn More',
|
||||||
click() {
|
click() {
|
||||||
shell.openExternal('http://electron.atom.io');
|
shell.openExternal('http://electron.atom.io');
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
label: 'Documentation',
|
label: 'Documentation',
|
||||||
click() {
|
click() {
|
||||||
shell.openExternal('https://github.com/atom/electron/tree/master/docs#readme');
|
shell.openExternal('https://github.com/atom/electron/tree/master/docs#readme');
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
label: 'Community Discussions',
|
label: 'Community Discussions',
|
||||||
click() {
|
click() {
|
||||||
shell.openExternal('https://discuss.atom.io/c/electron');
|
shell.openExternal('https://discuss.atom.io/c/electron');
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
label: 'Search Issues',
|
label: 'Search Issues',
|
||||||
click() {
|
click() {
|
||||||
shell.openExternal('https://github.com/atom/electron/issues');
|
shell.openExternal('https://github.com/atom/electron/issues');
|
||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
}];
|
}];
|
||||||
|
|
||||||
return templateDefault;
|
return templateDefault;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ import { combineReducers } from 'redux';
|
|||||||
import { routerReducer as routing } from 'react-router-redux';
|
import { routerReducer as routing } from 'react-router-redux';
|
||||||
|
|
||||||
const rootReducer = combineReducers({
|
const rootReducer = combineReducers({
|
||||||
routing
|
routing
|
||||||
});
|
});
|
||||||
|
|
||||||
export default rootReducer;
|
export default rootReducer;
|
||||||
|
@ -5,7 +5,7 @@ import HomePage from './containers/HomePage';
|
|||||||
|
|
||||||
|
|
||||||
export default (
|
export default (
|
||||||
<Route path="/" component={App}>
|
<Route path="/" component={App}>
|
||||||
<IndexRoute component={HomePage} />
|
<IndexRoute component={HomePage} />
|
||||||
</Route>
|
</Route>
|
||||||
);
|
);
|
||||||
|
@ -7,50 +7,50 @@ import rootReducer from '../reducers';
|
|||||||
|
|
||||||
export default (initialState = {}) => {
|
export default (initialState = {}) => {
|
||||||
// Redux Configuration
|
// Redux Configuration
|
||||||
const middleware = [];
|
const middleware = [];
|
||||||
const enhancers = [];
|
const enhancers = [];
|
||||||
|
|
||||||
// Thunk Middleware
|
// Thunk Middleware
|
||||||
middleware.push(thunk);
|
middleware.push(thunk);
|
||||||
|
|
||||||
// Logging Middleware
|
// Logging Middleware
|
||||||
const logger = createLogger({
|
const logger = createLogger({
|
||||||
level: 'info',
|
level: 'info',
|
||||||
collapsed: true
|
collapsed: true
|
||||||
});
|
});
|
||||||
middleware.push(logger);
|
middleware.push(logger);
|
||||||
|
|
||||||
// Router Middleware
|
// Router Middleware
|
||||||
const router = routerMiddleware(hashHistory);
|
const router = routerMiddleware(hashHistory);
|
||||||
middleware.push(router);
|
middleware.push(router);
|
||||||
|
|
||||||
// Redux DevTools Configuration
|
// Redux DevTools Configuration
|
||||||
const actionCreators = {
|
const actionCreators = {
|
||||||
|
|
||||||
push,
|
push,
|
||||||
};
|
};
|
||||||
// If Redux DevTools Extension is installed use it, otherwise use Redux compose
|
// If Redux DevTools Extension is installed use it, otherwise use Redux compose
|
||||||
/* eslint-disable no-underscore-dangle */
|
/* eslint-disable no-underscore-dangle */
|
||||||
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
|
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
|
||||||
? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({
|
? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({
|
||||||
// Options: http://zalmoxisus.github.io/redux-devtools-extension/API/Arguments.html
|
// Options: http://zalmoxisus.github.io/redux-devtools-extension/API/Arguments.html
|
||||||
actionCreators,
|
actionCreators,
|
||||||
})
|
})
|
||||||
: compose;
|
: compose;
|
||||||
/* eslint-enable no-underscore-dangle */
|
/* eslint-enable no-underscore-dangle */
|
||||||
|
|
||||||
// Apply Middleware & Compose Enhancers
|
// Apply Middleware & Compose Enhancers
|
||||||
enhancers.push(applyMiddleware(...middleware));
|
enhancers.push(applyMiddleware(...middleware));
|
||||||
const enhancer = composeEnhancers(...enhancers);
|
const enhancer = composeEnhancers(...enhancers);
|
||||||
|
|
||||||
// Create Store
|
// Create Store
|
||||||
const store = createStore(rootReducer, initialState, enhancer);
|
const store = createStore(rootReducer, initialState, enhancer);
|
||||||
|
|
||||||
if (module.hot) {
|
if (module.hot) {
|
||||||
module.hot.accept('../reducers', () =>
|
module.hot.accept('../reducers', () =>
|
||||||
store.replaceReducer(require('../reducers')) // eslint-disable-line global-require
|
store.replaceReducer(require('../reducers')) // eslint-disable-line global-require
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return store;
|
return store;
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
if (process.env.NODE_ENV === 'production') {
|
if (process.env.NODE_ENV === 'production') {
|
||||||
module.exports = require('./configureStore.production'); // eslint-disable-line global-require
|
module.exports = require('./configureStore.production'); // eslint-disable-line global-require
|
||||||
} else {
|
} else {
|
||||||
module.exports = require('./configureStore.development'); // eslint-disable-line global-require
|
module.exports = require('./configureStore.development'); // eslint-disable-line global-require
|
||||||
}
|
}
|
||||||
|
@ -150,6 +150,7 @@
|
|||||||
"html-webpack-plugin": "^2.28.0",
|
"html-webpack-plugin": "^2.28.0",
|
||||||
"identity-obj-proxy": "^3.0.0",
|
"identity-obj-proxy": "^3.0.0",
|
||||||
"jest": "^19.0.2",
|
"jest": "^19.0.2",
|
||||||
|
"jimp": "^0.2.27",
|
||||||
"jsdom": "^9.12.0",
|
"jsdom": "^9.12.0",
|
||||||
"minimist": "^1.2.0",
|
"minimist": "^1.2.0",
|
||||||
"node-sass": "^4.5.2",
|
"node-sass": "^4.5.2",
|
||||||
|
72
setup.js
72
setup.js
@ -12,7 +12,7 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
// remove the following files as they are mostly
|
// remove the following files as they are mostly
|
||||||
// related to the sample counter page and functionality
|
// related to the sample counter page and functionality
|
||||||
remove: [
|
remove: [
|
||||||
{ file: 'app/actions/counter.js' },
|
{ file: 'app/actions/counter.js' },
|
||||||
{ file: 'app/components/Counter.css' },
|
{ file: 'app/components/Counter.css' },
|
||||||
{ file: 'app/components/Counter.js' },
|
{ file: 'app/components/Counter.js' },
|
||||||
@ -25,55 +25,55 @@ module.exports = {
|
|||||||
{ file: 'test/reducers/counter.spec.js' },
|
{ file: 'test/reducers/counter.spec.js' },
|
||||||
{ file: 'CHANGELOG.md' },
|
{ file: 'CHANGELOG.md' },
|
||||||
{ file: 'erb-logo.png' }
|
{ file: 'erb-logo.png' }
|
||||||
],
|
],
|
||||||
// clean the following files by either clearing them
|
// clean the following files by either clearing them
|
||||||
// (by specifying {clear: true}) or by removing lines
|
// (by specifying {clear: true}) or by removing lines
|
||||||
// that match a regex pattern
|
// that match a regex pattern
|
||||||
clean: [
|
clean: [
|
||||||
{
|
{
|
||||||
file: 'app/reducers/index.js',
|
file: 'app/reducers/index.js',
|
||||||
pattern: /counter/
|
pattern: /counter/
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
file: 'app/store/configureStore.development.js',
|
file: 'app/store/configureStore.development.js',
|
||||||
replace: [
|
replace: [
|
||||||
{ pattern: /\?: counterStateType/, substitute: '' },
|
{ pattern: /\?: counterStateType/, substitute: '' },
|
||||||
{ pattern: /^.*import type.*$/, substitute: '' },
|
{ pattern: /^.*import type.*$/, substitute: '' },
|
||||||
{ pattern: /^.*counterActions.*$/, substitute: '' }
|
{ pattern: /^.*counterActions.*$/, substitute: '' }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
file: 'app/store/configureStore.production.js',
|
file: 'app/store/configureStore.production.js',
|
||||||
replace: [
|
replace: [
|
||||||
{ pattern: /\?: counterStateType/, substitute: '' },
|
{ pattern: /\?: counterStateType/, substitute: '' },
|
||||||
{ pattern: /^.*import type.*$/, substitute: '' },
|
{ pattern: /^.*import type.*$/, substitute: '' },
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
file: 'app/app.global.css',
|
file: 'app/app.global.css',
|
||||||
clear: true
|
clear: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
file: 'app/routes.js',
|
file: 'app/routes.js',
|
||||||
pattern: /CounterPage/
|
pattern: /CounterPage/
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
file: 'README.md',
|
file: 'README.md',
|
||||||
clear: true
|
clear: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
file: 'app/components/Home.js',
|
file: 'app/components/Home.js',
|
||||||
pattern: /(h2|Link to)/
|
pattern: /(h2|Link to)/
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
// add the following files to the project, mostly
|
// add the following files to the project, mostly
|
||||||
// related to .gitkeep for version control
|
// related to .gitkeep for version control
|
||||||
add: [
|
add: [
|
||||||
{ file: 'app/actions/.gitkeep' },
|
{ file: 'app/actions/.gitkeep' },
|
||||||
{ file: 'test/actions/.gitkeep' },
|
{ file: 'test/actions/.gitkeep' },
|
||||||
{ file: 'test/components/.gitkeep' },
|
{ file: 'test/components/.gitkeep' },
|
||||||
{ file: 'test/containers/.gitkeep' },
|
{ file: 'test/containers/.gitkeep' },
|
||||||
{ file: 'test/reducers/.gitkeep' },
|
{ file: 'test/reducers/.gitkeep' },
|
||||||
{ file: 'test/e2e/.gitkeep' }
|
{ file: 'test/e2e/.gitkeep' }
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/* eslint-disable func-names */
|
/* eslint-disable func-names */
|
||||||
|
|
||||||
describe('description', () => {
|
describe('description', () => {
|
||||||
it('should have description', () => {
|
it('should have description', () => {
|
||||||
expect(1 + 2).toBe(3);
|
expect(1 + 2).toBe(3);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -4,13 +4,13 @@ global.document = jsdom('<!doctype html><html><body></body></html>');
|
|||||||
global.window = document.defaultView;
|
global.window = document.defaultView;
|
||||||
global.navigator = global.window.navigator;
|
global.navigator = global.window.navigator;
|
||||||
window.localStorage = window.sessionStorage = {
|
window.localStorage = window.sessionStorage = {
|
||||||
getItem(key) {
|
getItem(key) {
|
||||||
return this[key];
|
return this[key];
|
||||||
},
|
},
|
||||||
setItem(key, value) {
|
setItem(key, value) {
|
||||||
this[key] = value;
|
this[key] = value;
|
||||||
},
|
},
|
||||||
removeItem(key) {
|
removeItem(key) {
|
||||||
this[key] = undefined;
|
this[key] = undefined;
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -7,40 +7,40 @@ import webpack from 'webpack';
|
|||||||
import { dependencies as externals } from './app/package.json';
|
import { dependencies as externals } from './app/package.json';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
externals: Object.keys(externals || {}),
|
externals: Object.keys(externals || {}),
|
||||||
|
|
||||||
module: {
|
module: {
|
||||||
rules: [{
|
rules: [{
|
||||||
test: /\.jsx?$/,
|
test: /\.jsx?$/,
|
||||||
exclude: /node_modules/,
|
exclude: /node_modules/,
|
||||||
use: {
|
use: {
|
||||||
loader: 'babel-loader',
|
loader: 'babel-loader',
|
||||||
options: {
|
options: {
|
||||||
cacheDirectory: true
|
cacheDirectory: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
|
|
||||||
output: {
|
output: {
|
||||||
path: path.join(__dirname, 'app'),
|
path: path.join(__dirname, 'app'),
|
||||||
filename: 'bundle.js',
|
filename: 'bundle.js',
|
||||||
// https://github.com/webpack/webpack/issues/1114
|
// https://github.com/webpack/webpack/issues/1114
|
||||||
libraryTarget: 'commonjs2'
|
libraryTarget: 'commonjs2'
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine the array of extensions that should be used to resolve modules.
|
* Determine the array of extensions that should be used to resolve modules.
|
||||||
*/
|
*/
|
||||||
resolve: {
|
resolve: {
|
||||||
extensions: ['.js', '.jsx', '.json'],
|
extensions: ['.js', '.jsx', '.json'],
|
||||||
modules: [
|
modules: [
|
||||||
path.join(__dirname, 'app'),
|
path.join(__dirname, 'app'),
|
||||||
'node_modules',
|
'node_modules',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
plugins: [
|
plugins: [
|
||||||
new webpack.NamedModulesPlugin(),
|
new webpack.NamedModulesPlugin(),
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
@ -8,23 +8,23 @@ import BabiliPlugin from 'babili-webpack-plugin';
|
|||||||
import baseConfig from './webpack.config.base';
|
import baseConfig from './webpack.config.base';
|
||||||
|
|
||||||
export default merge.smart(baseConfig, {
|
export default merge.smart(baseConfig, {
|
||||||
devtool: 'source-map',
|
devtool: 'source-map',
|
||||||
|
|
||||||
target: 'electron-main',
|
target: 'electron-main',
|
||||||
|
|
||||||
entry: ['babel-polyfill', './app/main.development'],
|
entry: ['babel-polyfill', './app/main.development'],
|
||||||
|
|
||||||
// 'main.js' in root
|
// 'main.js' in root
|
||||||
output: {
|
output: {
|
||||||
path: __dirname,
|
path: __dirname,
|
||||||
filename: './app/main.js'
|
filename: './app/main.js'
|
||||||
},
|
},
|
||||||
|
|
||||||
plugins: [
|
plugins: [
|
||||||
/**
|
/**
|
||||||
* Babli is an ES6+ aware minifier based on the Babel toolchain (beta)
|
* Babli is an ES6+ aware minifier based on the Babel toolchain (beta)
|
||||||
*/
|
*/
|
||||||
new BabiliPlugin(),
|
new BabiliPlugin(),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create global constants which can be configured at compile time.
|
* Create global constants which can be configured at compile time.
|
||||||
@ -35,18 +35,18 @@ export default merge.smart(baseConfig, {
|
|||||||
* NODE_ENV should be production so that modules do not perform certain
|
* NODE_ENV should be production so that modules do not perform certain
|
||||||
* development checks
|
* development checks
|
||||||
*/
|
*/
|
||||||
new webpack.DefinePlugin({
|
new webpack.DefinePlugin({
|
||||||
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'production')
|
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'production')
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Disables webpack processing of __dirname and __filename.
|
* Disables webpack processing of __dirname and __filename.
|
||||||
* If you run the bundle in node.js it falls back to these values of node.js.
|
* If you run the bundle in node.js it falls back to these values of node.js.
|
||||||
* https://github.com/webpack/webpack/issues/2010
|
* https://github.com/webpack/webpack/issues/2010
|
||||||
*/
|
*/
|
||||||
node: {
|
node: {
|
||||||
__dirname: false,
|
__dirname: false,
|
||||||
__filename: false
|
__filename: false
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -11,174 +11,174 @@ import { dependencies } from './package.json';
|
|||||||
const dist = path.resolve(process.cwd(), 'dll');
|
const dist = path.resolve(process.cwd(), 'dll');
|
||||||
|
|
||||||
export default merge.smart(baseConfig, {
|
export default merge.smart(baseConfig, {
|
||||||
context: process.cwd(),
|
context: process.cwd(),
|
||||||
|
|
||||||
devtool: 'eval',
|
devtool: 'eval',
|
||||||
|
|
||||||
target: 'electron-renderer',
|
target: 'electron-renderer',
|
||||||
|
|
||||||
externals: ['fsevents', 'crypto-browserify'],
|
externals: ['fsevents', 'crypto-browserify'],
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @HACK: Copy and pasted from renderer dev config. Consider merging these
|
* @HACK: Copy and pasted from renderer dev config. Consider merging these
|
||||||
* rules into the base config. May cause breaking changes.
|
* rules into the base config. May cause breaking changes.
|
||||||
*/
|
*/
|
||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
{
|
{
|
||||||
test: /\.global\.css$/,
|
test: /\.global\.css$/,
|
||||||
use: [
|
use: [
|
||||||
{
|
{
|
||||||
loader: 'style-loader'
|
loader: 'style-loader'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loader: 'css-loader',
|
loader: 'css-loader',
|
||||||
options: {
|
options: {
|
||||||
sourceMap: true,
|
sourceMap: true,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
test: /^((?!\.global).)*\.css$/,
|
test: /^((?!\.global).)*\.css$/,
|
||||||
use: [
|
use: [
|
||||||
{
|
{
|
||||||
loader: 'style-loader'
|
loader: 'style-loader'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loader: 'css-loader',
|
loader: 'css-loader',
|
||||||
options: {
|
options: {
|
||||||
modules: true,
|
modules: true,
|
||||||
sourceMap: true,
|
sourceMap: true,
|
||||||
importLoaders: 1,
|
importLoaders: 1,
|
||||||
localIdentName: '[name]__[local]__[hash:base64:5]',
|
localIdentName: '[name]__[local]__[hash:base64:5]',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
// Add SASS support - compile all .global.scss files and pipe it to style.css
|
// Add SASS support - compile all .global.scss files and pipe it to style.css
|
||||||
{
|
{
|
||||||
test: /\.global\.scss$/,
|
test: /\.global\.scss$/,
|
||||||
use: [
|
use: [
|
||||||
{
|
{
|
||||||
loader: 'style-loader'
|
loader: 'style-loader'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loader: 'css-loader',
|
loader: 'css-loader',
|
||||||
options: {
|
options: {
|
||||||
sourceMap: true,
|
sourceMap: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loader: 'sass-loader'
|
loader: 'sass-loader'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
// Add SASS support - compile all other .scss files and pipe it to style.css
|
// Add SASS support - compile all other .scss files and pipe it to style.css
|
||||||
{
|
{
|
||||||
test: /^((?!\.global).)*\.scss$/,
|
test: /^((?!\.global).)*\.scss$/,
|
||||||
use: [
|
use: [
|
||||||
{
|
{
|
||||||
loader: 'style-loader'
|
loader: 'style-loader'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loader: 'css-loader',
|
loader: 'css-loader',
|
||||||
options: {
|
options: {
|
||||||
modules: true,
|
modules: true,
|
||||||
sourceMap: true,
|
sourceMap: true,
|
||||||
importLoaders: 1,
|
importLoaders: 1,
|
||||||
localIdentName: '[name]__[local]__[hash:base64:5]',
|
localIdentName: '[name]__[local]__[hash:base64:5]',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loader: 'sass-loader'
|
loader: 'sass-loader'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
// WOFF Font
|
// WOFF Font
|
||||||
{
|
{
|
||||||
test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
|
test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
|
||||||
use: {
|
use: {
|
||||||
loader: 'url-loader',
|
loader: 'url-loader',
|
||||||
options: {
|
options: {
|
||||||
limit: 10000,
|
limit: 10000,
|
||||||
mimetype: 'application/font-woff',
|
mimetype: 'application/font-woff',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// WOFF2 Font
|
// WOFF2 Font
|
||||||
{
|
{
|
||||||
test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/,
|
test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/,
|
||||||
use: {
|
use: {
|
||||||
loader: 'url-loader',
|
loader: 'url-loader',
|
||||||
options: {
|
options: {
|
||||||
limit: 10000,
|
limit: 10000,
|
||||||
mimetype: 'application/font-woff',
|
mimetype: 'application/font-woff',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// TTF Font
|
// TTF Font
|
||||||
{
|
{
|
||||||
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
|
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
|
||||||
use: {
|
use: {
|
||||||
loader: 'url-loader',
|
loader: 'url-loader',
|
||||||
options: {
|
options: {
|
||||||
limit: 10000,
|
limit: 10000,
|
||||||
mimetype: 'application/octet-stream'
|
mimetype: 'application/octet-stream'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// EOT Font
|
// EOT Font
|
||||||
{
|
{
|
||||||
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
|
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
|
||||||
use: 'file-loader',
|
use: 'file-loader',
|
||||||
},
|
},
|
||||||
// SVG Font
|
// SVG Font
|
||||||
{
|
{
|
||||||
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
|
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
|
||||||
use: {
|
use: {
|
||||||
loader: 'url-loader',
|
loader: 'url-loader',
|
||||||
options: {
|
options: {
|
||||||
limit: 10000,
|
limit: 10000,
|
||||||
mimetype: 'image/svg+xml',
|
mimetype: 'image/svg+xml',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// Common Image Formats
|
// Common Image Formats
|
||||||
{
|
{
|
||||||
test: /\.(?:ico|gif|png|jpg|jpeg|webp)$/,
|
test: /\.(?:ico|gif|png|jpg|jpeg|webp)$/,
|
||||||
use: 'url-loader',
|
use: 'url-loader',
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
resolve: {
|
resolve: {
|
||||||
modules: [
|
modules: [
|
||||||
'app',
|
'app',
|
||||||
'node_modules',
|
'node_modules',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
entry: {
|
entry: {
|
||||||
vendor: [
|
vendor: [
|
||||||
'babel-polyfill',
|
'babel-polyfill',
|
||||||
...Object.keys(dependencies)
|
...Object.keys(dependencies)
|
||||||
]
|
]
|
||||||
.filter(dependency => dependency !== 'font-awesome'),
|
.filter(dependency => dependency !== 'font-awesome'),
|
||||||
},
|
},
|
||||||
|
|
||||||
output: {
|
output: {
|
||||||
library: 'vendor',
|
library: 'vendor',
|
||||||
path: dist,
|
path: dist,
|
||||||
filename: '[name].dll.js',
|
filename: '[name].dll.js',
|
||||||
libraryTarget: 'var'
|
libraryTarget: 'var'
|
||||||
},
|
},
|
||||||
|
|
||||||
plugins: [
|
plugins: [
|
||||||
new webpack.DllPlugin({
|
new webpack.DllPlugin({
|
||||||
path: path.join(dist, '[name].json'),
|
path: path.join(dist, '[name].json'),
|
||||||
name: '[name]',
|
name: '[name]',
|
||||||
}),
|
}),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create global constants which can be configured at compile time.
|
* Create global constants which can be configured at compile time.
|
||||||
@ -189,18 +189,18 @@ export default merge.smart(baseConfig, {
|
|||||||
* NODE_ENV should be production so that modules do not perform certain
|
* NODE_ENV should be production so that modules do not perform certain
|
||||||
* development checks
|
* development checks
|
||||||
*/
|
*/
|
||||||
new webpack.DefinePlugin({
|
new webpack.DefinePlugin({
|
||||||
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development')
|
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development')
|
||||||
}),
|
}),
|
||||||
|
|
||||||
new webpack.LoaderOptionsPlugin({
|
new webpack.LoaderOptionsPlugin({
|
||||||
debug: true,
|
debug: true,
|
||||||
options: {
|
options: {
|
||||||
context: path.resolve(process.cwd(), 'app'),
|
context: path.resolve(process.cwd(), 'app'),
|
||||||
output: {
|
output: {
|
||||||
path: path.resolve(process.cwd(), 'dll'),
|
path: path.resolve(process.cwd(), 'dll'),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
@ -25,172 +25,172 @@ const manifest = path.resolve(dll, 'vendor.json');
|
|||||||
* Warn if the DLL is not built
|
* Warn if the DLL is not built
|
||||||
*/
|
*/
|
||||||
if (!(fs.existsSync(dll) && fs.existsSync(manifest))) {
|
if (!(fs.existsSync(dll) && fs.existsSync(manifest))) {
|
||||||
console.log(chalk.black.bgYellow.bold(
|
console.log(chalk.black.bgYellow.bold(
|
||||||
'The DLL files are missing. Sit back while we build them for you with "npm run build-dll"'
|
'The DLL files are missing. Sit back while we build them for you with "npm run build-dll"'
|
||||||
));
|
));
|
||||||
execSync('npm run build-dll');
|
execSync('npm run build-dll');
|
||||||
}
|
}
|
||||||
|
|
||||||
export default merge.smart(baseConfig, {
|
export default merge.smart(baseConfig, {
|
||||||
devtool: 'inline-source-map',
|
devtool: 'inline-source-map',
|
||||||
|
|
||||||
target: 'electron-renderer',
|
target: 'electron-renderer',
|
||||||
|
|
||||||
entry: [
|
entry: [
|
||||||
'react-hot-loader/patch',
|
'react-hot-loader/patch',
|
||||||
`webpack-dev-server/client?http://localhost:${port}/`,
|
`webpack-dev-server/client?http://localhost:${port}/`,
|
||||||
'webpack/hot/only-dev-server',
|
'webpack/hot/only-dev-server',
|
||||||
path.join(__dirname, 'app/index.js'),
|
path.join(__dirname, 'app/index.js'),
|
||||||
],
|
],
|
||||||
|
|
||||||
output: {
|
output: {
|
||||||
publicPath: `http://localhost:${port}/dist/`
|
publicPath: `http://localhost:${port}/dist/`
|
||||||
},
|
},
|
||||||
|
|
||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
{
|
{
|
||||||
test: /\.global\.css$/,
|
test: /\.global\.css$/,
|
||||||
use: [
|
use: [
|
||||||
{
|
{
|
||||||
loader: 'style-loader'
|
loader: 'style-loader'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loader: 'css-loader',
|
loader: 'css-loader',
|
||||||
options: {
|
options: {
|
||||||
sourceMap: true,
|
sourceMap: true,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
test: /^((?!\.global).)*\.css$/,
|
test: /^((?!\.global).)*\.css$/,
|
||||||
use: [
|
use: [
|
||||||
{
|
{
|
||||||
loader: 'style-loader'
|
loader: 'style-loader'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loader: 'css-loader',
|
loader: 'css-loader',
|
||||||
options: {
|
options: {
|
||||||
modules: true,
|
modules: true,
|
||||||
sourceMap: true,
|
sourceMap: true,
|
||||||
importLoaders: 1,
|
importLoaders: 1,
|
||||||
localIdentName: '[name]__[local]__[hash:base64:5]',
|
localIdentName: '[name]__[local]__[hash:base64:5]',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
// Add SASS support - compile all .global.scss files and pipe it to style.css
|
// Add SASS support - compile all .global.scss files and pipe it to style.css
|
||||||
{
|
{
|
||||||
test: /\.global\.scss$/,
|
test: /\.global\.scss$/,
|
||||||
use: [
|
use: [
|
||||||
{
|
{
|
||||||
loader: 'style-loader'
|
loader: 'style-loader'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loader: 'css-loader',
|
loader: 'css-loader',
|
||||||
options: {
|
options: {
|
||||||
sourceMap: true,
|
sourceMap: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loader: 'sass-loader'
|
loader: 'sass-loader'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
// Add SASS support - compile all other .scss files and pipe it to style.css
|
// Add SASS support - compile all other .scss files and pipe it to style.css
|
||||||
{
|
{
|
||||||
test: /^((?!\.global).)*\.scss$/,
|
test: /^((?!\.global).)*\.scss$/,
|
||||||
use: [
|
use: [
|
||||||
{
|
{
|
||||||
loader: 'style-loader'
|
loader: 'style-loader'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loader: 'css-loader',
|
loader: 'css-loader',
|
||||||
options: {
|
options: {
|
||||||
modules: true,
|
modules: true,
|
||||||
sourceMap: true,
|
sourceMap: true,
|
||||||
importLoaders: 1,
|
importLoaders: 1,
|
||||||
localIdentName: '[name]__[local]__[hash:base64:5]',
|
localIdentName: '[name]__[local]__[hash:base64:5]',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loader: 'sass-loader'
|
loader: 'sass-loader'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
// WOFF Font
|
// WOFF Font
|
||||||
{
|
{
|
||||||
test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
|
test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
|
||||||
use: {
|
use: {
|
||||||
loader: 'url-loader',
|
loader: 'url-loader',
|
||||||
options: {
|
options: {
|
||||||
limit: 10000,
|
limit: 10000,
|
||||||
mimetype: 'application/font-woff',
|
mimetype: 'application/font-woff',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// WOFF2 Font
|
// WOFF2 Font
|
||||||
{
|
{
|
||||||
test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/,
|
test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/,
|
||||||
use: {
|
use: {
|
||||||
loader: 'url-loader',
|
loader: 'url-loader',
|
||||||
options: {
|
options: {
|
||||||
limit: 10000,
|
limit: 10000,
|
||||||
mimetype: 'application/font-woff',
|
mimetype: 'application/font-woff',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// TTF Font
|
// TTF Font
|
||||||
{
|
{
|
||||||
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
|
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
|
||||||
use: {
|
use: {
|
||||||
loader: 'url-loader',
|
loader: 'url-loader',
|
||||||
options: {
|
options: {
|
||||||
limit: 10000,
|
limit: 10000,
|
||||||
mimetype: 'application/octet-stream'
|
mimetype: 'application/octet-stream'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// EOT Font
|
// EOT Font
|
||||||
{
|
{
|
||||||
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
|
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
|
||||||
use: 'file-loader',
|
use: 'file-loader',
|
||||||
},
|
},
|
||||||
// SVG Font
|
// SVG Font
|
||||||
{
|
{
|
||||||
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
|
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
|
||||||
use: {
|
use: {
|
||||||
loader: 'url-loader',
|
loader: 'url-loader',
|
||||||
options: {
|
options: {
|
||||||
limit: 10000,
|
limit: 10000,
|
||||||
mimetype: 'image/svg+xml',
|
mimetype: 'image/svg+xml',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// Common Image Formats
|
// Common Image Formats
|
||||||
{
|
{
|
||||||
test: /\.(?:ico|gif|png|jpg|jpeg|webp)$/,
|
test: /\.(?:ico|gif|png|jpg|jpeg|webp)$/,
|
||||||
use: 'url-loader',
|
use: 'url-loader',
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
plugins: [
|
plugins: [
|
||||||
new webpack.DllReferencePlugin({
|
new webpack.DllReferencePlugin({
|
||||||
context: process.cwd(),
|
context: process.cwd(),
|
||||||
manifest: require(manifest),
|
manifest: require(manifest),
|
||||||
sourceType: 'var',
|
sourceType: 'var',
|
||||||
}),
|
}),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* https://webpack.js.org/concepts/hot-module-replacement/
|
* https://webpack.js.org/concepts/hot-module-replacement/
|
||||||
*/
|
*/
|
||||||
new webpack.HotModuleReplacementPlugin({
|
new webpack.HotModuleReplacementPlugin({
|
||||||
multiStep: true
|
multiStep: true
|
||||||
}),
|
}),
|
||||||
|
|
||||||
new webpack.NoEmitOnErrorsPlugin(),
|
new webpack.NoEmitOnErrorsPlugin(),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create global constants which can be configured at compile time.
|
* Create global constants which can be configured at compile time.
|
||||||
@ -204,48 +204,48 @@ export default merge.smart(baseConfig, {
|
|||||||
* By default, use 'development' as NODE_ENV. This can be overriden with
|
* By default, use 'development' as NODE_ENV. This can be overriden with
|
||||||
* 'staging', for example, by changing the ENV variables in the npm scripts
|
* 'staging', for example, by changing the ENV variables in the npm scripts
|
||||||
*/
|
*/
|
||||||
new webpack.DefinePlugin({
|
new webpack.DefinePlugin({
|
||||||
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development')
|
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development')
|
||||||
}),
|
}),
|
||||||
|
|
||||||
new webpack.LoaderOptionsPlugin({
|
new webpack.LoaderOptionsPlugin({
|
||||||
debug: true
|
debug: true
|
||||||
}),
|
}),
|
||||||
|
|
||||||
new ExtractTextPlugin({
|
new ExtractTextPlugin({
|
||||||
filename: '[name].css'
|
filename: '[name].css'
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
|
|
||||||
devServer: {
|
devServer: {
|
||||||
port,
|
port,
|
||||||
publicPath,
|
publicPath,
|
||||||
compress: true,
|
compress: true,
|
||||||
noInfo: true,
|
noInfo: true,
|
||||||
stats: 'errors-only',
|
stats: 'errors-only',
|
||||||
inline: true,
|
inline: true,
|
||||||
lazy: false,
|
lazy: false,
|
||||||
hot: true,
|
hot: true,
|
||||||
headers: { 'Access-Control-Allow-Origin': '*' },
|
headers: { 'Access-Control-Allow-Origin': '*' },
|
||||||
contentBase: path.join(__dirname, 'dist'),
|
contentBase: path.join(__dirname, 'dist'),
|
||||||
watchOptions: {
|
watchOptions: {
|
||||||
aggregateTimeout: 300,
|
aggregateTimeout: 300,
|
||||||
poll: 100
|
poll: 100
|
||||||
},
|
},
|
||||||
historyApiFallback: {
|
historyApiFallback: {
|
||||||
verbose: true,
|
verbose: true,
|
||||||
disableDotRule: false,
|
disableDotRule: false,
|
||||||
},
|
},
|
||||||
setup() {
|
setup() {
|
||||||
if (process.env.START_HOT) {
|
if (process.env.START_HOT) {
|
||||||
spawn(
|
spawn(
|
||||||
'npm',
|
'npm',
|
||||||
['run', 'start-hot-renderer'],
|
['run', 'start-hot-renderer'],
|
||||||
{ shell: true, env: process.env, stdio: 'inherit' }
|
{ shell: true, env: process.env, stdio: 'inherit' }
|
||||||
)
|
)
|
||||||
.on('close', code => process.exit(code))
|
.on('close', code => process.exit(code))
|
||||||
.on('error', spawnError => console.error(spawnError));
|
.on('error', spawnError => console.error(spawnError));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -11,131 +11,131 @@ import BabiliPlugin from 'babili-webpack-plugin';
|
|||||||
import baseConfig from './webpack.config.base';
|
import baseConfig from './webpack.config.base';
|
||||||
|
|
||||||
export default merge.smart(baseConfig, {
|
export default merge.smart(baseConfig, {
|
||||||
devtool: 'source-map',
|
devtool: 'source-map',
|
||||||
|
|
||||||
target: 'electron-renderer',
|
target: 'electron-renderer',
|
||||||
|
|
||||||
entry: ['babel-polyfill', './app/index'],
|
entry: ['babel-polyfill', './app/index'],
|
||||||
|
|
||||||
output: {
|
output: {
|
||||||
path: path.join(__dirname, 'app/dist'),
|
path: path.join(__dirname, 'app/dist'),
|
||||||
publicPath: '../dist/'
|
publicPath: '../dist/'
|
||||||
},
|
},
|
||||||
|
|
||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
// Extract all .global.css to style.css as is
|
// Extract all .global.css to style.css as is
|
||||||
{
|
{
|
||||||
test: /\.global\.css$/,
|
test: /\.global\.css$/,
|
||||||
use: ExtractTextPlugin.extract({
|
use: ExtractTextPlugin.extract({
|
||||||
use: 'css-loader',
|
use: 'css-loader',
|
||||||
fallback: 'style-loader',
|
fallback: 'style-loader',
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
// Pipe other styles through css modules and append to style.css
|
// Pipe other styles through css modules and append to style.css
|
||||||
{
|
{
|
||||||
test: /^((?!\.global).)*\.css$/,
|
test: /^((?!\.global).)*\.css$/,
|
||||||
use: ExtractTextPlugin.extract({
|
use: ExtractTextPlugin.extract({
|
||||||
use: {
|
use: {
|
||||||
loader: 'css-loader',
|
loader: 'css-loader',
|
||||||
options: {
|
options: {
|
||||||
modules: true,
|
modules: true,
|
||||||
importLoaders: 1,
|
importLoaders: 1,
|
||||||
localIdentName: '[name]__[local]__[hash:base64:5]',
|
localIdentName: '[name]__[local]__[hash:base64:5]',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
// Add SASS support - compile all .global.scss files and pipe it to style.css
|
// Add SASS support - compile all .global.scss files and pipe it to style.css
|
||||||
{
|
{
|
||||||
test: /\.global\.scss$/,
|
test: /\.global\.scss$/,
|
||||||
use: ExtractTextPlugin.extract({
|
use: ExtractTextPlugin.extract({
|
||||||
use: [
|
use: [
|
||||||
{
|
{
|
||||||
loader: 'css-loader'
|
loader: 'css-loader'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loader: 'sass-loader'
|
loader: 'sass-loader'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
fallback: 'style-loader',
|
fallback: 'style-loader',
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
// Add SASS support - compile all other .scss files and pipe it to style.css
|
// Add SASS support - compile all other .scss files and pipe it to style.css
|
||||||
{
|
{
|
||||||
test: /^((?!\.global).)*\.scss$/,
|
test: /^((?!\.global).)*\.scss$/,
|
||||||
use: ExtractTextPlugin.extract({
|
use: ExtractTextPlugin.extract({
|
||||||
use: [{
|
use: [{
|
||||||
loader: 'css-loader',
|
loader: 'css-loader',
|
||||||
options: {
|
options: {
|
||||||
modules: true,
|
modules: true,
|
||||||
importLoaders: 1,
|
importLoaders: 1,
|
||||||
localIdentName: '[name]__[local]__[hash:base64:5]',
|
localIdentName: '[name]__[local]__[hash:base64:5]',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loader: 'sass-loader'
|
loader: 'sass-loader'
|
||||||
}]
|
}]
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
// WOFF Font
|
// WOFF Font
|
||||||
{
|
{
|
||||||
test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
|
test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
|
||||||
use: {
|
use: {
|
||||||
loader: 'url-loader',
|
loader: 'url-loader',
|
||||||
options: {
|
options: {
|
||||||
limit: 10000,
|
limit: 10000,
|
||||||
mimetype: 'application/font-woff',
|
mimetype: 'application/font-woff',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// WOFF2 Font
|
// WOFF2 Font
|
||||||
{
|
{
|
||||||
test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/,
|
test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/,
|
||||||
use: {
|
use: {
|
||||||
loader: 'url-loader',
|
loader: 'url-loader',
|
||||||
options: {
|
options: {
|
||||||
limit: 10000,
|
limit: 10000,
|
||||||
mimetype: 'application/font-woff',
|
mimetype: 'application/font-woff',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// TTF Font
|
// TTF Font
|
||||||
{
|
{
|
||||||
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
|
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
|
||||||
use: {
|
use: {
|
||||||
loader: 'url-loader',
|
loader: 'url-loader',
|
||||||
options: {
|
options: {
|
||||||
limit: 10000,
|
limit: 10000,
|
||||||
mimetype: 'application/octet-stream'
|
mimetype: 'application/octet-stream'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// EOT Font
|
// EOT Font
|
||||||
{
|
{
|
||||||
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
|
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
|
||||||
use: 'file-loader',
|
use: 'file-loader',
|
||||||
},
|
},
|
||||||
// SVG Font
|
// SVG Font
|
||||||
{
|
{
|
||||||
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
|
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
|
||||||
use: {
|
use: {
|
||||||
loader: 'url-loader',
|
loader: 'url-loader',
|
||||||
options: {
|
options: {
|
||||||
limit: 10000,
|
limit: 10000,
|
||||||
mimetype: 'image/svg+xml',
|
mimetype: 'image/svg+xml',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// Common Image Formats
|
// Common Image Formats
|
||||||
{
|
{
|
||||||
test: /\.(?:ico|gif|png|jpg|jpeg|webp)$/,
|
test: /\.(?:ico|gif|png|jpg|jpeg|webp)$/,
|
||||||
use: 'url-loader',
|
use: 'url-loader',
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
plugins: [
|
plugins: [
|
||||||
/**
|
/**
|
||||||
* Create global constants which can be configured at compile time.
|
* Create global constants which can be configured at compile time.
|
||||||
*
|
*
|
||||||
@ -145,24 +145,24 @@ export default merge.smart(baseConfig, {
|
|||||||
* NODE_ENV should be production so that modules do not perform certain
|
* NODE_ENV should be production so that modules do not perform certain
|
||||||
* development checks
|
* development checks
|
||||||
*/
|
*/
|
||||||
new webpack.DefinePlugin({
|
new webpack.DefinePlugin({
|
||||||
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'production')
|
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'production')
|
||||||
}),
|
}),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Babli is an ES6+ aware minifier based on the Babel toolchain (beta)
|
* Babli is an ES6+ aware minifier based on the Babel toolchain (beta)
|
||||||
*/
|
*/
|
||||||
new BabiliPlugin(),
|
new BabiliPlugin(),
|
||||||
|
|
||||||
new ExtractTextPlugin('style.css'),
|
new ExtractTextPlugin('style.css'),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dynamically generate index.html page
|
* Dynamically generate index.html page
|
||||||
*/
|
*/
|
||||||
new HtmlWebpackPlugin({
|
new HtmlWebpackPlugin({
|
||||||
filename: '../app.html',
|
filename: '../app.html',
|
||||||
template: 'app/app.html',
|
template: 'app/app.html',
|
||||||
inject: false
|
inject: false
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
209
yarn.lock
209
yarn.lock
@ -397,7 +397,7 @@ babel-eslint@^7.2.1:
|
|||||||
babel-types "^6.23.0"
|
babel-types "^6.23.0"
|
||||||
babylon "^6.16.1"
|
babylon "^6.16.1"
|
||||||
|
|
||||||
babel-generator@^6.18.0, babel-generator@^6.21.0, babel-generator@^6.24.0:
|
babel-generator@^6.18.0, babel-generator@^6.24.0:
|
||||||
version "6.24.0"
|
version "6.24.0"
|
||||||
resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.0.tgz#eba270a8cc4ce6e09a61be43465d7c62c1f87c56"
|
resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.0.tgz#eba270a8cc4ce6e09a61be43465d7c62c1f87c56"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -606,17 +606,6 @@ babel-plugin-dev-expression@^0.2.1:
|
|||||||
version "0.2.1"
|
version "0.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/babel-plugin-dev-expression/-/babel-plugin-dev-expression-0.2.1.tgz#d4a7beefefbb50e3f2734990a82a2486cf9eb9ee"
|
resolved "https://registry.yarnpkg.com/babel-plugin-dev-expression/-/babel-plugin-dev-expression-0.2.1.tgz#d4a7beefefbb50e3f2734990a82a2486cf9eb9ee"
|
||||||
|
|
||||||
babel-plugin-flow-runtime@^0.10.0:
|
|
||||||
version "0.10.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/babel-plugin-flow-runtime/-/babel-plugin-flow-runtime-0.10.0.tgz#de60b8c64ce0eec6b13663a129d79ec46b97cb2d"
|
|
||||||
dependencies:
|
|
||||||
babel-generator "^6.21.0"
|
|
||||||
babel-traverse "^6.20.0"
|
|
||||||
babel-types "^6.16.0"
|
|
||||||
babylon "^6.16.1"
|
|
||||||
camelcase "^3.0.0"
|
|
||||||
flow-config-parser "^0.3.0"
|
|
||||||
|
|
||||||
babel-plugin-istanbul@^4.0.0:
|
babel-plugin-istanbul@^4.0.0:
|
||||||
version "4.1.1"
|
version "4.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.1.tgz#c12de0fc6fe42adfb16be56f1ad11e4a9782eca9"
|
resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.1.tgz#c12de0fc6fe42adfb16be56f1ad11e4a9782eca9"
|
||||||
@ -1116,12 +1105,6 @@ babel-plugin-transform-remove-undefined@^0.0.5:
|
|||||||
version "0.0.5"
|
version "0.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.0.5.tgz#12ef11805e06e861dd2eb0c7cc041d2184b8f410"
|
resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.0.5.tgz#12ef11805e06e861dd2eb0c7cc041d2184b8f410"
|
||||||
|
|
||||||
babel-plugin-transform-runtime@^6.23.0:
|
|
||||||
version "6.23.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee"
|
|
||||||
dependencies:
|
|
||||||
babel-runtime "^6.22.0"
|
|
||||||
|
|
||||||
babel-plugin-transform-simplify-comparison-operators@^6.8.1:
|
babel-plugin-transform-simplify-comparison-operators@^6.8.1:
|
||||||
version "6.8.1"
|
version "6.8.1"
|
||||||
resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.8.1.tgz#a307088e0d1c728081777fba568f4107396ab25c"
|
resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.8.1.tgz#a307088e0d1c728081777fba568f4107396ab25c"
|
||||||
@ -1349,7 +1332,7 @@ babel-template@^6.16.0, babel-template@^6.22.0, babel-template@^6.23.0, babel-te
|
|||||||
babylon "^6.11.0"
|
babylon "^6.11.0"
|
||||||
lodash "^4.2.0"
|
lodash "^4.2.0"
|
||||||
|
|
||||||
babel-traverse@^6.18.0, babel-traverse@^6.20.0, babel-traverse@^6.22.0, babel-traverse@^6.23.0, babel-traverse@^6.23.1:
|
babel-traverse@^6.18.0, babel-traverse@^6.22.0, babel-traverse@^6.23.0, babel-traverse@^6.23.1:
|
||||||
version "6.23.1"
|
version "6.23.1"
|
||||||
resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48"
|
resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -1363,7 +1346,7 @@ babel-traverse@^6.18.0, babel-traverse@^6.20.0, babel-traverse@^6.22.0, babel-tr
|
|||||||
invariant "^2.2.0"
|
invariant "^2.2.0"
|
||||||
lodash "^4.2.0"
|
lodash "^4.2.0"
|
||||||
|
|
||||||
babel-types@^6.16.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.22.0, babel-types@^6.23.0:
|
babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.22.0, babel-types@^6.23.0:
|
||||||
version "6.23.0"
|
version "6.23.0"
|
||||||
resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf"
|
resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -1410,6 +1393,10 @@ big.js@^3.1.3:
|
|||||||
version "3.1.3"
|
version "3.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978"
|
resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978"
|
||||||
|
|
||||||
|
bignumber.js@^2.1.0:
|
||||||
|
version "2.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-2.4.0.tgz#838a992da9f9d737e0f4b2db0be62bb09dd0c5e8"
|
||||||
|
|
||||||
binary-extensions@^1.0.0:
|
binary-extensions@^1.0.0:
|
||||||
version "1.8.0"
|
version "1.8.0"
|
||||||
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
|
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
|
||||||
@ -1443,6 +1430,10 @@ bluebird@^3.1.1, bluebird@^3.4.7, bluebird@^3.5.0:
|
|||||||
version "3.5.0"
|
version "3.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c"
|
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c"
|
||||||
|
|
||||||
|
bmp-js@0.0.1:
|
||||||
|
version "0.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/bmp-js/-/bmp-js-0.0.1.tgz#5ad0147099d13a9f38aa7b99af1d6e78666ed37f"
|
||||||
|
|
||||||
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
|
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
|
||||||
version "4.11.6"
|
version "4.11.6"
|
||||||
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215"
|
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215"
|
||||||
@ -1583,6 +1574,10 @@ buffer-crc32@^0.2.1:
|
|||||||
version "0.2.13"
|
version "0.2.13"
|
||||||
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
|
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
|
||||||
|
|
||||||
|
buffer-equal@0.0.1:
|
||||||
|
version "0.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b"
|
||||||
|
|
||||||
buffer-shims@^1.0.0:
|
buffer-shims@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
|
resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
|
||||||
@ -2829,6 +2824,10 @@ es6-map@^0.1.3:
|
|||||||
es6-symbol "~3.1.1"
|
es6-symbol "~3.1.1"
|
||||||
event-emitter "~0.3.5"
|
event-emitter "~0.3.5"
|
||||||
|
|
||||||
|
es6-promise@^3.0.2:
|
||||||
|
version "3.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613"
|
||||||
|
|
||||||
es6-promise@^4.0.5:
|
es6-promise@^4.0.5:
|
||||||
version "4.1.0"
|
version "4.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.0.tgz#dda03ca8f9f89bc597e689842929de7ba8cebdf0"
|
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.0.tgz#dda03ca8f9f89bc597e689842929de7ba8cebdf0"
|
||||||
@ -2947,20 +2946,6 @@ eslint-plugin-compat@^1.0.2:
|
|||||||
caniuse-db "1.0.30000626"
|
caniuse-db "1.0.30000626"
|
||||||
requireindex "^1.1.0"
|
requireindex "^1.1.0"
|
||||||
|
|
||||||
eslint-plugin-flowtype-errors@^3.0.3:
|
|
||||||
version "3.0.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype-errors/-/eslint-plugin-flowtype-errors-3.0.3.tgz#6c1d8874b91ffc65115a4744cf85020fb126725f"
|
|
||||||
dependencies:
|
|
||||||
babel-plugin-transform-runtime "^6.23.0"
|
|
||||||
shelljs "^0.7.7"
|
|
||||||
slash "^1.0.0"
|
|
||||||
|
|
||||||
eslint-plugin-flowtype@^2.30.4:
|
|
||||||
version "2.30.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.30.4.tgz#771d6bb4578ab8598e9c58018fea2e1a22946249"
|
|
||||||
dependencies:
|
|
||||||
lodash "^4.15.0"
|
|
||||||
|
|
||||||
eslint-plugin-import@^2.2.0:
|
eslint-plugin-import@^2.2.0:
|
||||||
version "2.2.0"
|
version "2.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz#72ba306fad305d67c4816348a4699a4229ac8b4e"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz#72ba306fad305d67c4816348a4699a4229ac8b4e"
|
||||||
@ -3137,6 +3122,10 @@ execa@^0.4.0:
|
|||||||
path-key "^1.0.0"
|
path-key "^1.0.0"
|
||||||
strip-eof "^1.0.0"
|
strip-eof "^1.0.0"
|
||||||
|
|
||||||
|
exif-parser@^0.1.9:
|
||||||
|
version "0.1.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/exif-parser/-/exif-parser-0.1.9.tgz#1d087e05fd2b079e3a8eaf8ff249978cb5f6fba7"
|
||||||
|
|
||||||
exit-hook@^1.0.0:
|
exit-hook@^1.0.0:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
|
resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
|
||||||
@ -3316,6 +3305,10 @@ file-loader@^0.11.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
loader-utils "^1.0.2"
|
loader-utils "^1.0.2"
|
||||||
|
|
||||||
|
file-type@^3.1.0:
|
||||||
|
version "3.9.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9"
|
||||||
|
|
||||||
filename-regex@^2.0.0:
|
filename-regex@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
|
resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
|
||||||
@ -3387,14 +3380,16 @@ flatten@^1.0.2:
|
|||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
|
resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
|
||||||
|
|
||||||
flow-config-parser@^0.3.0:
|
|
||||||
version "0.3.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/flow-config-parser/-/flow-config-parser-0.3.0.tgz#704916efba88cd2518ab4d8f933079571276138f"
|
|
||||||
|
|
||||||
font-awesome@^4.7.0:
|
font-awesome@^4.7.0:
|
||||||
version "4.7.0"
|
version "4.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133"
|
resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133"
|
||||||
|
|
||||||
|
for-each@^0.3.2:
|
||||||
|
version "0.3.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.2.tgz#2c40450b9348e97f281322593ba96704b9abd4d4"
|
||||||
|
dependencies:
|
||||||
|
is-function "~1.0.0"
|
||||||
|
|
||||||
for-in@^0.1.3:
|
for-in@^0.1.3:
|
||||||
version "0.1.8"
|
version "0.1.8"
|
||||||
resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
|
resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
|
||||||
@ -3594,7 +3589,7 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@~7.1.1:
|
|||||||
once "^1.3.0"
|
once "^1.3.0"
|
||||||
path-is-absolute "^1.0.0"
|
path-is-absolute "^1.0.0"
|
||||||
|
|
||||||
global@^4.3.0:
|
global@^4.3.0, global@~4.3.0:
|
||||||
version "4.3.1"
|
version "4.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/global/-/global-4.3.1.tgz#5f757908c7cbabce54f386ae440e11e26b7916df"
|
resolved "https://registry.yarnpkg.com/global/-/global-4.3.1.tgz#5f757908c7cbabce54f386ae440e11e26b7916df"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -4054,6 +4049,10 @@ invert-kv@^1.0.0:
|
|||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
|
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
|
||||||
|
|
||||||
|
ip-regex@^1.0.1:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd"
|
||||||
|
|
||||||
ipaddr.js@1.3.0:
|
ipaddr.js@1.3.0:
|
||||||
version "1.3.0"
|
version "1.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.3.0.tgz#1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec"
|
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.3.0.tgz#1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec"
|
||||||
@ -4145,6 +4144,10 @@ is-fullwidth-code-point@^2.0.0:
|
|||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
|
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
|
||||||
|
|
||||||
|
is-function@^1.0.1, is-function@~1.0.0:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5"
|
||||||
|
|
||||||
is-glob@^2.0.0, is-glob@^2.0.1:
|
is-glob@^2.0.0, is-glob@^2.0.1:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
|
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
|
||||||
@ -4589,12 +4592,36 @@ jest@^19.0.2:
|
|||||||
dependencies:
|
dependencies:
|
||||||
jest-cli "^19.0.2"
|
jest-cli "^19.0.2"
|
||||||
|
|
||||||
|
jimp@^0.2.27:
|
||||||
|
version "0.2.27"
|
||||||
|
resolved "https://registry.yarnpkg.com/jimp/-/jimp-0.2.27.tgz#41ef5082d8b63201d54747e04fe8bcacbaf25474"
|
||||||
|
dependencies:
|
||||||
|
bignumber.js "^2.1.0"
|
||||||
|
bmp-js "0.0.1"
|
||||||
|
es6-promise "^3.0.2"
|
||||||
|
exif-parser "^0.1.9"
|
||||||
|
file-type "^3.1.0"
|
||||||
|
jpeg-js "^0.2.0"
|
||||||
|
load-bmfont "^1.2.3"
|
||||||
|
mime "^1.3.4"
|
||||||
|
pixelmatch "^4.0.0"
|
||||||
|
pngjs "^3.0.0"
|
||||||
|
read-chunk "^1.0.1"
|
||||||
|
request "^2.65.0"
|
||||||
|
stream-to-buffer "^0.1.0"
|
||||||
|
tinycolor2 "^1.1.2"
|
||||||
|
url-regex "^3.0.0"
|
||||||
|
|
||||||
jodid25519@^1.0.0:
|
jodid25519@^1.0.0:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
|
resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
|
||||||
dependencies:
|
dependencies:
|
||||||
jsbn "~0.1.0"
|
jsbn "~0.1.0"
|
||||||
|
|
||||||
|
jpeg-js@^0.2.0:
|
||||||
|
version "0.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.2.0.tgz#53e448ec9d263e683266467e9442d2c5a2ef5482"
|
||||||
|
|
||||||
js-base64@^2.1.9:
|
js-base64@^2.1.9:
|
||||||
version "2.1.9"
|
version "2.1.9"
|
||||||
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce"
|
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce"
|
||||||
@ -4771,6 +4798,18 @@ levn@^0.3.0, levn@~0.3.0:
|
|||||||
prelude-ls "~1.1.2"
|
prelude-ls "~1.1.2"
|
||||||
type-check "~0.3.2"
|
type-check "~0.3.2"
|
||||||
|
|
||||||
|
load-bmfont@^1.2.3:
|
||||||
|
version "1.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/load-bmfont/-/load-bmfont-1.3.0.tgz#bb7e7c710de6bcafcb13cb3b8c81e0c0131ecbc9"
|
||||||
|
dependencies:
|
||||||
|
buffer-equal "0.0.1"
|
||||||
|
mime "^1.3.4"
|
||||||
|
parse-bmfont-ascii "^1.0.3"
|
||||||
|
parse-bmfont-binary "^1.0.5"
|
||||||
|
parse-bmfont-xml "^1.1.0"
|
||||||
|
xhr "^2.0.1"
|
||||||
|
xtend "^4.0.0"
|
||||||
|
|
||||||
load-json-file@^1.0.0:
|
load-json-file@^1.0.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
|
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
|
||||||
@ -4997,7 +5036,7 @@ lodash.uniq@^4.3.0:
|
|||||||
version "4.5.0"
|
version "4.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
|
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
|
||||||
|
|
||||||
lodash@^4.0.0, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.1, lodash@^4.6.1, lodash@^4.8.0:
|
lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.1, lodash@^4.6.1, lodash@^4.8.0:
|
||||||
version "4.17.4"
|
version "4.17.4"
|
||||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
|
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
|
||||||
|
|
||||||
@ -5678,6 +5717,21 @@ parse-asn1@^5.0.0:
|
|||||||
evp_bytestokey "^1.0.0"
|
evp_bytestokey "^1.0.0"
|
||||||
pbkdf2 "^3.0.3"
|
pbkdf2 "^3.0.3"
|
||||||
|
|
||||||
|
parse-bmfont-ascii@^1.0.3:
|
||||||
|
version "1.0.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz#11ac3c3ff58f7c2020ab22769079108d4dfa0285"
|
||||||
|
|
||||||
|
parse-bmfont-binary@^1.0.5:
|
||||||
|
version "1.0.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz#d038b476d3e9dd9db1e11a0b0e53a22792b69006"
|
||||||
|
|
||||||
|
parse-bmfont-xml@^1.1.0:
|
||||||
|
version "1.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/parse-bmfont-xml/-/parse-bmfont-xml-1.1.3.tgz#d6b66a371afd39c5007d9f0eeb262a4f2cce7b7c"
|
||||||
|
dependencies:
|
||||||
|
xml-parse-from-string "^1.0.0"
|
||||||
|
xml2js "^0.4.5"
|
||||||
|
|
||||||
parse-color@^1.0.0:
|
parse-color@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/parse-color/-/parse-color-1.0.0.tgz#7b748b95a83f03f16a94f535e52d7f3d94658619"
|
resolved "https://registry.yarnpkg.com/parse-color/-/parse-color-1.0.0.tgz#7b748b95a83f03f16a94f535e52d7f3d94658619"
|
||||||
@ -5693,6 +5747,13 @@ parse-glob@^3.0.4:
|
|||||||
is-extglob "^1.0.0"
|
is-extglob "^1.0.0"
|
||||||
is-glob "^2.0.0"
|
is-glob "^2.0.0"
|
||||||
|
|
||||||
|
parse-headers@^2.0.0:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.1.tgz#6ae83a7aa25a9d9b700acc28698cd1f1ed7e9536"
|
||||||
|
dependencies:
|
||||||
|
for-each "^0.3.2"
|
||||||
|
trim "0.0.1"
|
||||||
|
|
||||||
parse-json@^2.2.0:
|
parse-json@^2.2.0:
|
||||||
version "2.2.0"
|
version "2.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
|
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
|
||||||
@ -5783,6 +5844,12 @@ pinkie@^2.0.0:
|
|||||||
version "2.0.4"
|
version "2.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
|
resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
|
||||||
|
|
||||||
|
pixelmatch@^4.0.0:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854"
|
||||||
|
dependencies:
|
||||||
|
pngjs "^3.0.0"
|
||||||
|
|
||||||
pkg-dir@^1.0.0:
|
pkg-dir@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4"
|
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4"
|
||||||
@ -5813,6 +5880,10 @@ pluralize@^1.2.1:
|
|||||||
version "1.2.1"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
|
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
|
||||||
|
|
||||||
|
pngjs@^3.0.0:
|
||||||
|
version "3.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.0.1.tgz#b15086ac1ac47298c8fd3f9cdf364fa9879c4db6"
|
||||||
|
|
||||||
portfinder@^1.0.9:
|
portfinder@^1.0.9:
|
||||||
version "1.0.13"
|
version "1.0.13"
|
||||||
resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9"
|
resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9"
|
||||||
@ -6309,6 +6380,10 @@ react@^15.4.2:
|
|||||||
loose-envify "^1.1.0"
|
loose-envify "^1.1.0"
|
||||||
object-assign "^4.1.0"
|
object-assign "^4.1.0"
|
||||||
|
|
||||||
|
read-chunk@^1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-1.0.1.tgz#5f68cab307e663f19993527d9b589cace4661194"
|
||||||
|
|
||||||
read-pkg-up@^1.0.1:
|
read-pkg-up@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
|
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
|
||||||
@ -6720,7 +6795,7 @@ sass-loader@^6.0.3:
|
|||||||
lodash.tail "^4.1.1"
|
lodash.tail "^4.1.1"
|
||||||
pify "^2.3.0"
|
pify "^2.3.0"
|
||||||
|
|
||||||
sax@^1.2.1, sax@~1.2.1:
|
sax@>=0.6.0, sax@^1.2.1, sax@~1.2.1:
|
||||||
version "1.2.2"
|
version "1.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828"
|
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828"
|
||||||
|
|
||||||
@ -6822,7 +6897,7 @@ shebang-regex@^1.0.0:
|
|||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
|
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
|
||||||
|
|
||||||
shelljs@^0.7.5, shelljs@^0.7.7:
|
shelljs@^0.7.5:
|
||||||
version "0.7.7"
|
version "0.7.7"
|
||||||
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1"
|
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -7073,6 +7148,16 @@ stream-http@^2.3.1:
|
|||||||
to-arraybuffer "^1.0.0"
|
to-arraybuffer "^1.0.0"
|
||||||
xtend "^4.0.0"
|
xtend "^4.0.0"
|
||||||
|
|
||||||
|
stream-to-buffer@^0.1.0:
|
||||||
|
version "0.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/stream-to-buffer/-/stream-to-buffer-0.1.0.tgz#26799d903ab2025c9bd550ac47171b00f8dd80a9"
|
||||||
|
dependencies:
|
||||||
|
stream-to "~0.2.0"
|
||||||
|
|
||||||
|
stream-to@~0.2.0:
|
||||||
|
version "0.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/stream-to/-/stream-to-0.2.2.tgz#84306098d85fdb990b9fa300b1b3ccf55e8ef01d"
|
||||||
|
|
||||||
strict-uri-encode@^1.0.0:
|
strict-uri-encode@^1.0.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
|
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
|
||||||
@ -7320,6 +7405,10 @@ timers-browserify@^2.0.2:
|
|||||||
dependencies:
|
dependencies:
|
||||||
setimmediate "^1.0.4"
|
setimmediate "^1.0.4"
|
||||||
|
|
||||||
|
tinycolor2@^1.1.2:
|
||||||
|
version "1.4.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8"
|
||||||
|
|
||||||
tmp@0.0.28:
|
tmp@0.0.28:
|
||||||
version "0.0.28"
|
version "0.0.28"
|
||||||
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120"
|
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120"
|
||||||
@ -7380,6 +7469,10 @@ trim-right@^1.0.1:
|
|||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
|
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
|
||||||
|
|
||||||
|
trim@0.0.1:
|
||||||
|
version "0.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd"
|
||||||
|
|
||||||
truncate-utf8-bytes@^1.0.0:
|
truncate-utf8-bytes@^1.0.0:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b"
|
resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b"
|
||||||
@ -7534,6 +7627,12 @@ url-parse@^1.1.1:
|
|||||||
querystringify "0.0.x"
|
querystringify "0.0.x"
|
||||||
requires-port "1.0.x"
|
requires-port "1.0.x"
|
||||||
|
|
||||||
|
url-regex@^3.0.0:
|
||||||
|
version "3.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/url-regex/-/url-regex-3.2.0.tgz#dbad1e0c9e29e105dd0b1f09f6862f7fdb482724"
|
||||||
|
dependencies:
|
||||||
|
ip-regex "^1.0.1"
|
||||||
|
|
||||||
url@^0.11.0:
|
url@^0.11.0:
|
||||||
version "0.11.0"
|
version "0.11.0"
|
||||||
resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
|
resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
|
||||||
@ -7881,6 +7980,15 @@ xdg-basedir@^3.0.0:
|
|||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
|
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
|
||||||
|
|
||||||
|
xhr@^2.0.1:
|
||||||
|
version "2.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.4.0.tgz#e16e66a45f869861eeefab416d5eff722dc40993"
|
||||||
|
dependencies:
|
||||||
|
global "~4.3.0"
|
||||||
|
is-function "^1.0.1"
|
||||||
|
parse-headers "^2.0.0"
|
||||||
|
xtend "^4.0.0"
|
||||||
|
|
||||||
xml-char-classes@^1.0.0:
|
xml-char-classes@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d"
|
resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d"
|
||||||
@ -7889,10 +7997,27 @@ xml-name-validator@^2.0.1:
|
|||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635"
|
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635"
|
||||||
|
|
||||||
|
xml-parse-from-string@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.0.tgz#feba5809f3cd2d17d2e4239fa810cd0319fc5da5"
|
||||||
|
|
||||||
|
xml2js@^0.4.5:
|
||||||
|
version "0.4.17"
|
||||||
|
resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868"
|
||||||
|
dependencies:
|
||||||
|
sax ">=0.6.0"
|
||||||
|
xmlbuilder "^4.1.0"
|
||||||
|
|
||||||
xmlbuilder@8.2.2:
|
xmlbuilder@8.2.2:
|
||||||
version "8.2.2"
|
version "8.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773"
|
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773"
|
||||||
|
|
||||||
|
xmlbuilder@^4.1.0:
|
||||||
|
version "4.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5"
|
||||||
|
dependencies:
|
||||||
|
lodash "^4.0.0"
|
||||||
|
|
||||||
xmldom@0.1.x:
|
xmldom@0.1.x:
|
||||||
version "0.1.27"
|
version "0.1.27"
|
||||||
resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9"
|
resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9"
|
||||||
|
Reference in New Issue
Block a user