From f45395314333ab470ff9b96aa3a9ba95d417e74a Mon Sep 17 00:00:00 2001 From: Matthew Leffler Date: Tue, 13 Jun 2017 16:38:29 -0600 Subject: [PATCH 1/5] Use awesome-typescript-loader for Babel support --- package.json | 1 + packages/react-scripts/config/paths.js | 3 +++ packages/react-scripts/config/webpack.config.dev.js | 6 +++++- packages/react-scripts/config/webpack.config.prod.js | 6 +++++- packages/react-scripts/package.json | 6 ++++-- packages/react-scripts/template/tsconfig.json | 1 + 6 files changed, 19 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 94db5f918..9e477609c 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "@types/node": "^7.0.21", "@types/react": "^15.0.24", "@types/react-dom": "^15.5.0", + "babel-core": "^6.24.1", "eslint": "3.19.0", "husky": "^0.13.2", "lerna": "2.0.0-beta.38", diff --git a/packages/react-scripts/config/paths.js b/packages/react-scripts/config/paths.js index cb125d207..b8ff94fb7 100644 --- a/packages/react-scripts/config/paths.js +++ b/packages/react-scripts/config/paths.js @@ -56,6 +56,7 @@ module.exports = { appHtml: resolveApp('public/index.html'), appIndexJs: resolveApp('src/index.tsx'), appPackageJson: resolveApp('package.json'), + appTsConfig: resolveApp('tsconfig.json'), appSrc: resolveApp('src'), yarnLockFile: resolveApp('yarn.lock'), testsSetup: resolveApp('src/setupTests.ts'), @@ -76,6 +77,7 @@ module.exports = { appHtml: resolveApp('public/index.html'), appIndexJs: resolveApp('src/index.tsx'), appPackageJson: resolveApp('package.json'), + appTsConfig: resolveApp('tsconfig.json'), appSrc: resolveApp('src'), yarnLockFile: resolveApp('yarn.lock'), testsSetup: resolveApp('src/setupTests.ts'), @@ -105,6 +107,7 @@ if ( appHtml: resolveOwn('template/public/index.html'), appIndexJs: resolveOwn('template/src/index.tsx'), appPackageJson: resolveOwn('package.json'), + appTsConfig: resolveOwn('tsconfig.json'), appSrc: resolveOwn('template/src'), yarnLockFile: resolveOwn('template/yarn.lock'), testsSetup: resolveOwn('template/src/setupTests.ts'), diff --git a/packages/react-scripts/config/webpack.config.dev.js b/packages/react-scripts/config/webpack.config.dev.js index 2eed1e04e..01f59fe95 100644 --- a/packages/react-scripts/config/webpack.config.dev.js +++ b/packages/react-scripts/config/webpack.config.dev.js @@ -185,7 +185,11 @@ module.exports = { { test: /\.(ts|tsx)$/, include: paths.appSrc, - loader: require.resolve('ts-loader'), + loader: require.resolve('awesome-typescript-loader'), + query: { + useBabel: true, + configFileName: paths.appTsConfig, + }, }, // "postcss" loader applies autoprefixer to our CSS. // "css" loader resolves paths in CSS and adds assets as dependencies. diff --git a/packages/react-scripts/config/webpack.config.prod.js b/packages/react-scripts/config/webpack.config.prod.js index b710f480e..c064eebd2 100644 --- a/packages/react-scripts/config/webpack.config.prod.js +++ b/packages/react-scripts/config/webpack.config.prod.js @@ -175,7 +175,11 @@ module.exports = { { test: /\.(ts|tsx)$/, include: paths.appSrc, - loader: require.resolve('ts-loader'), + loader: require.resolve('awesome-typescript-loader'), + query: { + useBabel: true, + configFileName: paths.appTsConfig, + }, }, // The notation here is somewhat confusing. // "postcss" loader applies autoprefixer to our CSS. diff --git a/packages/react-scripts/package.json b/packages/react-scripts/package.json index c07d29388..f08df6214 100644 --- a/packages/react-scripts/package.json +++ b/packages/react-scripts/package.json @@ -22,8 +22,9 @@ "react-scripts-ts": "./bin/react-scripts-ts.js" }, "dependencies": { - "autoprefixer": "7.1.0", "app-root-path": "^2.0.1", + "autoprefixer": "7.1.0", + "awesome-typescript-loader": "^3.1.3", "case-sensitive-paths-webpack-plugin": "2.0.0", "chalk": "1.1.3", "cli-highlight": "1.1.4", @@ -38,10 +39,11 @@ "postcss-flexbugs-fixes": "3.0.0", "postcss-loader": "2.0.5", "promise": "7.1.1", + "source-map-loader": "^0.2.1", "react-dev-utils": "^2.0.1", "react-error-overlay": "^1.0.6", "style-loader": "0.17.0", - "ts-loader": "^2.0.3", + "sw-precache-webpack-plugin": "0.9.1", "tslint": "^5.2.0", "tslint-loader": "^3.5.3", "tslint-react": "^3.0.0", diff --git a/packages/react-scripts/template/tsconfig.json b/packages/react-scripts/template/tsconfig.json index d4627d98a..d98b3ff99 100644 --- a/packages/react-scripts/template/tsconfig.json +++ b/packages/react-scripts/template/tsconfig.json @@ -20,6 +20,7 @@ "exclude": [ "node_modules", "build", + "config", "scripts", "acceptance-tests", "webpack", From 83664c11fe7dfb98f840e2fa0c002c068fc8483d Mon Sep 17 00:00:00 2001 From: Matthew Leffler Date: Mon, 3 Jul 2017 18:02:06 -0600 Subject: [PATCH 2/5] Use typescript-babel-jest for Jest + Relay support --- package.json | 3 ++- packages/react-scripts/scripts/utils/createJestConfig.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 9e477609c..391fa52d8 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,8 @@ "lerna": "2.0.0-beta.38", "lerna-changelog": "^0.2.3", "lint-staged": "^3.3.1", - "prettier": "^0.21.0" + "prettier": "^0.21.0", + "typescript-babel-jest": "^1.0.4" }, "lint-staged": { "*.js": [ diff --git a/packages/react-scripts/scripts/utils/createJestConfig.js b/packages/react-scripts/scripts/utils/createJestConfig.js index aca7188ed..87b56e459 100644 --- a/packages/react-scripts/scripts/utils/createJestConfig.js +++ b/packages/react-scripts/scripts/utils/createJestConfig.js @@ -35,7 +35,7 @@ module.exports = (resolve, rootDir) => { testURL: 'http://localhost', transform: { '^.+\\.css$': resolve('config/jest/cssTransform.js'), - '^.+\\.tsx?$': resolve('config/jest/typescriptTransform.js'), + '^.+\\.tsx?$': 'typescript-babel-jest', '^(?!.*\\.(css|json)$)': resolve('config/jest/fileTransform.js'), }, transformIgnorePatterns: [ From c1e70609a0b67bcb5aadfdce6272b069cfd8d1d5 Mon Sep 17 00:00:00 2001 From: Matthew Leffler Date: Mon, 21 Aug 2017 18:27:52 -0600 Subject: [PATCH 3/5] Add explicit loader-utils dependency to fix error: ./src/index.tsx Module build failed: TypeError: loaderUtils.getOptions is not a function --- packages/react-scripts/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/react-scripts/package.json b/packages/react-scripts/package.json index c10e222d4..8289cebae 100644 --- a/packages/react-scripts/package.json +++ b/packages/react-scripts/package.json @@ -35,6 +35,7 @@ "fs-extra": "3.0.1", "html-webpack-plugin": "2.28.0", "jest": "20.0.3", + "loader-utils": ">=1.0.0", "object-assign": "4.1.1", "postcss-flexbugs-fixes": "3.0.0", "postcss-loader": "2.0.5", From 4832ae257fcfdf51bf016dbbb76a95a24998f920 Mon Sep 17 00:00:00 2001 From: Matthew Leffler Date: Mon, 25 Sep 2017 16:37:54 -0600 Subject: [PATCH 4/5] =?UTF-8?q?Don=E2=80=99t=20pin=20to=20specific=20webpa?= =?UTF-8?q?ck=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 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 cc735e5d5..151bcdd71 100644 --- a/packages/react-scripts/package.json +++ b/packages/react-scripts/package.json @@ -47,7 +47,7 @@ "source-map-loader": "^0.2.1", "sw-precache-webpack-plugin": "0.11.4", "url-loader": "0.5.9", - "webpack": "3.5.1", + "webpack": "^3.5.1", "webpack-dev-server": "2.7.1", "webpack-manifest-plugin": "1.2.1", "whatwg-fetch": "2.0.3" From 5349ba563cb5ef1de648c8da6c53020d9952ad4c Mon Sep 17 00:00:00 2001 From: Matthew Leffler Date: Thu, 28 Dec 2017 12:12:36 -0700 Subject: [PATCH 5/5] Use React 16.2 + Typescript 2.6.2 for fragments --- packages/react-scripts/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/react-scripts/package.json b/packages/react-scripts/package.json index 151bcdd71..ca5649a3e 100644 --- a/packages/react-scripts/package.json +++ b/packages/react-scripts/package.json @@ -43,7 +43,7 @@ "tslint": "^5.2.0", "tslint-loader": "^3.5.3", "tslint-react": "^3.0.0", - "typescript": "~2.4.0", + "typescript": ">=2.6.2", "source-map-loader": "^0.2.1", "sw-precache-webpack-plugin": "0.11.4", "url-loader": "0.5.9", @@ -53,8 +53,8 @@ "whatwg-fetch": "2.0.3" }, "devDependencies": { - "react": "^15.5.4", - "react-dom": "^15.5.4" + "react": ">=16.0.0", + "react-dom": ">=16.0.0" }, "optionalDependencies": { "fsevents": "1.1.2"