Fix monorepo build
This commit is contained in:
parent
2d67b7d939
commit
fd80a299b6
14 changed files with 99 additions and 83 deletions
|
|
@ -7,6 +7,8 @@ RUN apt update && export DEBIAN_FRONTEND=noninteractive \
|
|||
|
||||
RUN git lfs install
|
||||
|
||||
RUN npm i -g yarn concurrently
|
||||
|
||||
ENV ZSH_CUSTOM /root/.oh-my-zsh/
|
||||
RUN git clone https://github.com/reobin/typewritten.git $ZSH_CUSTOM/themes/typewritten
|
||||
RUN ln -s "$ZSH_CUSTOM/themes/typewritten/typewritten.zsh-theme" "$ZSH_CUSTOM/themes/typewritten.zsh-theme"
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
"terminal.integrated.shell.linux": "/bin/zsh",
|
||||
"files.exclude": {
|
||||
"**/node_modules": true,
|
||||
"**/package-lock.json": true,
|
||||
"**/yarn.lock": true,
|
||||
"**/dist": true,
|
||||
"**/lib": true,
|
||||
"**/.firebase": true
|
||||
|
|
@ -19,7 +19,6 @@
|
|||
"editor.detectIndentation": false,
|
||||
"editor.formatOnSave": true,
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||
"eslint.enable": true,
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.fixAll.eslint": true
|
||||
},
|
||||
|
|
@ -43,11 +42,11 @@
|
|||
"workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=cached",
|
||||
"workspaceFolder": "/workspace",
|
||||
"mounts": [
|
||||
"source=decla-red-root-node_modules-volume2,target=/workspace/node_modules,type=volume",
|
||||
"source=decla-red-frontend-node_modules-volume2,target=/workspace/frontend/node_modules,type=volume",
|
||||
"source=decla-red-backend-node_modules-volume2,target=/workspace/backend/node_modules,type=volume",
|
||||
"source=decla-red-shared-node_modules-volume2,target=/workspace/shared/node_modules,type=volume"
|
||||
"source=decla-red-root-node_modules-volume3,target=/workspace/node_modules,type=volume",
|
||||
"source=decla-red-frontend-node_modules-volume3,target=/workspace/frontend/node_modules,type=volume",
|
||||
"source=decla-red-backend-node_modules-volume3,target=/workspace/backend/node_modules,type=volume",
|
||||
"source=decla-red-shared-node_modules-volume3,target=/workspace/shared/node_modules,type=volume"
|
||||
],
|
||||
"forwardPorts": [3000, 8080],
|
||||
"postCreateCommand": "chown node:node ./**/node_modules && npm install && npm run initialize && npm run build"
|
||||
"postCreateCommand": "chown node:node ./**/node_modules && yarn"
|
||||
}
|
||||
|
|
|
|||
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -1,6 +1,6 @@
|
|||
dist
|
||||
lib
|
||||
node_modules
|
||||
package-lock.json
|
||||
.firebase
|
||||
lerna-debug.log
|
||||
yarm-error.log
|
||||
yarn.lock
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
FROM node:14.13.0-alpine3.10 as build
|
||||
|
||||
COPY . .
|
||||
RUN npm install && npm run initialize && npm run build
|
||||
RUN npm i -g concurrently
|
||||
RUN yarn && yarn run build
|
||||
|
||||
|
||||
FROM node:14.13.0-alpine3.10
|
||||
|
|
|
|||
|
|
@ -1,3 +1,9 @@
|
|||
# decla.red
|
||||
|
||||

