diff --git a/.travis.yml b/.travis.yml index d5fdc156413..846a8143750 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,5 +31,5 @@ matrix: - os: osx node_js: 8 env: TEST_SUITE=behavior - - node_js: 4 + - node_js: 6 env: TEST_SUITE=old-node diff --git a/packages/react-scripts/config/webpack.config.dev.js b/packages/react-scripts/config/webpack.config.dev.js index fe628e912ab..9cc6859c971 100644 --- a/packages/react-scripts/config/webpack.config.dev.js +++ b/packages/react-scripts/config/webpack.config.dev.js @@ -144,7 +144,7 @@ module.exports = { // https://github.com/facebook/create-react-app/issues/290 // `web` extension prefixes have been added for better support // for React Native Web. - extensions: ['.web.js', '.js', '.json', '.web.jsx', '.jsx'], + extensions: ['.mjs', '.web.js', '.js', '.json', '.web.jsx', '.jsx'], alias: { // Support React Native Web // https://www.smashingmagazine.com/2016/08/a-glimpse-into-the-future-with-react-native-for-web/ @@ -178,7 +178,7 @@ module.exports = { // First, run the linter. // It's important to do this before Babel processes the JS. { - test: /\.(js|jsx)$/, + test: /\.(js|mjs|jsx)$/, enforce: 'pre', use: [ { @@ -199,16 +199,6 @@ module.exports = { ], include: paths.appSrc, }, - { - // `mjs` support is still in its infancy in the ecosystem, so we don't - // support it. - // Modules who define their `browser` or `module` key as `mjs` force - // the use of this extension, so we need to tell webpack to fall back - // to auto mode (ES Module interop, allows ESM to import CommonJS). - test: /\.mjs$/, - include: /node_modules/, - type: 'javascript/auto', - }, { // "oneOf" will traverse all following loaders until one will // match the requirements. When no loader matches it will fall @@ -228,7 +218,7 @@ module.exports = { // Process application JS with Babel. // The preset includes JSX, Flow, and some ESnext features. { - test: /\.(js|jsx)$/, + test: /\.(js|mjs|jsx)$/, include: paths.appSrc, loader: require.resolve('babel-loader'), options: { @@ -274,7 +264,7 @@ module.exports = { // Process any JS outside of the app with Babel. // Unlike the application JS, we only compile the standard ES features. { - test: /\.js$/, + test: /\.(js|mjs)$/, exclude: /@babel(?:\/|\\{1,2})runtime/, loader: require.resolve('babel-loader'), options: { @@ -361,7 +351,7 @@ module.exports = { // its runtime that would otherwise be processed through "file" loader. // Also exclude `html` and `json` extensions so they get processed // by webpacks internal loaders. - exclude: [/\.(js|jsx)$/, /\.html$/, /\.json$/], + exclude: [/\.(js|mjs|jsx)$/, /\.html$/, /\.json$/], loader: require.resolve('file-loader'), options: { name: 'static/media/[name].[hash:8].[ext]', diff --git a/packages/react-scripts/config/webpack.config.prod.js b/packages/react-scripts/config/webpack.config.prod.js index ef4bc311d58..9dd2ef9fbe7 100644 --- a/packages/react-scripts/config/webpack.config.prod.js +++ b/packages/react-scripts/config/webpack.config.prod.js @@ -210,7 +210,7 @@ module.exports = { // https://github.com/facebook/create-react-app/issues/290 // `web` extension prefixes have been added for better support // for React Native Web. - extensions: ['.web.js', '.js', '.json', '.web.jsx', '.jsx'], + extensions: ['.mjs', '.web.js', '.js', '.json', '.web.jsx', '.jsx'], alias: { // Support React Native Web // https://www.smashingmagazine.com/2016/08/a-glimpse-into-the-future-with-react-native-for-web/ @@ -244,7 +244,7 @@ module.exports = { // First, run the linter. // It's important to do this before Babel processes the JS. { - test: /\.(js|jsx)$/, + test: /\.(js|mjs|jsx)$/, enforce: 'pre', use: [ { @@ -267,16 +267,6 @@ module.exports = { ], include: paths.appSrc, }, - { - // `mjs` support is still in its infancy in the ecosystem, so we don't - // support it. - // Modules who define their `browser` or `module` key as `mjs` force - // the use of this extension, so we need to tell webpack to fall back - // to auto mode (ES Module interop, allows ESM to import CommonJS). - test: /\.mjs$/, - include: /node_modules/, - type: 'javascript/auto', - }, { // "oneOf" will traverse all following loaders until one will // match the requirements. When no loader matches it will fall @@ -295,7 +285,7 @@ module.exports = { // Process application JS with Babel. // The preset includes JSX, Flow, and some ESnext features. { - test: /\.(js|jsx)$/, + test: /\.(js|mjs|jsx)$/, include: paths.appSrc, loader: require.resolve('babel-loader'), @@ -340,7 +330,7 @@ module.exports = { // Process any JS outside of the app with Babel. // Unlike the application JS, we only compile the standard ES features. { - test: /\.js$/, + test: /\.(js|mjs)$/, exclude: /@babel(?:\/|\\{1,2})runtime/, loader: require.resolve('babel-loader'), options: { @@ -445,7 +435,7 @@ module.exports = { // it's runtime that would otherwise be processed through "file" loader. // Also exclude `html` and `json` extensions so they get processed // by webpacks internal loaders. - exclude: [/\.(js|jsx)$/, /\.html$/, /\.json$/], + exclude: [/\.(js|mjs|jsx)$/, /\.html$/, /\.json$/], options: { name: 'static/media/[name].[hash:8].[ext]', },