mirror of
https://github.com/strapi/strapi.git
synced 2025-11-12 08:08:05 +00:00
Change remove helper plugin deps
This commit is contained in:
parent
88ff38d925
commit
7043840cbd
@ -19,6 +19,8 @@ import {
|
|||||||
pluginLoaded,
|
pluginLoaded,
|
||||||
unfreezeApp,
|
unfreezeApp,
|
||||||
updatePlugin,
|
updatePlugin,
|
||||||
|
getAppPluginsSucceeded,
|
||||||
|
// unsetHasUserPlugin,
|
||||||
} from './containers/App/actions';
|
} from './containers/App/actions';
|
||||||
import { showNotification } from './containers/NotificationProvider/actions';
|
import { showNotification } from './containers/NotificationProvider/actions';
|
||||||
import injectReducer from './utils/injectReducer';
|
import injectReducer from './utils/injectReducer';
|
||||||
@ -41,6 +43,10 @@ const store = configureStore(initialState, history);
|
|||||||
const { dispatch } = store;
|
const { dispatch } = store;
|
||||||
const MOUNT_NODE = document.getElementById('app');
|
const MOUNT_NODE = document.getElementById('app');
|
||||||
|
|
||||||
|
// TODO remove temporary to access the admin
|
||||||
|
|
||||||
|
dispatch(getAppPluginsSucceeded([]));
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
const remoteURL = (() => {
|
const remoteURL = (() => {
|
||||||
if (window.location.port === '4000') {
|
if (window.location.port === '4000') {
|
||||||
@ -156,5 +162,10 @@ if (!window.Intl) {
|
|||||||
render(translationMessages);
|
render(translationMessages);
|
||||||
}
|
}
|
||||||
|
|
||||||
// cc/ @Pierre Burgy exporting dispatch for the notifications
|
// @Pierre Burgy exporting dispatch for the notifications...
|
||||||
export { dispatch };
|
export { dispatch };
|
||||||
|
|
||||||
|
// TODO remove this for the new Cypress tests
|
||||||
|
if (window.Cypress) {
|
||||||
|
window.__store__ = Object.assign(window.__store__ || {}, { store });
|
||||||
|
}
|
||||||
|
|||||||
@ -1,44 +0,0 @@
|
|||||||
/**
|
|
||||||
* appDev.js
|
|
||||||
*
|
|
||||||
* This is then entry file for the application in development
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { findIndex } from 'lodash';
|
|
||||||
import 'babel-polyfill';
|
|
||||||
import 'sanitize.css/sanitize.css';
|
|
||||||
import {
|
|
||||||
getAppPluginsSucceeded,
|
|
||||||
unsetHasUserPlugin,
|
|
||||||
} from './containers/App/actions';
|
|
||||||
import { store } from './createStore';
|
|
||||||
import render from './renderApp';
|
|
||||||
import './intlPolyfill';
|
|
||||||
import './strapi';
|
|
||||||
|
|
||||||
const dispatch = store.dispatch;
|
|
||||||
const plugins = (() => {
|
|
||||||
try {
|
|
||||||
return require('./config/plugins.json');
|
|
||||||
} catch (e) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
|
|
||||||
dispatch(getAppPluginsSucceeded(plugins));
|
|
||||||
|
|
||||||
// Hot reloadable translation json files
|
|
||||||
if (module.hot) {
|
|
||||||
// modules.hot.accept does not accept dynamic dependencies,
|
|
||||||
// have to be constants at compile-time
|
|
||||||
module.hot.accept('./i18n', () => {
|
|
||||||
render(translationMessages);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (findIndex(plugins, ['id', 'users-permissions']) === -1) {
|
|
||||||
dispatch(unsetHasUserPlugin());
|
|
||||||
}
|
|
||||||
|
|
||||||
export { dispatch };
|
|
||||||
@ -1,9 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* ListPlugins
|
* ListPlugins
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
@ -16,7 +16,7 @@ import Row from '../Row';
|
|||||||
|
|
||||||
import styles from './styles.scss';
|
import styles from './styles.scss';
|
||||||
|
|
||||||
class ListPlugins extends React.PureComponent {
|
class ListPlugins extends React.Component {
|
||||||
render() {
|
render() {
|
||||||
const listSize = size(this.props.plugins);
|
const listSize = size(this.props.plugins);
|
||||||
let titleType = listSize === 1 ? 'singular' : 'plural';
|
let titleType = listSize === 1 ? 'singular' : 'plural';
|
||||||
@ -29,14 +29,17 @@ class ListPlugins extends React.PureComponent {
|
|||||||
<div className={styles.container}>
|
<div className={styles.container}>
|
||||||
<div className={styles.titleContainer}>
|
<div className={styles.titleContainer}>
|
||||||
<div>
|
<div>
|
||||||
<FormattedMessage id={`app.components.listPlugins.title.${titleType}`} values={{ number: listSize}} />
|
<FormattedMessage
|
||||||
|
id={`app.components.listPlugins.title.${titleType}`}
|
||||||
|
values={{ number: listSize }}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<Button
|
<Button
|
||||||
label="app.components.listPlugins.button"
|
label="app.components.listPlugins.button"
|
||||||
onClick={() => this.props.history.push('/install-plugin')}
|
onClick={() => this.props.history.push('/install-plugin')}
|
||||||
secondaryHotlineAdd
|
secondaryHotlineAdd
|
||||||
style={{ display: 'none'}}
|
style={{ display: 'none' }}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -12,13 +12,6 @@ import { createStructuredSelector } from 'reselect';
|
|||||||
import { bindActionCreators, compose } from 'redux';
|
import { bindActionCreators, compose } from 'redux';
|
||||||
import { Switch, Route } from 'react-router-dom';
|
import { Switch, Route } from 'react-router-dom';
|
||||||
|
|
||||||
// Actions from strapi-helper-plugin
|
|
||||||
// Actions required for disabling and enabling the OverlayBlocker
|
|
||||||
import {
|
|
||||||
disableGlobalOverlayBlocker,
|
|
||||||
enableGlobalOverlayBlocker,
|
|
||||||
} from 'actions/overlayBlocker';
|
|
||||||
|
|
||||||
// Components from strapi-helper-plugin
|
// Components from strapi-helper-plugin
|
||||||
import LoadingIndicatorPage from 'components/LoadingIndicatorPage';
|
import LoadingIndicatorPage from 'components/LoadingIndicatorPage';
|
||||||
import OverlayBlocker from 'components/OverlayBlocker';
|
import OverlayBlocker from 'components/OverlayBlocker';
|
||||||
@ -38,7 +31,11 @@ import NotFoundPage from '../NotFoundPage/Loadable';
|
|||||||
import Onboarding from '../Onboarding';
|
import Onboarding from '../Onboarding';
|
||||||
import PluginDispatcher from '../PluginDispatcher';
|
import PluginDispatcher from '../PluginDispatcher';
|
||||||
|
|
||||||
import { updatePlugin } from '../App/actions';
|
import {
|
||||||
|
disableGlobalOverlayBlocker,
|
||||||
|
enableGlobalOverlayBlocker,
|
||||||
|
updatePlugin,
|
||||||
|
} from '../App/actions';
|
||||||
import makeSelecApp from '../App/selectors';
|
import makeSelecApp from '../App/selectors';
|
||||||
|
|
||||||
import injectSaga from '../../utils/injectSaga';
|
import injectSaga from '../../utils/injectSaga';
|
||||||
|
|||||||
@ -5,6 +5,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
DISABLE_GLOBAL_OVERLAY_BLOCKER,
|
||||||
|
ENABLE_GLOBAL_OVERLAY_BLOCKER,
|
||||||
FREEZE_APP,
|
FREEZE_APP,
|
||||||
GET_APP_PLUGINS_SUCCEEDED,
|
GET_APP_PLUGINS_SUCCEEDED,
|
||||||
LOAD_PLUGIN,
|
LOAD_PLUGIN,
|
||||||
@ -15,6 +17,18 @@ import {
|
|||||||
UPDATE_PLUGIN,
|
UPDATE_PLUGIN,
|
||||||
} from './constants';
|
} from './constants';
|
||||||
|
|
||||||
|
export function disableGlobalOverlayBlocker() {
|
||||||
|
return {
|
||||||
|
type: DISABLE_GLOBAL_OVERLAY_BLOCKER,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export function enableGlobalOverlayBlocker() {
|
||||||
|
return {
|
||||||
|
type: ENABLE_GLOBAL_OVERLAY_BLOCKER,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export function freezeApp(data) {
|
export function freezeApp(data) {
|
||||||
return {
|
return {
|
||||||
type: FREEZE_APP,
|
type: FREEZE_APP,
|
||||||
|
|||||||
@ -12,3 +12,7 @@ export const PLUGIN_DELETED = 'app/App/PLUGIN_DELETED';
|
|||||||
export const UNFREEZE_APP = 'app/App/UNFREEZE_APP';
|
export const UNFREEZE_APP = 'app/App/UNFREEZE_APP';
|
||||||
export const UNSET_HAS_USERS_PLUGIN = 'app/App/UNSET_HAS_USERS_PLUGIN';
|
export const UNSET_HAS_USERS_PLUGIN = 'app/App/UNSET_HAS_USERS_PLUGIN';
|
||||||
export const UPDATE_PLUGIN = 'app/App/UPDATE_PLUGIN';
|
export const UPDATE_PLUGIN = 'app/App/UPDATE_PLUGIN';
|
||||||
|
export const DISABLE_GLOBAL_OVERLAY_BLOCKER =
|
||||||
|
'app/App/OverlayBlocker/DISABLE_GLOBAL_OVERLAY_BLOCKER';
|
||||||
|
export const ENABLE_GLOBAL_OVERLAY_BLOCKER =
|
||||||
|
'app/App/OverlayBlocker/ENABLE_GLOBAL_OVERLAY_BLOCKER';
|
||||||
|
|||||||
@ -1,12 +1,9 @@
|
|||||||
// Shared constants
|
// Shared constants
|
||||||
import {
|
|
||||||
DISABLE_GLOBAL_OVERLAY_BLOCKER,
|
|
||||||
ENABLE_GLOBAL_OVERLAY_BLOCKER,
|
|
||||||
} from 'constants/overlayBlocker';
|
|
||||||
|
|
||||||
import { fromJS, List } from 'immutable';
|
import { fromJS, List } from 'immutable';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
DISABLE_GLOBAL_OVERLAY_BLOCKER,
|
||||||
|
ENABLE_GLOBAL_OVERLAY_BLOCKER,
|
||||||
FREEZE_APP,
|
FREEZE_APP,
|
||||||
GET_APP_PLUGINS_SUCCEEDED,
|
GET_APP_PLUGINS_SUCCEEDED,
|
||||||
PLUGIN_DELETED,
|
PLUGIN_DELETED,
|
||||||
|
|||||||
@ -1,20 +0,0 @@
|
|||||||
/**
|
|
||||||
* Common configuration for the app in both dev an prod mode
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { createBrowserHistory } from 'history';
|
|
||||||
|
|
||||||
import './public-path';
|
|
||||||
import configureStore from './configureStore';
|
|
||||||
|
|
||||||
const basename = strapi.remoteURL.replace(window.location.origin, '');
|
|
||||||
const history = createBrowserHistory({
|
|
||||||
basename,
|
|
||||||
});
|
|
||||||
const store = configureStore({}, history);
|
|
||||||
|
|
||||||
if (window.Cypress) {
|
|
||||||
window.__store__ = Object.assign(window.__store__ || {}, { store });
|
|
||||||
}
|
|
||||||
|
|
||||||
export { basename, history, store };
|
|
||||||
@ -1,19 +0,0 @@
|
|||||||
/**
|
|
||||||
* Common configuration for the app in both dev an prod mode
|
|
||||||
*/
|
|
||||||
import { translationMessages } from './i18n';
|
|
||||||
import './public-path';
|
|
||||||
import render from './renderApp';
|
|
||||||
|
|
||||||
// Chunked polyfill for browsers without Intl support
|
|
||||||
window.onload = function onLoad() {
|
|
||||||
if (!window.Intl) {
|
|
||||||
Promise.all([
|
|
||||||
System.import('intl'),
|
|
||||||
System.import('intl/locale-data/jsonp/en.js'),
|
|
||||||
System.import('intl/locale-data/jsonp/fr.js'),
|
|
||||||
]).then(() => render(translationMessages));
|
|
||||||
} else {
|
|
||||||
render(translationMessages);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@ -1,61 +0,0 @@
|
|||||||
/**
|
|
||||||
* Create the store with dynamic reducers
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { createStore, applyMiddleware, compose } from 'redux';
|
|
||||||
import { fromJS } from 'immutable';
|
|
||||||
import { routerMiddleware } from 'react-router-redux';
|
|
||||||
import createSagaMiddleware from 'redux-saga';
|
|
||||||
import createReducer from './reducers';
|
|
||||||
|
|
||||||
const sagaMiddleware = createSagaMiddleware();
|
|
||||||
|
|
||||||
export default function configureStore(initialState = {}, history) {
|
|
||||||
// Create the store with two middlewares
|
|
||||||
// 1. sagaMiddleware: Makes redux-sagas work
|
|
||||||
// 2. routerMiddleware: Syncs the location/URL path to the state
|
|
||||||
const middlewares = [
|
|
||||||
sagaMiddleware,
|
|
||||||
routerMiddleware(history),
|
|
||||||
];
|
|
||||||
|
|
||||||
const enhancers = [
|
|
||||||
applyMiddleware(...middlewares),
|
|
||||||
];
|
|
||||||
|
|
||||||
// If Redux DevTools Extension is installed use it, otherwise use Redux compose
|
|
||||||
/* eslint-disable no-underscore-dangle */
|
|
||||||
const composeEnhancers =
|
|
||||||
process.env.NODE_ENV !== 'production' &&
|
|
||||||
typeof window === 'object' &&
|
|
||||||
window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
|
|
||||||
? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({
|
|
||||||
// TODO Try to remove when `react-router-redux` is out of beta, LOCATION_CHANGE should not be fired more than once after hot reloading
|
|
||||||
// Prevent recomputing reducers for `replaceReducer`
|
|
||||||
shouldHotReload: false,
|
|
||||||
name: `Strapi - Dashboard`,
|
|
||||||
})
|
|
||||||
: compose;
|
|
||||||
/* eslint-enable */
|
|
||||||
|
|
||||||
const store = createStore(
|
|
||||||
createReducer(),
|
|
||||||
fromJS(initialState),
|
|
||||||
composeEnhancers(...enhancers)
|
|
||||||
);
|
|
||||||
|
|
||||||
// Extensions
|
|
||||||
store.runSaga = sagaMiddleware.run;
|
|
||||||
store.injectedReducers = {}; // Reducer registry
|
|
||||||
store.injectedSagas = {}; // Saga registry
|
|
||||||
|
|
||||||
// Make reducers hot reloadable, see http://mxs.is/googmo
|
|
||||||
/* istanbul ignore next */
|
|
||||||
if (module.hot) {
|
|
||||||
module.hot.accept('./reducers', () => {
|
|
||||||
store.replaceReducer(createReducer(store.injectedReducers));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return store;
|
|
||||||
}
|
|
||||||
@ -1,81 +0,0 @@
|
|||||||
/**
|
|
||||||
* Common configuration for the app in both dev an prod mode
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { merge } from 'lodash';
|
|
||||||
import {
|
|
||||||
freezeApp,
|
|
||||||
pluginLoaded,
|
|
||||||
unfreezeApp,
|
|
||||||
updatePlugin,
|
|
||||||
} from './containers/App/actions';
|
|
||||||
import { showNotification } from './containers/NotificationProvider/actions';
|
|
||||||
import injectReducer from './utils/injectReducer';
|
|
||||||
import injectSaga from './utils/injectSaga';
|
|
||||||
// import { history, store } from './createStore';
|
|
||||||
import { translationMessages, languages } from './i18n';
|
|
||||||
// import './public-path';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Register a plugin
|
|
||||||
*
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
const registerPlugin = plugin => {
|
|
||||||
// Merge admin translation messages
|
|
||||||
merge(translationMessages, plugin.translationMessages);
|
|
||||||
|
|
||||||
plugin.leftMenuSections = plugin.leftMenuSections || [];
|
|
||||||
|
|
||||||
store.dispatch(pluginLoaded(plugin));
|
|
||||||
};
|
|
||||||
const displayNotification = (message, status) => {
|
|
||||||
store.dispatch(showNotification(message, status));
|
|
||||||
};
|
|
||||||
const lockApp = data => {
|
|
||||||
store.dispatch(freezeApp(data));
|
|
||||||
};
|
|
||||||
const unlockApp = () => {
|
|
||||||
store.dispatch(unfreezeApp());
|
|
||||||
};
|
|
||||||
|
|
||||||
window.strapi = Object.assign(window.strapi || {}, {
|
|
||||||
node: process.env.MODE || 'host',
|
|
||||||
registerPlugin,
|
|
||||||
notification: {
|
|
||||||
success: message => {
|
|
||||||
displayNotification(message, 'success');
|
|
||||||
},
|
|
||||||
warning: message => {
|
|
||||||
displayNotification(message, 'warning');
|
|
||||||
},
|
|
||||||
error: message => {
|
|
||||||
displayNotification(message, 'error');
|
|
||||||
},
|
|
||||||
info: message => {
|
|
||||||
displayNotification(message, 'info');
|
|
||||||
},
|
|
||||||
},
|
|
||||||
refresh: pluginId => ({
|
|
||||||
translationMessages: translationMessagesUpdated => {
|
|
||||||
render(merge({}, translationMessages, translationMessagesUpdated));
|
|
||||||
},
|
|
||||||
leftMenuSections: leftMenuSectionsUpdated => {
|
|
||||||
store.dispatch(
|
|
||||||
updatePlugin(pluginId, 'leftMenuSections', leftMenuSectionsUpdated),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
router: history,
|
|
||||||
languages,
|
|
||||||
currentLanguage:
|
|
||||||
window.localStorage.getItem('strapi-admin-language') ||
|
|
||||||
window.navigator.language ||
|
|
||||||
window.navigator.userLanguage ||
|
|
||||||
'en',
|
|
||||||
lockApp,
|
|
||||||
unlockApp,
|
|
||||||
injectReducer,
|
|
||||||
injectSaga,
|
|
||||||
store,
|
|
||||||
});
|
|
||||||
@ -30,10 +30,26 @@
|
|||||||
"@babel/polyfill": "^7.4.3",
|
"@babel/polyfill": "^7.4.3",
|
||||||
"crypto": "^1.0.1",
|
"crypto": "^1.0.1",
|
||||||
"friendly-errors-webpack-plugin": "^1.7.0",
|
"friendly-errors-webpack-plugin": "^1.7.0",
|
||||||
|
"history": "^4.9.0",
|
||||||
"html-webpack-plugin": "^3.2.0",
|
"html-webpack-plugin": "^3.2.0",
|
||||||
|
"immutable": "^3.8.2",
|
||||||
"intl": "^1.2.5",
|
"intl": "^1.2.5",
|
||||||
|
"prop-types": "^15.7.2",
|
||||||
|
"react": "^16.8.6",
|
||||||
|
"react-copy-to-clipboard": "^5.0.1",
|
||||||
|
"react-dnd": "^7.4.5",
|
||||||
|
"react-dnd-html5-backend": "^7.4.4",
|
||||||
|
"react-dom": "^16.8.6",
|
||||||
"react-ga": "^2.4.1",
|
"react-ga": "^2.4.1",
|
||||||
|
"react-helmet": "^5.2.0",
|
||||||
|
"react-intl": "^2.8.0",
|
||||||
|
"react-redux": "^7.0.1",
|
||||||
|
"react-router": "^5.0.0",
|
||||||
|
"react-router-dom": "^5.0.0",
|
||||||
|
"react-transition-group": "^2.9.0",
|
||||||
"redux": "^4.0.1",
|
"redux": "^4.0.1",
|
||||||
|
"redux-immutable": "^4.0.0",
|
||||||
|
"redux-saga": "^1.0.2",
|
||||||
"remove-markdown": "^0.2.2",
|
"remove-markdown": "^0.2.2",
|
||||||
"shelljs": "^0.7.8",
|
"shelljs": "^0.7.8",
|
||||||
"video-react": "^0.13.2"
|
"video-react": "^0.13.2"
|
||||||
|
|||||||
@ -27,12 +27,21 @@ const PORT = 4000;
|
|||||||
const webpackPlugins = devMode
|
const webpackPlugins = devMode
|
||||||
? [
|
? [
|
||||||
new WebpackDashboard(),
|
new WebpackDashboard(),
|
||||||
new DuplicatePckgChecker(),
|
new DuplicatePckgChecker({
|
||||||
|
verbose: true,
|
||||||
|
exclude(instance) {
|
||||||
|
return instance.name === 'core-js';
|
||||||
|
},
|
||||||
|
}),
|
||||||
new OpenBrowserWebpackPlugin({
|
new OpenBrowserWebpackPlugin({
|
||||||
url: `http://localhost:${PORT}/${URLs.publicPath}`,
|
url: `http://localhost:${PORT}/${URLs.publicPath}`,
|
||||||
}),
|
}),
|
||||||
]
|
]
|
||||||
: [
|
: [
|
||||||
|
new webpack.IgnorePlugin({
|
||||||
|
resourceRegExp: /^\.\/locale$/,
|
||||||
|
contextRegExp: /moment$/,
|
||||||
|
}),
|
||||||
new MiniCssExtractPlugin({
|
new MiniCssExtractPlugin({
|
||||||
// Options similar to the same options in webpackOptions.output
|
// Options similar to the same options in webpackOptions.output
|
||||||
// both options are optional
|
// both options are optional
|
||||||
@ -63,7 +72,7 @@ module.exports = {
|
|||||||
index: URLs.publicPath,
|
index: URLs.publicPath,
|
||||||
},
|
},
|
||||||
port: 4000,
|
port: 4000,
|
||||||
hot: true,
|
// hot: true,
|
||||||
},
|
},
|
||||||
stats: devMode ? 'minimal' : 'errors-only',
|
stats: devMode ? 'minimal' : 'errors-only',
|
||||||
devtool: 'cheap-module-source-map',
|
devtool: 'cheap-module-source-map',
|
||||||
|
|||||||
@ -27,87 +27,31 @@
|
|||||||
"lint:admin"
|
"lint:admin"
|
||||||
],
|
],
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"add-asset-html-webpack-plugin": "^2.1.2",
|
|
||||||
"babel-cli": "6.26.0",
|
|
||||||
"babel-core": "6.26.0",
|
|
||||||
"babel-loader": "7.1.1",
|
|
||||||
"babel-plugin-istanbul": "4.1.5",
|
|
||||||
"babel-plugin-styled-components": "1.5.1",
|
|
||||||
"babel-plugin-transform-es2015-destructuring": "6.23.0",
|
|
||||||
"babel-plugin-transform-es2015-parameters": "6.24.1",
|
|
||||||
"babel-plugin-transform-object-rest-spread": "6.26.0",
|
|
||||||
"babel-plugin-transform-react-constant-elements": "6.23.0",
|
|
||||||
"babel-plugin-transform-react-inline-elements": "6.22.0",
|
|
||||||
"babel-plugin-transform-react-remove-prop-types": "0.4.18",
|
|
||||||
"babel-preset-env": "1.6.1",
|
|
||||||
"babel-preset-react": "6.24.1",
|
|
||||||
"babel-preset-react-hmre": "1.1.1",
|
|
||||||
"babel-preset-stage-0": "6.24.1",
|
|
||||||
"chalk": "^2.1.0",
|
"chalk": "^2.1.0",
|
||||||
"copy-webpack-plugin": "^4.3.1",
|
|
||||||
"css-loader": "^0.28.5",
|
|
||||||
"cross-env": "^5.0.5",
|
"cross-env": "^5.0.5",
|
||||||
"enzyme": "^3.8.0",
|
"enzyme": "^3.8.0",
|
||||||
"enzyme-adapter-react-16": "^1.8.0",
|
"enzyme-adapter-react-16": "^1.8.0",
|
||||||
"enzyme-to-json": "^3.3.5",
|
"enzyme-to-json": "^3.3.5",
|
||||||
"exports-loader": "^0.6.4",
|
|
||||||
"extract-text-webpack-plugin": "^3.0.0",
|
|
||||||
"express": "^4.15.4",
|
"express": "^4.15.4",
|
||||||
"file-loader": "^0.11.2",
|
|
||||||
"html-loader": "^0.5.1",
|
|
||||||
"html-webpack-plugin": "^2.30.1",
|
|
||||||
"image-webpack-loader": "^4.3.1",
|
|
||||||
"lodash-webpack-plugin": "^0.11.4",
|
|
||||||
"node-sass": "^4.5.3",
|
|
||||||
"null-loader": "^0.1.1",
|
|
||||||
"plop": "^2.2.0",
|
"plop": "^2.2.0",
|
||||||
"postcss-cssnext": "^2.11.0",
|
|
||||||
"postcss-focus": "^2.0.0",
|
|
||||||
"postcss-loader": "^2.0.6",
|
|
||||||
"postcss-reporter": "^5.0.0",
|
|
||||||
"postcss-smart-import": "^0.7.5",
|
|
||||||
"precss": "^2.0.0",
|
|
||||||
"prettier": "^1.5.3",
|
"prettier": "^1.5.3",
|
||||||
"react-test-renderer": "^16.7.0",
|
"react-test-renderer": "^16.7.0",
|
||||||
"rimraf": "^2.6.1",
|
"rimraf": "^2.6.1",
|
||||||
"sass-loader": "^6.0.6",
|
"shelljs": "^0.7.8"
|
||||||
"shelljs": "^0.7.8",
|
|
||||||
"style-loader": "^0.18.2",
|
|
||||||
"url-loader": "^1.1.1",
|
|
||||||
"webpack": "^3.5.5",
|
|
||||||
"webpack-bundle-analyzer": "^2.9.0",
|
|
||||||
"webpack-dev-middleware": "^1.12.0",
|
|
||||||
"webpack-hot-middleware": "^2.18.2"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"babel-polyfill": "6.26.0",
|
|
||||||
"bootstrap": "^4.0.0-alpha.6",
|
"bootstrap": "^4.0.0-alpha.6",
|
||||||
"classnames": "^2.2.5",
|
"classnames": "^2.2.5",
|
||||||
"history": "^4.9.0",
|
|
||||||
"immutable": "^3.8.2",
|
|
||||||
"imports-loader": "^0.7.1",
|
"imports-loader": "^0.7.1",
|
||||||
"invariant": "2.2.1",
|
"invariant": "2.2.1",
|
||||||
"json-loader": "^0.5.7",
|
"json-loader": "^0.5.7",
|
||||||
"lodash": "^4.17.5",
|
"lodash": "^4.17.5",
|
||||||
"moment": "^2.16.0",
|
"moment": "^2.16.0",
|
||||||
"prop-types": "^15.5.10",
|
|
||||||
"react": "^16.8.4",
|
|
||||||
"react-copy-to-clipboard": "^5.0.1",
|
|
||||||
"react-datetime": "^2.15.0",
|
"react-datetime": "^2.15.0",
|
||||||
"react-dnd": "^5.0.0",
|
|
||||||
"react-dnd-html5-backend": "^5.0.1",
|
|
||||||
"react-dom": "^16.5.2",
|
|
||||||
"react-helmet": "^5.1.3",
|
|
||||||
"react-intl": "^2.7.0",
|
|
||||||
"react-loadable": "^5.5.0",
|
"react-loadable": "^5.5.0",
|
||||||
"react-redux": "^5.0.7",
|
|
||||||
"react-router-dom": "^4.3.1",
|
|
||||||
"react-router-redux": "^5.0.0-alpha.9",
|
"react-router-redux": "^5.0.0-alpha.9",
|
||||||
"react-transition-group": "^2.5.0",
|
"react-transition-group": "^2.5.0",
|
||||||
"reactstrap": "^5.0.0",
|
"reactstrap": "^5.0.0",
|
||||||
"redux": "^4.0.0",
|
|
||||||
"redux-immutable": "^4.0.0",
|
|
||||||
"redux-saga": "^0.16.0",
|
|
||||||
"reselect": "^3.0.1",
|
"reselect": "^3.0.1",
|
||||||
"styled-components": "^3.2.6",
|
"styled-components": "^3.2.6",
|
||||||
"whatwg-fetch": "^2.0.3"
|
"whatwg-fetch": "^2.0.3"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user