From 986e122dd99a0093fcc3d858668fadcbe6423cd4 Mon Sep 17 00:00:00 2001 From: Reinaldo Schiehll Date: Thu, 3 Jan 2019 17:31:46 -0200 Subject: [PATCH] Check for babelrc up from functions folder --- lib/build.js | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/build.js b/lib/build.js index 66ec33fd..af2d2afa 100644 --- a/lib/build.js +++ b/lib/build.js @@ -13,11 +13,27 @@ function getBabelTarget(envConfig) { return unknown ? "6.10" : current.replace(/^nodejs/, ""); } +function haveBabelrc(functionsDir) { + const cwd = process.cwd(); + + return ( + fs.existsSync(path.join(cwd, ".babelrc")) || + functionsDir.split("/").reduce((foundBabelrc, dir) => { + if (foundBabelrc) return foundBabelrc; + + const indexOf = functionsDir.indexOf(dir); + const dirToSearch = functionsDir.substr(0, indexOf); + + return fs.existsSync(path.join(cwd, dirToSearch, ".babelrc")); + }, false) + ); +} + function webpackConfig(dir, additionalConfig) { var config = conf.load(); var envConfig = config.build.environment || config.build.Environment || {}; var babelOpts = { cacheDirectory: true }; - if (!fs.existsSync(path.join(process.cwd(), ".babelrc"))) { + if (!haveBabelrc(dir)) { babelOpts.presets = [ ["@babel/preset-env", { targets: { node: getBabelTarget(envConfig) } }] ]; @@ -48,7 +64,7 @@ function webpackConfig(dir, additionalConfig) { var webpackConfig = { mode: "production", resolve: { - extensions: ['.wasm', '.mjs', '.js', '.json', '.ts'] + extensions: [".wasm", ".mjs", ".js", ".json", ".ts"] }, module: { rules: [