chore: update pnpm scripts (#2350)

* chore: update pnpm scripts

* chore: update development guide
This commit is contained in:
boojack 2023-10-07 12:06:18 -05:00 committed by GitHub
parent b938c8d7b6
commit dfaf2ee29c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 90 additions and 31 deletions

View file

@ -15,9 +15,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: bufbuild/buf-setup-action@v1
- run: buf generate
working-directory: proto
- uses: pnpm/action-setup@v2.2.4
with:
version: 8
@ -28,6 +25,8 @@ jobs:
cache-dependency-path: "web/pnpm-lock.yaml"
- run: pnpm install
working-directory: web
- run: pnpm type-gen
working-directory: web
- name: Run eslint check
run: pnpm lint
working-directory: web
@ -36,9 +35,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: bufbuild/buf-setup-action@v1
- run: buf generate
working-directory: proto
- uses: pnpm/action-setup@v2.2.4
with:
version: 8
@ -49,6 +45,8 @@ jobs:
cache-dependency-path: "web/pnpm-lock.yaml"
- run: pnpm install
working-directory: web
- run: pnpm type-gen
working-directory: web
- name: Run frontend build
run: pnpm build
working-directory: web

View file

@ -1,24 +1,12 @@
# Build protobuf.
FROM golang:1.21-alpine AS protobuf
WORKDIR /protobuf-generate
COPY . .
RUN GO111MODULE=on GOBIN=/usr/local/bin go install github.com/bufbuild/buf/cmd/buf@v1.26.1
WORKDIR /protobuf-generate/proto
RUN buf generate
# Build frontend dist.
FROM node:18-alpine AS frontend
WORKDIR /frontend-build
COPY ./web .
COPY . .
COPY --from=protobuf /protobuf-generate/web/src/types/proto ./src/types/proto
WORKDIR /frontend-build/web
RUN corepack enable && pnpm i --frozen-lockfile
RUN corepack enable && pnpm i --frozen-lockfile && pnpm type-gen
RUN pnpm build
@ -27,7 +15,7 @@ FROM golang:1.21-alpine AS backend
WORKDIR /backend-build
COPY . .
COPY --from=frontend /frontend-build/dist ./server/dist
COPY --from=frontend /frontend-build/web/dist ./server/dist
RUN CGO_ENABLED=0 go build -o memos ./main.go

View file

@ -10,34 +10,33 @@ Memos is built with a curated tech stack. It is optimized for developer experien
- [Go](https://golang.org/doc/install)
- [Air](https://github.com/cosmtrek/air#installation) for backend live reload
- [Buf](https://buf.build/docs/installation)
- [Node.js](https://nodejs.org/)
- [pnpm](https://pnpm.io/installation)
## Steps
1. pull source code
1. Pull the source code
```bash
git clone https://github.com/usememos/memos
```
2. start backend using air(with live reload)
2. Start backend server with `air`(with live reload)
```bash
air -c scripts/.air.toml
```
3. generate TypeScript code from protobuf with `buf`
3. Install frontend dependencies and generate TypeScript code from protobuf
```
cd proto && buf generate
cd web && pnpm i && pnpm type-gen
```
4. start frontend dev server
4. Start the dev server of frontend
```bash
cd web && pnpm i && pnpm dev
cd web && pnpm dev
```
Memos should now be running at [http://localhost:3001](http://localhost:3001) and change either frontend or backend code would trigger live reload.

View file

@ -3,8 +3,10 @@
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"lint": "tsc && eslint --ext .js,.ts,.tsx, src",
"lint-fix": "eslint --ext .js,.ts,.tsx, src --fix"
"lint": "eslint --ext .js,.ts,.tsx, src",
"lint-fix": "eslint --ext .js,.ts,.tsx, src --fix",
"type-gen": "cd ../proto && buf generate",
"type-check": "tsc"
},
"packageManager": "pnpm@8.7.0",
"dependencies": {
@ -40,6 +42,7 @@
"zustand": "4.4.1"
},
"devDependencies": {
"@bufbuild/buf": "^1.27.0",
"@trivago/prettier-plugin-sort-imports": "^3.4.0",
"@types/katex": "^0.16.3",
"@types/lodash-es": "^4.17.9",

View file

@ -97,6 +97,9 @@ dependencies:
version: 4.4.1(@types/react@18.2.25)(react@18.2.0)
devDependencies:
'@bufbuild/buf':
specifier: ^1.27.0
version: 1.27.0
'@trivago/prettier-plugin-sort-imports':
specifier: ^3.4.0
version: 3.4.0(prettier@2.6.2)
@ -425,6 +428,74 @@ packages:
'@babel/helper-validator-identifier': 7.22.20
to-fast-properties: 2.0.0
/@bufbuild/buf-darwin-arm64@1.27.0:
resolution: {integrity: sha512-Bsdo9BkkIlIgBpQJ2jyIXl9ggSqDdSJ12euxgU1y4pbT5iD11mdiUA7eq5/ssxLJilUrUGj2Gk1h1KbYG/JfVA==}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/@bufbuild/buf-darwin-x64@1.27.0:
resolution: {integrity: sha512-aJmSZvO6uNxHST8+kN5cukv7/ZLgDnvklp+r6uyokocg5sk1rgWQVBqiVtGmoDWwPbotpMhb3EuqtwN9hdNrOg==}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/@bufbuild/buf-linux-aarch64@1.27.0:
resolution: {integrity: sha512-1NPHARYENNVWOK3bQxbnYsMLU09em4/kdyAnCwyGkNhr+pWUlWdCBu3X5tdrRW+mnhjeagIcomTMhgVjxIAS7g==}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@bufbuild/buf-linux-x64@1.27.0:
resolution: {integrity: sha512-3LMTSJlwJAeOfjPuB0NBK+1Yfg1Bybadt+c1X/vF8XSXut1u0Ju1/fbRDz75BF4AlMidMQPdGS+vPWmPcb51hA==}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@bufbuild/buf-win32-arm64@1.27.0:
resolution: {integrity: sha512-Za5d3obNvSfLZAlQW8IAWtv1Yv0gQTFDVMPyYiOh70rKIfKIxrWZxT4E4nzFLZZ54VQDFoUl81bAjOYLOgaspQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@bufbuild/buf-win32-x64@1.27.0:
resolution: {integrity: sha512-OzVK4Fz162Z6fFHAAZhHPW2GiCXjweCG/hwjOtFt2gza1t3ImYp0CwxJI6ePGY+th3Y9yu8rY0iHiI59ezMa4Q==}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@bufbuild/buf@1.27.0:
resolution: {integrity: sha512-vR/ke6gUNgGSC3z7WkHLcbO+ur+zvGTC4ohHsLo2dZqEWysWySjNpcU70SKdIN3G5M4fSS1ki6MkZPes3E+83w==}
engines: {node: '>=12'}
hasBin: true
requiresBuild: true
optionalDependencies:
'@bufbuild/buf-darwin-arm64': 1.27.0
'@bufbuild/buf-darwin-x64': 1.27.0
'@bufbuild/buf-linux-aarch64': 1.27.0
'@bufbuild/buf-linux-x64': 1.27.0
'@bufbuild/buf-win32-arm64': 1.27.0
'@bufbuild/buf-win32-x64': 1.27.0
dev: true
/@emotion/babel-plugin@11.11.0:
resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==}
dependencies: