babel pipeline

Summary: adding babel transpile pipeline for TypeScript files

Reviewed By: jknoxville

Differential Revision: D16651124

fbshipit-source-id: e9215ba2da467f58005271916b65d6da4f6e36b7
This commit is contained in:
Daniel Büchele
2019-08-06 02:46:35 -07:00
committed by Facebook Github Bot
parent 262b1fd4a9
commit 80b2929992
3 changed files with 29 additions and 16 deletions

View File

@@ -12,6 +12,7 @@
"@babel/plugin-proposal-optional-chaining": "^7.2.0", "@babel/plugin-proposal-optional-chaining": "^7.2.0",
"@babel/plugin-transform-flow-strip-types": "^7.4.0", "@babel/plugin-transform-flow-strip-types": "^7.4.0",
"@babel/plugin-transform-modules-commonjs": "^7.4.0", "@babel/plugin-transform-modules-commonjs": "^7.4.0",
"@babel/plugin-transform-typescript": "^7.5.5",
"@babel/preset-react": "^7.0.0", "@babel/preset-react": "^7.0.0",
"expand-tilde": "^2.0.2", "expand-tilde": "^2.0.2",
"fix-path": "^2.1.0", "fix-path": "^2.1.0",

View File

@@ -15,10 +15,13 @@ function transform({filename, options, src}) {
const presets = [require('../node_modules/@babel/preset-react')]; const presets = [require('../node_modules/@babel/preset-react')];
const isPlugin = const isPlugin =
options.projectRoot && !__dirname.startsWith(options.projectRoot); options.projectRoot && !__dirname.startsWith(options.projectRoot);
const isTypeScript = filename.endsWith('.tsx');
let ast = babylon.parse(src, { let ast = babylon.parse(src, {
filename, filename,
plugins: [ plugins: isTypeScript
? ['jsx', 'typescript', 'classProperties']
: [
'jsx', 'jsx',
['flow', {all: true}], ['flow', {all: true}],
'classProperties', 'classProperties',
@@ -29,14 +32,23 @@ function transform({filename, options, src}) {
}); });
// run babel // run babel
const plugins = [ const plugins = [];
if (!isTypeScript) {
plugins.push(
require('../node_modules/@babel/plugin-transform-modules-commonjs'), require('../node_modules/@babel/plugin-transform-modules-commonjs'),
require('../node_modules/@babel/plugin-proposal-object-rest-spread'), require('../node_modules/@babel/plugin-proposal-object-rest-spread'),
require('../node_modules/@babel/plugin-proposal-class-properties'), require('../node_modules/@babel/plugin-proposal-class-properties'),
require('../node_modules/@babel/plugin-transform-flow-strip-types'), require('../node_modules/@babel/plugin-transform-flow-strip-types'),
require('../node_modules/@babel/plugin-proposal-optional-chaining'), require('../node_modules/@babel/plugin-proposal-optional-chaining'),
require('./dynamic-requires.js'), require('./dynamic-requires.js'),
]; );
} else {
plugins.push(
require('../node_modules/@babel/plugin-transform-typescript'),
require('../node_modules/@babel/plugin-transform-modules-commonjs'),
);
}
if ( if (
fs.existsSync( fs.existsSync(

View File

@@ -587,7 +587,7 @@
"@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-annotate-as-pure" "^7.0.0"
"@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-transform-typescript@^7.0.0": "@babel/plugin-transform-typescript@^7.0.0", "@babel/plugin-transform-typescript@^7.5.5":
version "7.5.5" version "7.5.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.5.5.tgz#6d862766f09b2da1cb1f7d505fe2aedab6b7d4b8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.5.5.tgz#6d862766f09b2da1cb1f7d505fe2aedab6b7d4b8"
integrity sha512-pehKf4m640myZu5B2ZviLaiBlxMCjSZ1qTEO459AXKX5GnPueyulJeCqZFs1nz/Ya2dDzXQ1NxZ/kKNWyD4h6w== integrity sha512-pehKf4m640myZu5B2ZviLaiBlxMCjSZ1qTEO459AXKX5GnPueyulJeCqZFs1nz/Ya2dDzXQ1NxZ/kKNWyD4h6w==