|
||||
|
||||
## Development
|
||||
|
||||
- Open the devconatiner in VS Code
|
||||
- Run `yarn start`
|
||||
- Open [localhost:8080](http://localhost:8080)
|
||||
|
|
|
|||
|
|
@ -1,19 +1,18 @@
|
|||
{
|
||||
"name": "declared-server",
|
||||
"version": "0.0.2",
|
||||
"description": "Game server for decla.red",
|
||||
"keywords": [],
|
||||
"author": "András Schmelczer <andras@schmelczer.dev> (https://schmelczer.dev/)",
|
||||
"version": "0.0.1-try2",
|
||||
"main": "dist/main.js",
|
||||
"scripts": {
|
||||
"build": "npx webpack --mode production",
|
||||
"initialize": "npm install",
|
||||
"start": "concurrently --kill-others \"npx webpack --mode development -w\" \"cd dist && nodemon --legacy-watch main.js\"",
|
||||
"try-build": "npm run build && cd dist && node main.js && cd -"
|
||||
},
|
||||
"bin": {
|
||||
"declared-server": "./dist/main.js"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "npx webpack --mode production",
|
||||
"start": "npx concurrently --kill-others-on-fail \"npx webpack --mode development -w\" \"npx nodemon --legacy-watch dist/main.js\"",
|
||||
"try-build": "npm run build && cd dist && node main.js && cd -"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/config": "0.0.36",
|
||||
"cors": "^2.8.5",
|
||||
|
|
@ -24,12 +23,28 @@
|
|||
"webpack-node-externals": "^2.5.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/cors": "^2.8.7",
|
||||
"@types/express": "^4.17.8",
|
||||
"@types/node": "^14.11.2",
|
||||
"@types/socket.io": "^2.1.11",
|
||||
"@typescript-eslint/eslint-plugin": "^3.9.1",
|
||||
"@typescript-eslint/parser": "^3.9.1",
|
||||
"clean-webpack-plugin": "^3.0.0",
|
||||
"concurrently": "^5.3.0",
|
||||
"esbuild-loader": "^2.4.0",
|
||||
"eslint": "^7.2.0",
|
||||
"eslint-config-prettier": "^6.11.0",
|
||||
"eslint-plugin-import": "^2.21.2",
|
||||
"eslint-plugin-json-format": "^2.0.1",
|
||||
"eslint-plugin-prettier": "^3.1.4",
|
||||
"eslint-plugin-unused-imports": "^0.1.3",
|
||||
"file-loader": "^6.1.0",
|
||||
"ts-loader": "^8.0.3",
|
||||
"gl-matrix": "^3.3.0",
|
||||
"nodemon": "^2.0.4",
|
||||
"prettier": "^2.0.5",
|
||||
"raw-loader": "^4.0.1",
|
||||
"resolve-url-loader": "^3.1.1",
|
||||
"shared": "0.0.0",
|
||||
"terser-webpack-plugin": "^2.3.5",
|
||||
"typescript": "^4.0.3",
|
||||
"webpack": "^4.43.0",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"outDir": "dist",
|
||||
"sourceMap": true,
|
||||
"declaration": true,
|
||||
"declarationMap": true,
|
||||
|
|
@ -13,5 +14,5 @@
|
|||
"composite": true,
|
||||
"lib": ["dom", "es2017"]
|
||||
},
|
||||
"include": ["src/**/*.ts", "src/*.ts"]
|
||||
"include": ["src/**/*.ts"]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
const path = require('path');
|
||||
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
|
||||
const nodeExternals = require('webpack-node-externals');
|
||||
const { ESBuildPlugin } = require('esbuild-loader');
|
||||
const TerserJSPlugin = require('terser-webpack-plugin');
|
||||
const webpack = require('webpack');
|
||||
|
||||
|
|
@ -43,7 +42,6 @@ module.exports = (env, argv) => ({
|
|||
},
|
||||
plugins: [
|
||||
new webpack.BannerPlugin({ banner: '#!/usr/bin/env node', raw: true }),
|
||||
new ESBuildPlugin(),
|
||||
new CleanWebpackPlugin({
|
||||
protectWebpackAssets: false,
|
||||
cleanAfterEveryBuildPatterns: [],
|
||||
|
|
@ -63,10 +61,8 @@ module.exports = (env, argv) => ({
|
|||
},
|
||||
{
|
||||
test: /\.ts$/,
|
||||
loader: 'esbuild-loader',
|
||||
options: {
|
||||
loader: 'ts',
|
||||
target: 'es2015',
|
||||
use: {
|
||||
loader: 'ts-loader',
|
||||
},
|
||||
exclude: /node_modules/,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "decla.red-frontend",
|
||||
"private": true,
|
||||
"version": "0.0.0",
|
||||
"description": "",
|
||||
"keywords": [],
|
||||
"author": "András Schmelczer <andras@schmelczer.dev> (https://schmelczer.dev/)",
|
||||
|
|
@ -10,7 +10,6 @@
|
|||
"main": "index.js",
|
||||
"scripts": {
|
||||
"build": "npx webpack --mode production",
|
||||
"initialize": "npm install",
|
||||
"start": "npx webpack-dev-server --mode development",
|
||||
"try-build": "npm run build && cd dist && python3 -m http.server 8080"
|
||||
},
|
||||
|
|
@ -18,25 +17,44 @@
|
|||
"defaults"
|
||||
],
|
||||
"devDependencies": {
|
||||
"@types/socket.io-client": "^1.4.34",
|
||||
"@typescript-eslint/eslint-plugin": "^3.9.1",
|
||||
"@typescript-eslint/parser": "^3.9.1",
|
||||
"autoprefixer": "^9.8.5",
|
||||
"clean-webpack-plugin": "^3.0.0",
|
||||
"esbuild-loader": "^2.4.0",
|
||||
"css-loader": "^3.5.2",
|
||||
"cssnano": "^4.1.10",
|
||||
"eslint": "^7.2.0",
|
||||
"eslint-config-prettier": "^6.11.0",
|
||||
"eslint-plugin-import": "^2.21.2",
|
||||
"eslint-plugin-json-format": "^2.0.1",
|
||||
"eslint-plugin-prettier": "^3.1.4",
|
||||
"eslint-plugin-unused-imports": "^0.1.3",
|
||||
"file-loader": "^6.1.0",
|
||||
"firebase": "^7.22.0",
|
||||
"gl-matrix": "^3.3.0",
|
||||
"html-webpack-inline-source-plugin": "0.0.10",
|
||||
"html-webpack-plugin": "^3.2.0",
|
||||
"image-webpack-loader": "^6.0.0",
|
||||
"mini-css-extract-plugin": "^0.9.0",
|
||||
"optimize-css-assets-webpack-plugin": "^5.0.3",
|
||||
"postcss-loader": "^3.0.0",
|
||||
"prettier": "^2.0.5",
|
||||
"raw-loader": "^4.0.1",
|
||||
"resolve-url-loader": "^3.1.1",
|
||||
"ts-loader": "^8.0.3",
|
||||
"sass": "^1.26.3",
|
||||
"sass-loader": "^9.0.2",
|
||||
"sdf-2d": "^0.5.3",
|
||||
"shared": "0.0.0",
|
||||
"socket.io-client": "^2.3.1",
|
||||
"source-map-loader": "^1.1.0",
|
||||
"svg-url-loader": "^6.0.0",
|
||||
"terser-webpack-plugin": "^4.2.2",
|
||||
"typescript": "^4.0.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-bundle-analyzer": "^3.9.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"source-map-loader": "^1.1.0",
|
||||
"webpack-dev-server": "^3.10.3"
|
||||
},
|
||||
"postcss": {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"outDir": "dist",
|
||||
"sourceMap": true,
|
||||
"declaration": true,
|
||||
"declarationMap": true,
|
||||
|
|
@ -13,5 +14,5 @@
|
|||
"composite": true,
|
||||
"lib": ["dom", "es2017"]
|
||||
},
|
||||
"include": ["**/*.ts"]
|
||||
"include": ["src/**/*.ts"]
|
||||
}
|
||||
|
|
@ -6,7 +6,6 @@ const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
|||
const HtmlWebpackInlineSourcePlugin = require('html-webpack-inline-source-plugin');
|
||||
const Sass = require('sass');
|
||||
const TerserJSPlugin = require('terser-webpack-plugin');
|
||||
const { ESBuildPlugin } = require('esbuild-loader');
|
||||
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
|
||||
|
||||
const PATHS = {
|
||||
|
|
@ -46,7 +45,6 @@ module.exports = (env, argv) => ({
|
|||
],
|
||||
},
|
||||
plugins: [
|
||||
new ESBuildPlugin(),
|
||||
new HtmlWebpackPlugin({
|
||||
xhtml: true,
|
||||
template: './src/index.html',
|
||||
|
|
@ -105,10 +103,8 @@ module.exports = (env, argv) => ({
|
|||
},
|
||||
{
|
||||
test: /\.ts$/,
|
||||
loader: 'esbuild-loader',
|
||||
options: {
|
||||
loader: 'ts',
|
||||
target: 'es2015',
|
||||
use: {
|
||||
loader: 'ts-loader',
|
||||
},
|
||||
exclude: /node_modules/,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,8 +0,0 @@
|
|||
{
|
||||
"packages": [
|
||||
"frontend",
|
||||
"shared",
|
||||
"backend"
|
||||
],
|
||||
"version": "0.0.0"
|
||||
}
|
||||
51
package.json
51
package.json
|
|
@ -1,43 +1,22 @@
|
|||
{
|
||||
"name": "root",
|
||||
"private": true,
|
||||
"workspaces": {
|
||||
"packages": [
|
||||
"frontend",
|
||||
"shared",
|
||||
"backend"
|
||||
],
|
||||
"nohoist": [
|
||||
"**"
|
||||
]
|
||||
},
|
||||
"scripts": {
|
||||
"build": "lerna run build-before && lerna run build",
|
||||
"initialize": "lerna link && lerna run initialize",
|
||||
"build": "yarn workspaces shared run build && yarn workspaces frontend run build && yarn workspaces backend run build",
|
||||
"lint": "eslint './**/src/**/*.{js,ts,json}' --fix",
|
||||
"start": "lerna run --parallel start",
|
||||
"try-build": "lerna run --parallel try-build-before && lerna run --parallel try-build"
|
||||
},
|
||||
"dependencies": {
|
||||
"decla.red-frontend": "file:frontend",
|
||||
"shared": "file:shared"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/cors": "^2.8.7",
|
||||
"@types/express": "^4.17.8",
|
||||
"@types/node": "^14.11.2",
|
||||
"@types/socket.io": "^2.1.11",
|
||||
"@types/socket.io-client": "^1.4.34",
|
||||
"@types/uuid": "^8.0.0",
|
||||
"@typescript-eslint/eslint-plugin": "^3.9.1",
|
||||
"@typescript-eslint/parser": "^3.9.1",
|
||||
"autoprefixer": "^9.8.5",
|
||||
"css-loader": "^3.5.2",
|
||||
"cssnano": "^4.1.10",
|
||||
"eslint": "^7.2.0",
|
||||
"eslint-config-prettier": "^6.11.0",
|
||||
"eslint-plugin-import": "^2.21.2",
|
||||
"eslint-plugin-json-format": "^2.0.1",
|
||||
"eslint-plugin-prettier": "^3.1.4",
|
||||
"eslint-plugin-unused-imports": "^0.1.3",
|
||||
"file-loader": "^6.1.0",
|
||||
"firebase": "^7.22.0",
|
||||
"gl-matrix": "^3.3.0",
|
||||
"lerna": "^3.22.1",
|
||||
"prettier": "^2.0.5",
|
||||
"sdf-2d": "^0.5.2",
|
||||
"socket.io-client": "^2.3.1",
|
||||
"typescript": "^4.0.3",
|
||||
"uuid": "^8.2.0"
|
||||
"frontend": "yarn workspace decla.red-frontend start",
|
||||
"shared": "yarn workspace shared start",
|
||||
"backend": "yarn workspace declared-server start",
|
||||
"start": "concurrently --kill-others-on-fail \"yarn frontend\" \"yarn shared\" \"yarn backend\""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "shared",
|
||||
"private": true,
|
||||
"version": "0.0.0",
|
||||
"description": "Shared library between backend and frontend",
|
||||
"main": "lib/main.js",
|
||||
"types": "lib/src/main.d.ts",
|
||||
|
|
@ -8,13 +8,23 @@
|
|||
"lib"
|
||||
],
|
||||
"scripts": {
|
||||
"build-before": "npx webpack --mode production",
|
||||
"initialize": "npm install",
|
||||
"build": "npx webpack --mode production",
|
||||
"start": "npx webpack --mode development --watch",
|
||||
"try-build-before": "npx webpack --mode production"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@typescript-eslint/eslint-plugin": "^3.9.1",
|
||||
"@typescript-eslint/parser": "^3.9.1",
|
||||
"clean-webpack-plugin": "^3.0.0",
|
||||
"eslint": "^7.2.0",
|
||||
"eslint-config-prettier": "^6.11.0",
|
||||
"eslint-plugin-import": "^2.21.2",
|
||||
"eslint-plugin-json-format": "^2.0.1",
|
||||
"eslint-plugin-prettier": "^3.1.4",
|
||||
"eslint-plugin-unused-imports": "^0.1.3",
|
||||
"file-loader": "^6.1.0",
|
||||
"gl-matrix": "^3.3.0",
|
||||
"prettier": "^2.0.5",
|
||||
"terser-webpack-plugin": "^2.3.8",
|
||||
"ts-loader": "^8.0.3",
|
||||
"typescript": "^4.0.3",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue