Skip to content

Commit cd2721a

Browse files
committed
chore: monorepo with webpack
1 parent ec2e007 commit cd2721a

20 files changed

+9136
-1
lines changed

.eslintrc.js

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
module.exports = {
2+
env: {
3+
es2021: true,
4+
},
5+
extends: [
6+
'eslint:recommended',
7+
'plugin:@typescript-eslint/recommended',
8+
'plugin:@typescript-eslint/recommended-requiring-type-checking',
9+
'plugin:prettier/recommended',
10+
],
11+
parser: '@typescript-eslint/parser',
12+
parserOptions: {
13+
ecmaVersion: 12,
14+
},
15+
plugins: ['@typescript-eslint'],
16+
rules: {
17+
'prefer-const': 'error',
18+
'no-console': 'warn',
19+
'@typescript-eslint/no-unsafe-member-access': 'off',
20+
'@typescript-eslint/no-unsafe-call': 'off',
21+
'@typescript-eslint/no-unsafe-assignment': 'off',
22+
'@typescript-eslint/no-non-null-assertion': 'off',
23+
'@typescript-eslint/no-unused-vars': [
24+
'error',
25+
{ ignoreRestSiblings: true, args: 'after-used' },
26+
],
27+
},
28+
overrides: [
29+
{
30+
files: ['**/*.test.ts'],
31+
env: {
32+
jest: true,
33+
},
34+
},
35+
],
36+
}

.prettierrc.js

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
module.exports = {
2+
semi: false,
3+
trailingComma: 'all',
4+
singleQuote: true,
5+
printWidth: 100,
6+
tabWidth: 2,
7+
}

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
# grapql-codegen-demo
1+
# graphql-codegen-demo

lerna.json

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"packages": [
3+
"packages/*"
4+
],
5+
"version": "independent",
6+
"npmClient": "yarn",
7+
"useWorkspaces": true
8+
}

package.json

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"name": "graphql-codegen-demo",
3+
"scripts": {
4+
"build:all": "lerna run build --stream",
5+
"build": "yarn build:all",
6+
"start:client": "lerna run start --stream --scope=\"@mydemo/client\"",
7+
"start": "run-p start:client"
8+
},
9+
"private": true,
10+
"workspaces": [
11+
"packages/*"
12+
],
13+
"devDependencies": {
14+
"@babel/core": "^7.13.14",
15+
"@babel/preset-env": "^7.13.12",
16+
"@babel/preset-react": "^7.13.13",
17+
"@babel/preset-typescript": "^7.13.0",
18+
"babel-loader": "^8.2.2",
19+
"eslint": "^7.23.0",
20+
"eslint-config-prettier": "^8.1.0",
21+
"eslint-plugin-prettier": "^3.3.1",
22+
"lerna": "3",
23+
"npm-run-all": "^4.1.5",
24+
"prettier": "^2.2.1",
25+
"rimraf": "^3.0.2",
26+
"typescript": "^4.2.3",
27+
"webpack": "^5.28.0",
28+
"webpack-cli": "^4.6.0"
29+
}
30+
}

packages/.babelrc.js

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = {
2+
presets: [['@babel/preset-env', { targets: { node: '10' } }], '@babel/preset-typescript'],
3+
}

packages/api/package.json

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"name": "@mydemo/api",
3+
"version": "1.0.0",
4+
"main": "index.js",
5+
"license": "MIT"
6+
}

packages/api/tsconfig.json

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"extends": "../tsconfig.react.json",
3+
"compilerOptions": {
4+
"rootDir": "src"
5+
}
6+
}

packages/client/babel.config.js

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
module.exports = function (api) {
2+
api.cache(true)
3+
return {
4+
extends: '../.babelrc',
5+
presets: ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript'],
6+
plugins: [],
7+
}
8+
}

packages/client/package.json

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"name": "@mydemo/client",
3+
"version": "1.0.0",
4+
"main": "index.js",
5+
"license": "MIT",
6+
"scripts": {
7+
"clean": "rimraf dist",
8+
"build:app": "webpack --mode production",
9+
"build": "run-s clean build:app",
10+
"start": "webpack serve --mode development"
11+
},
12+
"dependencies": {
13+
"react": "^17.0.2",
14+
"react-dom": "^17.0.2"
15+
},
16+
"devDependencies": {
17+
"@types/react": "^17.0.3",
18+
"@types/react-dom": "^17.0.3",
19+
"css-loader": "^5.2.0",
20+
"html-webpack-plugin": "^5.3.1",
21+
"style-loader": "^2.0.0",
22+
"webpack-dev-server": "^3.11.2"
23+
}
24+
}

packages/client/src/App.tsx

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import React from 'react'
2+
3+
export const App = () => {
4+
return <div>hello</div>
5+
}

packages/client/src/index.ts

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import React from 'react'
2+
import { render } from 'react-dom'
3+
import { App } from './App'
4+
5+
let el = document.getElementById('app')
6+
if (!el) {
7+
el = document.createElement('div')
8+
el.id = 'app'
9+
document.body.appendChild(el)
10+
}
11+
render(React.createElement(App), el)

packages/client/tsconfig.json

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"extends": "../tsconfig.react.json",
3+
"compilerOptions": {
4+
"rootDir": "src"
5+
}
6+
}

packages/client/webpack.config.js

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
const path = require('path')
2+
const HtmlWebpackPlugin = require('html-webpack-plugin')
3+
4+
module.exports = {
5+
entry: path.resolve(__dirname, './src/index.ts'),
6+
output: {
7+
path: path.resolve(__dirname, './dist'),
8+
filename: 'index.js',
9+
},
10+
resolve: {
11+
extensions: ['.js', '.jsx', '.json', '.ts', '.tsx'],
12+
},
13+
module: {
14+
rules: [
15+
{ test: /\.(t|j)sx?$/, use: ['babel-loader'], exclude: /node_modules/ },
16+
{ test: /\.css$/, use: ['style-loader', 'css-loader'] },
17+
],
18+
},
19+
plugins: [new HtmlWebpackPlugin({ title: 'graphql-codegen demo' })],
20+
devServer: {
21+
port: 4001,
22+
},
23+
}

packages/server/package.json

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"name": "@mydemo/server",
3+
"version": "1.0.0",
4+
"main": "index.js",
5+
"license": "MIT"
6+
}

packages/tsconfig.json

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"files": [],
3+
"references": [{ "path": "./client" }, { "path": "./server" }, { "path": "./api" }]
4+
}

packages/tsconfig.react.json

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"extends": "./tsconfig.settings.json",
3+
"compilerOptions": {
4+
"composite": true,
5+
"outDir": "dist",
6+
"jsx": "react"
7+
},
8+
"references": [{ "path": "./api" }]
9+
}

packages/tsconfig.settings.json

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"extends": "../tsconfig.json"
3+
}

tsconfig.json

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"compilerOptions": {
3+
"module": "CommonJS",
4+
"composite": true,
5+
"target": "ES2018",
6+
"strict": true,
7+
"noUnusedLocals": true,
8+
"noUnusedParameters": true,
9+
"noImplicitReturns": true,
10+
"declaration": true,
11+
"esModuleInterop": true,
12+
"isolatedModules": true
13+
},
14+
"exclude": ["**/node_modules/**"]
15+
}

0 commit comments

Comments
 (0)