diff --git a/packages/learn/gatsby-browser.js b/packages/learn/gatsby-browser.js
index 20aedba6aa..49da8624f1 100644
--- a/packages/learn/gatsby-browser.js
+++ b/packages/learn/gatsby-browser.js
@@ -1,22 +1,16 @@
import React from 'react';
-import PropTypes from 'prop-types';
import { Provider } from 'react-redux';
-import { ConnectedRouter } from 'react-router-redux';
import { createStore } from './src/redux/store';
-exports.replaceRouterComponent = ({ history }) => {
- const store = createStore(history || {});
+export const wrapRootElement = ({ element }) => {
+ const store = createStore();
- const ConnectedRouterWrapper = ({ children }) => (
+ const ConnectedRootElement = (
- {children}
+ {element}
);
- ConnectedRouterWrapper.displayName = 'ConnectedRouterWrapper';
- ConnectedRouterWrapper.propTypes = {
- children: PropTypes.node
- };
- return ConnectedRouterWrapper;
+ return ConnectedRootElement;
};
diff --git a/packages/learn/gatsby-node.js b/packages/learn/gatsby-node.js
index 76950dc7f5..3bebfd58c6 100644
--- a/packages/learn/gatsby-node.js
+++ b/packages/learn/gatsby-node.js
@@ -1,6 +1,4 @@
require('dotenv').config();
-const path = require('path');
-const CopyWebpackPlugin = require('copy-webpack-plugin');
const { dasherize } = require('./utils');
const { blockNameify } = require('./utils/blockNameify');
@@ -103,71 +101,58 @@ exports.createPages = ({ graphql, actions }) => {
});
};
-const webpack = require('webpack');
const RmServiceWorkerPlugin = require('webpack-remove-serviceworker-plugin');
-const generateBabelConfig = require('gatsby/dist/utils/babel-config');
-exports.modifyWebpackConfig = ({ config, stage }) => {
- const program = {
- directory: __dirname,
- browserslist: ['> 1%', 'last 2 versions', 'IE >= 9']
- };
-
- return generateBabelConfig(program, stage).then(babelConfig => {
- config.removeLoader('js').loader('js', {
- test: /\.jsx?$/,
- /* eslint-disable max-len */
- exclude: modulePath => {
- return (
- /node_modules/.test(modulePath) &&
- !(/(ansi-styles|chalk|strict-uri-encode|react-freecodecamp-search)/).test(
- modulePath
- )
- );
- },
- /* eslint-enable max-len*/
- loader: 'babel',
- query: babelConfig
- });
- config.plugin('CopyWebpackPlugin', CopyWebpackPlugin, [
- [
- {
- from: path.resolve(__dirname, './node_modules/monaco-editor/min/vs'),
- to: 'vs'
+exports.onCreateWebpackConfig = ({ rules, plugins, actions }) => {
+ actions.setWebpackConfig({
+ module: {
+ rules: [rules.js({
+ /* eslint-disable max-len */
+ exclude: modulePath => {
+ return (
+ /node_modules/.test(modulePath) &&
+ !(/(ansi-styles|chalk|strict-uri-encode|react-freecodecamp-search)/).test(
+ modulePath
+ )
+ );
}
+ /* eslint-enable max-len*/
+ })
]
- ]);
- config.plugin('DefinePlugin', webpack.DefinePlugin, [
- {
+ },
+ node: {
+ fs: 'empty'
+ },
+ plugins: [
+ plugins.define({
HOME_PATH: JSON.stringify(
process.env.HOME_PATH || 'http://localhost:3000'
),
- STRIPE_PUBLIC_KEY: JSON.stringify(process.env.STRIPE_PULIC_KEY || '')
- }
- ]);
- config.plugin('RemoveServiceWorkerPlugin', RmServiceWorkerPlugin, [
- { filename: 'sw.js' }
- ]);
+ STRIPE_PUBLIC_KEY: JSON.stringify(process.env.STRIPE_PUBLIC_KEY || '')
+ }),
+ new RmServiceWorkerPlugin()
+ ]
});
};
-/* eslint-disable prefer-object-spread/prefer-object-spread */
-exports.modifyBabelrc = ({ babelrc }) =>
- Object.assign({}, babelrc, {
- plugins: babelrc.plugins.concat([
- [
- 'transform-es2015-arrow-functions',
- 'transform-imports',
- 'transform-function-bind',
- {
- 'react-bootstrap': {
- transform: 'react-bootstrap/lib/${member}',
- preventFullImport: true
- },
- lodash: {
- transform: 'lodash/${member}',
- preventFullImport: true
- }
- }
- ]
- ])
+
+exports.onCreateBabelConfig = ({ actions }) => {
+ actions.setBabelPlugin({
+ name: '@babel/plugin-proposal-function-bind'
});
+ actions.setBabelPlugin({
+ name: '@babel/plugin-proposal-export-default-from'
+ });
+ actions.setBabelPlugin({
+ name: 'babel-plugin-transform-imports',
+ options: {
+ 'react-bootstrap': {
+ transform: 'react-bootstrap/lib/${member}',
+ preventFullImport: true
+ },
+ lodash: {
+ transform: 'lodash/${member}',
+ preventFullImport: true
+ }
+ }
+ });
+};
diff --git a/packages/learn/gatsby-ssr.js b/packages/learn/gatsby-ssr.js
index 037f648804..587bc21679 100644
--- a/packages/learn/gatsby-ssr.js
+++ b/packages/learn/gatsby-ssr.js
@@ -6,7 +6,7 @@ import headComponents from './src/head';
import { createStore } from './src/redux/store';
-exports.replaceRenderer = ({
+export const replaceRenderer = ({
history,
bodyComponent,
replaceBodyHTMLString
@@ -19,7 +19,7 @@ exports.replaceRenderer = ({
replaceBodyHTMLString(renderToString());
};
-exports.onRenderBody = ({ setHeadComponents, setPostBodyComponents }) => {
+export const onRenderBody = ({ setHeadComponents, setPostBodyComponents }) => {
setHeadComponents([...headComponents]);
setPostBodyComponents([