From 71c6524eb8cb81853c32a3eadc65e77d49d66a79 Mon Sep 17 00:00:00 2001 From: Junyoung Choi Date: Mon, 18 Oct 2021 20:32:24 +0900 Subject: [PATCH] Clean up deploy (#1272) --- .env.default | 32 +++++++++++++++++++++++++----- .gitignore | 7 ++----- package.json | 37 ++++++++++++++++++++++------------- readme.md | 8 ++++---- src/mobile/components/App.tsx | 13 +++++++----- webpack.cloud.config.ts | 12 +----------- webpack.mobile.config.ts | 6 ------ 7 files changed, 65 insertions(+), 50 deletions(-) diff --git a/.env.default b/.env.default index d4a1bb347..38185c864 100644 --- a/.env.default +++ b/.env.default @@ -1,6 +1,28 @@ -BOOST_HUB_BASE_URL=https://boosthub.io +NODE_ENV=development -AMPLIFY_AUTH_IDENTITY_POOL_ID= -AMPLIFY_AUTH_REGION= -AMPLIFY_PINPOINT_APPID= -AMPLIFY_PINPOINT_REGION= +INTERCOM_APP_ID= +GA_TRACKING_ID= +BOOST_HUB_BASE_URL= +SSE_URL= +REALTIME_URL= +GITHUB_OAUTH_ID= +GOOGLE_CLIENT_ID= +STRIPE_PUBLISHABLE_KEY= +COUPONS_NEW_USER_PRO= +COUPONS_NEW_USER_STANDARD= +COUPONS_NEW_SPACE= +MOBILE_BASE_URL= +BOOST_PDF_EXPORT_BASE_URL= + +# Deployment + +GH_TOKEN= +APPLE_ID= +APPLE_ID_PASSWORD= + +CLOUD_S3_BUCKET= +MOBILE_S3_BUCKET= + +# Optional + +# MOCK_BACKEND=true diff --git a/.gitignore b/.gitignore index b0bba9e64..53515db1f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,8 @@ node_modules/* .DS_Store .env -.env.dev -.env.local -.env.staging -.env.production -.env.local +.env.* +!.env.default Desktop.ini Thumbs.db *.log diff --git a/package.json b/package.json index 835aef10f..95a91f7e4 100644 --- a/package.json +++ b/package.json @@ -9,22 +9,31 @@ "url": "https://github.com/BoostIO/BoostNote-App.git" }, "scripts": { - "dev:cloud": "env-cmd cross-env NODE_ENV=development TARGET=electron TS_NODE_PROJECT=\"tsconfig-webpack.json\" webpack-dev-server --mode development --config webpack.cloud.config.ts", - "dev:webpack": "env-cmd cross-env NODE_ENV=development TS_NODE_PROJECT=\"tsconfig-webpack.json\" webpack-dev-server --mode development", - "dev:electron": "env-cmd cross-env NODE_ENV=development ts-node -P tsconfig-webpack.json scripts/dev-electron.ts", - "dev:mobile": "env-cmd cross-env NODE_ENV=development TS_NODE_PROJECT=\"tsconfig-webpack.json\" webpack-dev-server --mode development --config webpack.mobile.config.ts", + "dev:cloud": "env-cmd cross-env TS_NODE_PROJECT=\"tsconfig-webpack.json\" webpack-dev-server --mode development --config webpack.cloud.config.ts", + "dev:webpack": "env-cmd cross-env TS_NODE_PROJECT=\"tsconfig-webpack.json\" webpack-dev-server --mode development", + "dev:electron": "env-cmd ts-node -P tsconfig-webpack.json scripts/dev-electron.ts", + "dev:mobile": "env-cmd cross-env TS_NODE_PROJECT=\"tsconfig-webpack.json\" webpack-dev-server --mode development --config webpack.mobile.config.ts", + "deploy:cloud-staging": "npm run build:cloud-staging && env-cmd --file .env.staging -x aws s3 sync ./compiled-cloud s3://\\$CLOUD_S3_BUCKET --acl public-read", + "deploy:cloud-prod": "npm run build:cloud-prod && env-cmd --file .env.production -x aws s3 sync ./compiled-cloud s3://\\$CLOUD_S3_BUCKET --acl public-read", + "deploy:mobile-staging": "npm run build:mobile-staging && env-cmd --file .env.production -x aws s3 sync ./compiled-mobile s3://\\$MOBILE_S3_BUCKET --acl public-read", + "deploy:mobile-prod": "npm run build:mobile-prod && env-cmd --file .env.production -x aws s3 sync ./compiled-mobile s3://\\$MOBILE_S3_BUCKET --acl public-read", "start": "electron electron/index.js", "lint": "eslint src/* --ext .ts,.tsx", "format": "prettier --write \"src/**/*\"", - "build:electron": "npm run build:electron-renderer && npm run build:electron-main", - "build:electron-renderer": "rimraf electron/compiled && env-cmd cross-env TS_NODE_PROJECT=\"tsconfig-webpack.json\" TARGET=electron webpack --mode production", - "build:electron-main": "rimraf electron/index.js && env-cmd ts-node -P tsconfig-webpack.json scripts/build-electron-main", - "build:cloud": "rimraf compiled-cloud && env-cmd cross-env NODE_ENV=production TS_NODE_PROJECT=\"tsconfig-webpack.json\" webpack --mode production --config webpack.cloud.config.ts", - "build:mobile": "rimraf compiled-mobile && env-cmd cross-env NODE_ENV=production TS_NODE_PROJECT=\"tsconfig-webpack.json\" webpack --mode production --config webpack.mobile.config.ts", + "build:electron-staging": "npm run build:electron-renderer-staging && npm run build:electron-main-staging", + "build:electron-prod": "npm run build:electron-renderer-prod && npm run build:electron-main-prod", + "build:electron-renderer-staging": "rimraf electron/compiled && env-cmd --file .env.staging cross-env TS_NODE_PROJECT=\"tsconfig-webpack.json\" webpack --mode production", + "build:electron-renderer-prod": "rimraf electron/compiled && env-cmd --file .env.production cross-env TS_NODE_PROJECT=\"tsconfig-webpack.json\" webpack --mode production", + "build:electron-main-staging": "rimraf electron/index.js && env-cmd --file .env.staging ts-node -P tsconfig-webpack.json scripts/build-electron-main", + "build:electron-main-prod": "rimraf electron/index.js && env-cmd --file .env.production ts-node -P tsconfig-webpack.json scripts/build-electron-main", + "build:cloud-staging": "rimraf compiled-cloud && env-cmd --file .env.staging cross-env TS_NODE_PROJECT=\"tsconfig-webpack.json\" webpack --mode production --config webpack.cloud.config.ts", + "build:cloud-prod": "rimraf compiled-cloud && env-cmd --file .env.production cross-env TS_NODE_PROJECT=\"tsconfig-webpack.json\" webpack --mode production --config webpack.cloud.config.ts", + "build:mobile-staging": "rimraf compiled-mobile && env-cmd --file .env.staging cross-env TS_NODE_PROJECT=\"tsconfig-webpack.json\" webpack --mode production --config webpack.mobile.config.ts", + "build:mobile-prod": "rimraf compiled-mobile && env-cmd --file .env.production cross-envnpm TS_NODE_PROJECT=\"tsconfig-webpack.json\" webpack --mode production --config webpack.mobile.config.ts", "meta": "node scripts/meta.js", - "prepack": "rimraf dist && env-cmd npm run meta && electron-builder --dir", - "pack": "rimraf dist && env-cmd npm run meta && env-cmd electron-builder", - "release": "npm run build:electron && rimraf dist && env-cmd npm run meta && env-cmd electron-builder -- --publish", + "prepack": "rimraf dist && npm run meta && env-cmd --file .env.production electron-builder --dir", + "pack": "rimraf dist && npm run meta && env-cmd --file .env.production electron-builder", + "release": "npm run build:electron && rimraf dist && npm run meta && env-cmd --file .env.production electron-builder -- --publish", "test": "npm run lint && npm run test-api", "test-api": "jest -c jest.json", "test-api:watch": "jest -c jest.json --watch", @@ -244,8 +253,8 @@ "AppImage" ] }, - "rpm":{ - "depends":[ + "rpm": { + "depends": [ "/usr/lib64/libuuid.so.1" ] }, diff --git a/readme.md b/readme.md index 69f4c2f12..cd7881747 100644 --- a/readme.md +++ b/readme.md @@ -75,8 +75,8 @@ But you can participate in development via mock backend mode. Although it still Create .env file. ```sh +NODE_ENV=development MOCK_BACKEND=true -BOOST_HUB_BASE_URL=http://localhost:3004 ``` Run webpack processors. You have to run them in separate terminals. @@ -118,9 +118,9 @@ The source code is quite similar to a router interface. All you need to is `meth - `npm test` : Run test script - `npm run tsc` : Check type errors - Build scripts - - `npm run build:electron` : Build assets for the desktop app - - `npm run build:cloud` : Build asssets for the cloud space - - `npm run build:mobile` : Build assets for the mobile app + - `npm run build:electron-production` : Build assets for the desktop app + - `npm run build:cloud-production` : Build asssets for the cloud space + - `npm run build:mobile-production` : Build assets for the mobile app - `npm start` : Run the desktop app with prebuilt assets - `npm run meta` : Prepare meta data for the desktop app building(Generate package.json for electron-build module) - `npm run prepack` : Create desktop app installers without signing diff --git a/src/mobile/components/App.tsx b/src/mobile/components/App.tsx index 97166f74d..a6b41db56 100644 --- a/src/mobile/components/App.tsx +++ b/src/mobile/components/App.tsx @@ -9,6 +9,7 @@ import { useEffectOnce } from 'react-use' import { initAccessToken } from '../../cloud/lib/stores/electron' import '../../cloud/lib/i18n' import '../lib/nativeMobile' +import { PreviewStyleProvider } from '../../lib/preview' const App = () => { const [accessTokenInitialized, setAccessTokenInitialized] = useState(false) @@ -30,11 +31,13 @@ const App = () => { - - - - - + + + + + + + diff --git a/webpack.cloud.config.ts b/webpack.cloud.config.ts index 5893b09e8..dfed1435a 100644 --- a/webpack.cloud.config.ts +++ b/webpack.cloud.config.ts @@ -5,7 +5,6 @@ import express from 'express' import ErrorOverlayPlugin from 'error-overlay-webpack-plugin' import CopyPlugin from 'copy-webpack-plugin' import packageJson from './package.json' -import CompressionPlugin from 'compression-webpack-plugin' module.exports = (env, argv) => { const config: webpack.Configuration = { @@ -62,10 +61,6 @@ module.exports = (env, argv) => { }), new webpack.EnvironmentPlugin([ 'NODE_ENV', - 'AMPLIFY_AUTH_IDENTITY_POOL_ID', - 'AMPLIFY_AUTH_REGION', - 'AMPLIFY_PINPOINT_APPID', - 'AMPLIFY_PINPOINT_REGION', 'BOOST_HUB_BASE_URL', 'SSE_URL', 'REALTIME_URL', @@ -198,12 +193,7 @@ module.exports = (env, argv) => { minimize: true, } - config.plugins.push(new CompressionPlugin()) - if (process.env.TARGET === 'electron') { - config.output.path = path.resolve(__dirname, 'electron/compiled-cloud') - } else { - config.output.publicPath = '/' - } + config.output.publicPath = '/' } return config diff --git a/webpack.mobile.config.ts b/webpack.mobile.config.ts index 413df6b25..8026db7a7 100644 --- a/webpack.mobile.config.ts +++ b/webpack.mobile.config.ts @@ -5,7 +5,6 @@ import express from 'express' import ErrorOverlayPlugin from 'error-overlay-webpack-plugin' import CopyPlugin from 'copy-webpack-plugin' import packageJson from './package.json' -import CompressionPlugin from 'compression-webpack-plugin' module.exports = (env, argv) => { const config: webpack.Configuration = { @@ -62,10 +61,6 @@ module.exports = (env, argv) => { }), new webpack.EnvironmentPlugin([ 'NODE_ENV', - 'AMPLIFY_AUTH_IDENTITY_POOL_ID', - 'AMPLIFY_AUTH_REGION', - 'AMPLIFY_PINPOINT_APPID', - 'AMPLIFY_PINPOINT_REGION', 'BOOST_HUB_BASE_URL', 'SSE_URL', 'REALTIME_URL', @@ -200,7 +195,6 @@ module.exports = (env, argv) => { config.optimization = { minimize: true, } - config.plugins.push(new CompressionPlugin()) config.output.publicPath = '/' }