diff --git a/README.md b/README.md index bba5ee85c87..986b022e485 100644 --- a/README.md +++ b/README.md @@ -69,8 +69,7 @@ Botpress is on a mission to make useful bots ubiquitous by powering developers w If you have errors when building modules (timeout, random errors, etc), try the following: -1. Set the environment variable GULP_SERIES=true before starting the build -1. If it doesn't work, go in each module folder and type `yarn && yarn build` +1. Go in each module folder and type `yarn && yarn build` ## Target a specific Botpress Edition diff --git a/build/gulp.modules.js b/build/gulp.modules.js index 4c225449b68..7cbe2890564 100644 --- a/build/gulp.modules.js +++ b/build/gulp.modules.js @@ -59,9 +59,12 @@ const getTargetOSConfig = () => { const buildModule = (modulePath, cb) => { const targetOs = getTargetOSConfig() - const linkCmd = process.env.LINK ? ` && yarn link "module-builder"` : '' + const linkCmd = process.env.LINK ? `&& yarn link "module-builder"` : '' + const buildForProd = process.argv.find(x => x.toLowerCase() === '--prod') ? `cross-env NODE_ENV=production` : '' + const removeMap = process.argv.find(x => x.toLowerCase() === '--nomap') ? `--nomap` : '' + exec( - `cross-env npm_config_target_platform=${targetOs} yarn${linkCmd} && yarn build`, + `cross-env npm_config_target_platform=${targetOs} yarn ${linkCmd} && ${buildForProd} yarn build ${removeMap}`, { cwd: modulePath }, (err, stdout, stderr) => { if (err) { @@ -100,11 +103,11 @@ const buildModules = () => { return taskName }) - if (yn(process.env.GULP_SERIES)) { - return gulp.series(tasks) + if (yn(process.env.GULP_PARALLEL)) { + return gulp.parallel(tasks) } - return gulp.parallel(tasks) + return gulp.series(tasks) } const packageModules = () => { diff --git a/build/module-builder/src/build.ts b/build/module-builder/src/build.ts index a4bebcc1ba6..6893e8a1a1d 100644 --- a/build/module-builder/src/build.ts +++ b/build/module-builder/src/build.ts @@ -116,5 +116,6 @@ export async function buildConfigSchema(modulePath: string) { const definition = generateSchema(program, 'Config', settings) const schema = JSON.stringify(definition, undefined, 2) + os.EOL + os.EOL + mkdirp.sync(path.resolve(modulePath, 'assets')) fs.writeFileSync(path.resolve(modulePath, 'assets', 'config.schema.json'), schema) } diff --git a/build/module-builder/src/webpack.ts b/build/module-builder/src/webpack.ts index 130a1714a9b..95ade9e28ac 100644 --- a/build/module-builder/src/webpack.ts +++ b/build/module-builder/src/webpack.ts @@ -13,7 +13,7 @@ export function config(projectPath) { const web: webpack.Configuration = { mode: process.env.NODE_ENV === 'production' ? 'production' : 'development', - devtool: process.env.NODE_ENV === 'production' ? false : 'source-map', + devtool: process.argv.find(x => x.toLowerCase() === '--nomap') ? false : 'source-map', entry: ['./src/views/index.jsx'], output: { path: path.resolve(projectPath, './assets/web'), diff --git a/buildspec-test.yml b/buildspec-test.yml index 55ce43b73d2..bf31565aa1b 100644 --- a/buildspec-test.yml +++ b/buildspec-test.yml @@ -3,7 +3,6 @@ version: 0.2 env: variables: CHILD_CONCURRENCY: 1 - GULP_SERIES: true parameter-store: GIT_PRO_SSH: 'bp_git_pro_ssh_codebuild' diff --git a/buildspec.yml b/buildspec.yml index a6ca063e6b8..1b5e14be39e 100644 --- a/buildspec.yml +++ b/buildspec.yml @@ -3,7 +3,6 @@ version: 0.2 env: variables: CHILD_CONCURRENCY: 1 - GULP_SERIES: true YARN_CACHE_DIR_WIN: /codebuild/output/.cache/yarn-win YARN_CACHE_DIR_LINUX: /codebuild/output/.cache/yarn-linux YARN_CACHE_DIR_DARWIN: /codebuild/output/.cache/yarn-darwin @@ -35,9 +34,8 @@ phases: - echo "BUILDING FOR '$ARTIFACT_NAME' edition '$EDITION'. GIT TAG = '$CODEBUILD_GIT_TAG'" - yarn - yarn build:modules-builder - - yarn build:core - - yarn build:admin - - yarn build:studio + - yarn build:studio-prod + - yarn build:admin-prod build: commands: @@ -47,7 +45,7 @@ phases: # Twice because of potential OS-specific errors - yarn install --force --ignore-engines - yarn install --force --ignore-engines - - yarn run build --mac + - yarn run build-prod --mac - yarn run package --mac - mkdir -p out/binaries/data/storage - touch out/binaries/data/storage/.keep @@ -60,7 +58,7 @@ phases: - export npm_config_target_platform=windows - yarn install --force --ignore-engines - yarn install --force --ignore-engines - - yarn run build --win32 + - yarn run build-prod --win32 - yarn run package --win32 - mkdir -p out/binaries/data/storage - touch out/binaries/data/storage/.keep @@ -72,7 +70,7 @@ phases: - yarn config set cache-folder $YARN_CACHE_DIR_LINUX - export npm_config_target_platform=linux - yarn install --force --ignore-engines - - yarn run build --linux + - yarn run build-prod --linux - yarn run package --linux - mkdir -p out/binaries/data/storage - touch out/binaries/data/storage/.keep diff --git a/modules/channel-web/src/views/web/index.jsx b/modules/channel-web/src/views/web/index.jsx index 2c814f1ccd6..d3fb59b508b 100755 --- a/modules/channel-web/src/views/web/index.jsx +++ b/modules/channel-web/src/views/web/index.jsx @@ -446,7 +446,7 @@ export default class Web extends React.Component { handleSessionReset = () => { const userId = window.__BP_VISITOR_ID const url = `/mod/channel-web/conversations/${userId}/${this.state.currentConversationId}/reset` - return this.props.bp.axios.post(url, {}, ...this.axiosConfig).then() + return this.props.bp.axios.post(url, {}, this.axiosConfig).then() } renderOpenIcon() { diff --git a/package.json b/package.json index 7f3bf18a13c..8f0e1bc94ab 100755 --- a/package.json +++ b/package.json @@ -11,25 +11,28 @@ "license": "AGPL-3.0", "private": true, "scripts": { + "bootstrap": "yarn build:modules-builder && yarn build", "start": "cd ./out/bp && cross-env NODE_PATH=./ cross-env BP_MODULES_PATH=../../modules node index.js", + "start:guide": "cd docs/guide/website && yarn && yarn start", + "start:admin": "cd src/bp/ui-admin && yarn start:dev", + "start:studio": "yarn run gulp create-studio-symlink && cd src/bp/ui-studio && yarn watch", "build": "yarn build:core && yarn build:modules && yarn build:studio && yarn build:admin", + "build-prod": "yarn build:core && yarn build:modules --prod --nomap", "build:core": "./node_modules/.bin/gulp clean-build", "build:watch": "./node_modules/.bin/gulp build-watch", "build:modules": "./node_modules/.bin/gulp modules", "build:modules-builder": "cd build/module-builder/ && yarn && yarn build", - "bootstrap": "yarn build:modules-builder && yarn build", + "build:admin": "cd src/bp/ui-admin && yarn && yarn build && ../../../node_modules/.bin/gulp copy-admin", + "build:admin-prod": "cd src/bp/ui-admin && yarn && yarn build --nomap && ../../../node_modules/.bin/gulp copy-admin", + "build:studio": "cd src/bp/ui-studio && yarn && yarn build && ../../../node_modules/.bin/gulp copy-studio", + "build:studio-prod": "cd src/bp/ui-studio && yarn && yarn build:prod --nomap && ../../../node_modules/.bin/gulp copy-studio", + "build:guide": "cd docs/guide/website && yarn && yarn run build", + "build:reference": "gulp build-reference", "watch": "./node_modules/.bin/gulp watch", "test": "./node_modules/.bin/jest -i --detectOpenHandles -c jest.config.js", "clean": "./node_modules/.bin/gulp clean", "package": "./node_modules/.bin/gulp package", "package:core": "./node_modules/.bin/gulp package --skip-modules", - "build:reference": "gulp build-reference", - "start:guide": "cd docs/guide/website && yarn && yarn start", - "build:guide": "cd docs/guide/website && yarn && yarn run build", - "start:admin": "cd src/bp/ui-admin && yarn start:dev", - "build:admin": "cd src/bp/ui-admin && yarn && yarn build && ../../../node_modules/.bin/gulp copy-admin", - "start:studio": "yarn run gulp create-studio-symlink && cd src/bp/ui-studio && yarn watch", - "build:studio": "cd src/bp/ui-studio && yarn && yarn build && ../../../node_modules/.bin/gulp copy-studio", "commitmsg": "commitlint -e $GIT_PARAMS", "tslint": "node_modules/.bin/tslint --project tslint.json" }, diff --git a/src/bp/ui-admin/config-overrides.js b/src/bp/ui-admin/config-overrides.js index 471cb8be2ca..0f15de2a689 100644 --- a/src/bp/ui-admin/config-overrides.js +++ b/src/bp/ui-admin/config-overrides.js @@ -4,5 +4,7 @@ const ModuleScopePlugin = require('react-dev-utils/ModuleScopePlugin') module.exports = function override(config, env) { config.resolve.alias['common'] = path.join(__dirname, '../../../out/bp/common') config.resolve.plugins = config.resolve.plugins.filter(p => !p instanceof ModuleScopePlugin) + config.devtool = process.argv.find(x => x.toLowerCase() === '--nomap') ? false : 'source-map' + return config } diff --git a/src/bp/ui-admin/package.json b/src/bp/ui-admin/package.json index de11346dcfe..7d7ef26570a 100644 --- a/src/bp/ui-admin/package.json +++ b/src/bp/ui-admin/package.json @@ -42,7 +42,7 @@ "start": "cross-env PUBLIC_URL=/admin npm-run-all -p watch-css start-js", "start:dev": "cross-env PUBLIC_URL=/admin cross-env REACT_APP_API_URL=http://localhost:3000 cross-env PORT=3001 npm-run-all -p watch-css start-js", "build-js": "react-app-rewired build", - "build": "cross-env PUBLIC_URL=/admin npm-run-all build-css build-js", + "build": "yarn build-css && cross-env PUBLIC_URL=/admin yarn build-js", "test": "react-app-rewired test --env=jsdom", "eject": "react-scripts eject" }, diff --git a/src/bp/ui-studio/webpack.web.js b/src/bp/ui-studio/webpack.web.js index 334abc83604..7e0a4324faf 100755 --- a/src/bp/ui-studio/webpack.web.js +++ b/src/bp/ui-studio/webpack.web.js @@ -12,7 +12,7 @@ const isProduction = process.env.NODE_ENV === 'production' const webConfig = { mode: isProduction ? 'production' : 'development', bail: true, - devtool: isProduction ? 'source-map' : 'eval-source-map', + devtool: process.argv.find(x => x.toLowerCase() === '--nomap') ? false : 'source-map', entry: { web: './src/web/index.jsx', lite: './src/web/lite.jsx'