From 538c21a6755e8115c4d37fc9d4708383c5243502 Mon Sep 17 00:00:00 2001 From: subk Date: Tue, 23 May 2017 11:44:54 +0200 Subject: [PATCH 1/6] update to 1.0.5 --- packages/babel-preset-react-app/index.js | 7 +++ packages/babel-preset-react-app/package.json | 7 ++- packages/react-error-overlay/package.json | 2 +- .../config/jest/babelTransform.js | 2 +- .../config/webpack.config.dev.js | 36 ++++++++++++++- .../config/webpack.config.prod.js | 46 ++++++++++++++++++- packages/react-scripts/package.json | 4 +- 7 files changed, 96 insertions(+), 8 deletions(-) diff --git a/packages/babel-preset-react-app/index.js b/packages/babel-preset-react-app/index.js index c8f20dde61d..11010958a9e 100644 --- a/packages/babel-preset-react-app/index.js +++ b/packages/babel-preset-react-app/index.js @@ -9,6 +9,13 @@ 'use strict'; const plugins = [ + // enable relay + require.resolve('babel-plugin-react-relay'), + // enable export extension experimental feature + require.resolve('babel-plugin-transform-export-extensions'), + // load decorators before class plugin + require.resolve('babel-plugin-transform-decorators-legacy'), + // class { handleClick = () => { } } require.resolve('babel-plugin-transform-class-properties'), // The following two plugins use Object.assign directly, instead of Babel's diff --git a/packages/babel-preset-react-app/package.json b/packages/babel-preset-react-app/package.json index 175b7b1297f..224bc5be84b 100644 --- a/packages/babel-preset-react-app/package.json +++ b/packages/babel-preset-react-app/package.json @@ -1,6 +1,6 @@ { - "name": "babel-preset-react-app", - "version": "3.0.0", + "name": "@timelab/babel-preset-react-app", + "version": "3.1.0", "description": "Babel preset used by Create React App", "repository": "facebookincubator/create-react-app", "license": "BSD-3-Clause", @@ -12,8 +12,11 @@ ], "dependencies": { "babel-plugin-dynamic-import-node": "1.0.2", + "babel-plugin-react-relay": "^0.10.0", "babel-plugin-syntax-dynamic-import": "6.18.0", "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-decorators-legacy": "^1.3.4", + "babel-plugin-transform-export-extensions": "^6.22.0", "babel-plugin-transform-object-rest-spread": "6.23.0", "babel-plugin-transform-react-constant-elements": "6.23.0", "babel-plugin-transform-react-jsx": "6.24.1", diff --git a/packages/react-error-overlay/package.json b/packages/react-error-overlay/package.json index 890dda43bcb..7e02e6f74ac 100644 --- a/packages/react-error-overlay/package.json +++ b/packages/react-error-overlay/package.json @@ -41,7 +41,7 @@ "devDependencies": { "babel-cli": "6.24.1", "babel-eslint": "7.2.3", - "babel-preset-react-app": "^3.0.0", + "@timelab/babel-preset-react-app": "^3.1.0", "cross-env": "5.0.0", "eslint": "3.19.0", "eslint-config-react-app": "^1.0.3", diff --git a/packages/react-scripts/config/jest/babelTransform.js b/packages/react-scripts/config/jest/babelTransform.js index bee55b1b156..3005e62c09d 100644 --- a/packages/react-scripts/config/jest/babelTransform.js +++ b/packages/react-scripts/config/jest/babelTransform.js @@ -11,6 +11,6 @@ const babelJest = require('babel-jest'); module.exports = babelJest.createTransformer({ - presets: [require.resolve('babel-preset-react-app')], + presets: [require.resolve('@timelab/babel-preset-react-app')], babelrc: false, }); diff --git a/packages/react-scripts/config/webpack.config.dev.js b/packages/react-scripts/config/webpack.config.dev.js index adf92f5b124..7b92043d5e7 100644 --- a/packages/react-scripts/config/webpack.config.dev.js +++ b/packages/react-scripts/config/webpack.config.dev.js @@ -166,6 +166,7 @@ module.exports = { /\.gif$/, /\.jpe?g$/, /\.png$/, + /\.(scss|sass)$/, ], loader: require.resolve('file-loader'), options: { @@ -191,7 +192,7 @@ module.exports = { options: { // @remove-on-eject-begin babelrc: false, - presets: [require.resolve('babel-preset-react-app')], + presets: [require.resolve('@timelab/babel-preset-react-app')], // @remove-on-eject-end // This is a feature of `babel-loader` for webpack (not Babel itself). // It enables caching results in ./node_modules/.cache/babel-loader/ @@ -236,6 +237,39 @@ module.exports = { }, // ** STOP ** Are you adding a new loader? // Remember to add the new extension(s) to the "file" loader exclusion list. + { + test: /(\.scss|\.sass)$/, + use: [ + require.resolve('style-loader'), + { + loader: require.resolve('css-loader'), + options: { + importLoaders: 1, + }, + }, + { + loader: require.resolve('postcss-loader'), + options: { + ident: 'postcss', // https://webpack.js.org/guides/migrating/#complex-options + plugins: () => [ + require('postcss-flexbugs-fixes'), + autoprefixer({ + browsers: [ + '>1%', + 'last 4 versions', + 'Firefox ESR', + 'not ie < 9', // React doesn't support IE8 anyway + ], + flexbox: 'no-2009', + }), + ], + }, + }, + { + loader: require.resolve('sass-loader') + } + ] + }, ], }, plugins: [ diff --git a/packages/react-scripts/config/webpack.config.prod.js b/packages/react-scripts/config/webpack.config.prod.js index 3de2775e030..8dc4070b069 100644 --- a/packages/react-scripts/config/webpack.config.prod.js +++ b/packages/react-scripts/config/webpack.config.prod.js @@ -165,6 +165,7 @@ module.exports = { /\.gif$/, /\.jpe?g$/, /\.png$/, + /\.(scss|sass)$/, ], loader: require.resolve('file-loader'), options: { @@ -189,7 +190,7 @@ module.exports = { // @remove-on-eject-begin options: { babelrc: false, - presets: [require.resolve('babel-preset-react-app')], + presets: [require.resolve('@timelab/babel-preset-react-app')], }, // @remove-on-eject-end }, @@ -247,6 +248,49 @@ module.exports = { }, // ** STOP ** Are you adding a new loader? // Remember to add the new extension(s) to the "file" loader exclusion list. + { + test: /(\.scss|\.sass)$/, + loader: ExtractTextPlugin.extract( + Object.assign( + { + fallback: require.resolve('style-loader'), + use: [ + { + loader: require.resolve('css-loader'), + options: { + importLoaders: 1, + minimize: true, + sourceMap: true, + }, + }, + { + loader: require.resolve('postcss-loader'), + options: { + ident: 'postcss', // https://webpack.js.org/guides/migrating/#complex-options + plugins: () => [ + require('postcss-flexbugs-fixes'), + autoprefixer({ + browsers: [ + '>1%', + 'last 4 versions', + 'Firefox ESR', + 'not ie < 9', // React doesn't support IE8 anyway + ], + flexbox: 'no-2009', + }), + ], + }, + }, + { + loader: require.resolve('sass-loader') + } + ], + }, + extractTextPluginOptions + ) + ), + // Note: this won't work without `new ExtractTextPlugin()` in `plugins`. + }, ], }, plugins: [ diff --git a/packages/react-scripts/package.json b/packages/react-scripts/package.json index 06b0d6b76c4..a5e8dd687e3 100644 --- a/packages/react-scripts/package.json +++ b/packages/react-scripts/package.json @@ -1,5 +1,5 @@ { - "name": "react-scripts", + "name": "@timelab/react-scripts", "version": "1.0.5", "description": "Configuration and scripts for Create React App.", "repository": "facebookincubator/create-react-app", @@ -26,7 +26,7 @@ "babel-eslint": "7.2.3", "babel-jest": "20.0.3", "babel-loader": "7.0.0", - "babel-preset-react-app": "^3.0.0", + "@timelab/babel-preset-react-app": "^3.1.0", "babel-runtime": "6.23.0", "case-sensitive-paths-webpack-plugin": "1.1.4", "chalk": "1.1.3", From 9a7cffa86222f90d51078a29b2532bb8fc7efddd Mon Sep 17 00:00:00 2001 From: subk Date: Tue, 23 May 2017 11:52:13 +0200 Subject: [PATCH 2/6] add missing sass deps --- packages/react-scripts/package.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/react-scripts/package.json b/packages/react-scripts/package.json index a5e8dd687e3..815b582e9db 100644 --- a/packages/react-scripts/package.json +++ b/packages/react-scripts/package.json @@ -1,6 +1,6 @@ { "name": "@timelab/react-scripts", - "version": "1.0.5", + "version": "1.0.5-marty", "description": "Configuration and scripts for Create React App.", "repository": "facebookincubator/create-react-app", "license": "BSD-3-Clause", @@ -21,12 +21,12 @@ "react-scripts": "./bin/react-scripts.js" }, "dependencies": { + "@timelab/babel-preset-react-app": "^3.1.0", "autoprefixer": "7.1.0", "babel-core": "6.24.1", "babel-eslint": "7.2.3", "babel-jest": "20.0.3", "babel-loader": "7.0.0", - "@timelab/babel-preset-react-app": "^3.1.0", "babel-runtime": "6.23.0", "case-sensitive-paths-webpack-plugin": "1.1.4", "chalk": "1.1.3", @@ -44,12 +44,14 @@ "fs-extra": "3.0.1", "html-webpack-plugin": "2.28.0", "jest": "20.0.3", + "node-sass": "^4.5.3", "object-assign": "4.1.1", "postcss-flexbugs-fixes": "3.0.0", "postcss-loader": "2.0.5", "promise": "7.1.1", "react-dev-utils": "^2.0.0", "react-error-overlay": "^1.0.5", + "sass-loader": "^6.0.5", "style-loader": "0.17.0", "sw-precache-webpack-plugin": "0.9.1", "url-loader": "0.5.8", From 73488e3b1e71caa9fdf32f7175d8324ab04835bc Mon Sep 17 00:00:00 2001 From: subk Date: Wed, 24 May 2017 15:03:38 +0200 Subject: [PATCH 3/6] add missing sass deps --- packages/react-scripts/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-scripts/package.json b/packages/react-scripts/package.json index 815b582e9db..ae411968d35 100644 --- a/packages/react-scripts/package.json +++ b/packages/react-scripts/package.json @@ -1,6 +1,6 @@ { "name": "@timelab/react-scripts", - "version": "1.0.5-marty", + "version": "1.0.6", "description": "Configuration and scripts for Create React App.", "repository": "facebookincubator/create-react-app", "license": "BSD-3-Clause", From b998142976eb2534249597a194153ac00cfbf6f0 Mon Sep 17 00:00:00 2001 From: subk Date: Fri, 26 May 2017 15:57:20 +0200 Subject: [PATCH 4/6] ignore ajv to avoid warning --- packages/react-scripts/config/webpack.config.dev.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/react-scripts/config/webpack.config.dev.js b/packages/react-scripts/config/webpack.config.dev.js index 7b92043d5e7..d28ac712156 100644 --- a/packages/react-scripts/config/webpack.config.dev.js +++ b/packages/react-scripts/config/webpack.config.dev.js @@ -303,6 +303,8 @@ module.exports = { // https://github.com/jmblog/how-to-optimize-momentjs-with-webpack // You can remove this if you don't use Moment.js: new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), + // remove ajv warning + new webpack.IgnorePlugin(/regenerator|nodent|js\-beautify/, /ajv/), ], // Some libraries import Node modules but don't use them in the browser. // Tell Webpack to provide empty mocks for them so importing them works. From aaf72cddded0e06704ff41095a3d67235e15ac8d Mon Sep 17 00:00:00 2001 From: subk Date: Fri, 26 May 2017 15:57:41 +0200 Subject: [PATCH 5/6] bump 1.0.6-1 to suppress ajv warning --- packages/react-scripts/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-scripts/package.json b/packages/react-scripts/package.json index 6ab7d06ee75..825b2b56267 100644 --- a/packages/react-scripts/package.json +++ b/packages/react-scripts/package.json @@ -1,6 +1,6 @@ { "name": "@timelab/react-scripts", - "version": "1.0.6-marty", + "version": "1.0.6-1", "description": "Configuration and scripts for Create React App.", "repository": "facebookincubator/create-react-app", "license": "BSD-3-Clause", From 820f4d7649355fb048d4ea5121f767dfad147fe5 Mon Sep 17 00:00:00 2001 From: Tristan Date: Wed, 7 Jun 2017 16:30:49 +0200 Subject: [PATCH 6/6] add & config plugin babel-plugin-relay --- packages/babel-preset-react-app/index.js | 29 ++++++++++++++++++-- packages/babel-preset-react-app/package.json | 4 +-- packages/react-scripts/package.json | 4 +-- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/packages/babel-preset-react-app/index.js b/packages/babel-preset-react-app/index.js index 11010958a9e..d68a7941204 100644 --- a/packages/babel-preset-react-app/index.js +++ b/packages/babel-preset-react-app/index.js @@ -8,9 +8,34 @@ */ 'use strict'; +const { join } = require('path'); +const { existsSync } = require('fs'); + +const path = join( + __dirname, + '..', + '..', + '..', + 'resources', + 'graphql', + 'schema.json' +); + +if (!existsSync(path)) { + throw new Error( + 'Your graphql schema must be in ./resources/graphql/schema.json' + ); +} + const plugins = [ - // enable relay - require.resolve('babel-plugin-react-relay'), + // Support for Relay modern. + [ + require.resolve('babel-plugin-relay'), + { + compat: true, + schema: path, + }, + ], // enable export extension experimental feature require.resolve('babel-plugin-transform-export-extensions'), // load decorators before class plugin diff --git a/packages/babel-preset-react-app/package.json b/packages/babel-preset-react-app/package.json index 224bc5be84b..23dd1544a33 100644 --- a/packages/babel-preset-react-app/package.json +++ b/packages/babel-preset-react-app/package.json @@ -1,6 +1,6 @@ { "name": "@timelab/babel-preset-react-app", - "version": "3.1.0", + "version": "3.1.2", "description": "Babel preset used by Create React App", "repository": "facebookincubator/create-react-app", "license": "BSD-3-Clause", @@ -12,7 +12,7 @@ ], "dependencies": { "babel-plugin-dynamic-import-node": "1.0.2", - "babel-plugin-react-relay": "^0.10.0", + "babel-plugin-relay": "^1.0.1", "babel-plugin-syntax-dynamic-import": "6.18.0", "babel-plugin-transform-class-properties": "6.24.1", "babel-plugin-transform-decorators-legacy": "^1.3.4", diff --git a/packages/react-scripts/package.json b/packages/react-scripts/package.json index ed92a1fd5d2..546ce191568 100644 --- a/packages/react-scripts/package.json +++ b/packages/react-scripts/package.json @@ -1,6 +1,6 @@ { "name": "@timelab/react-scripts", - "version": "1.0.7", + "version": "1.0.9", "description": "Configuration and scripts for Create React App.", "repository": "facebookincubator/create-react-app", "license": "BSD-3-Clause", @@ -21,7 +21,7 @@ "react-scripts": "./bin/react-scripts.js" }, "dependencies": { - "@timelab/babel-preset-react-app": "^3.1.0", + "@timelab/babel-preset-react-app": "^3.1.2", "autoprefixer": "7.1.0", "babel-core": "6.24.1", "babel-eslint": "7.2.3",