1
0
mirror of https://github.com/usememos/memos.git synced 2025-02-06 10:24:00 +00:00

chore(dev): update build guides

This commit is contained in:
johnnyjoy 2025-01-19 10:46:35 +08:00
parent f1eacfefb0
commit 3c0d011085
6 changed files with 34 additions and 130 deletions

6
.gitignore vendored
View File

@ -15,11 +15,7 @@ build
# Docker Compose Environment File
.env
bin/air
dev-dist
dist
# VSCode settings
/.vscode
.vscode

View File

@ -1,90 +0,0 @@
# Development in Windows
Memos is built with a curated tech stack. It is optimized for developer experience and is very easy to start working on the code:
1. It has no external dependency.
2. It requires zero config.
3. 1 command to start backend and 1 command to start frontend, both with live reload support.
## Tech Stack
| Frontend | Backend |
| ---------------------------------------- | --------------------------------- |
| [React](https://react.dev/) | [Go](https://go.dev/) |
| [Tailwind CSS](https://tailwindcss.com/) | [SQLite](https://www.sqlite.org/) |
| [Vite](https://vitejs.dev/) | |
| [pnpm](https://pnpm.io/) | |
## Prerequisites
- [Go](https://golang.org/doc/install)
- [Air](https://github.com/cosmtrek/air#installation) for backend live reload
- [Node.js](https://nodejs.org/)
- [pnpm](https://pnpm.io/installation)
## Steps
(Using PowerShell)
1. pull source code
```powershell
git clone https://github.com/usememos/memos
# or
gh repo clone usememos/memos
```
2. cd into the project root directory
```powershell
cd memos
```
3. start backend using air (with live reload)
```powershell
air -c .\scripts\.air-windows.toml
```
4. start frontend dev server
```powershell
cd web; pnpm i; pnpm dev
```
Memos should now be running at [http://localhost:3001](http://localhost:3001) and changing either frontend or backend code would trigger live reload.
## Building
Frontend must be built before backend. The built frontend must be placed in the backend ./server/frontend/dist directory. Otherwise, you will get a "No frontend embedded" error.
### Frontend
```powershell
Move-Item "./server/frontend/dist" "./server/frontend/dist.bak"
cd web; pnpm i --frozen-lockfile; pnpm build; cd ..;
Move-Item "./web/dist" "./server/" -Force
```
### Backend
```powershell
go build -o ./build/memos.exe ./bin/memos/main.go
```
## ❕ Notes
- Start development servers easier by running the provided `start.ps1` script.
This will start both backend and frontend in detached PowerShell windows:
```powershell
.\scripts\start.ps1
```
- Produce a local build easier using the provided `build.ps1` script to build both frontend and backend:
```powershell
.\scripts\build.ps1
```
This will produce a memos.exe file in the ./build directory.

View File

@ -9,7 +9,6 @@ Memos is built with a curated tech stack. It is optimized for developer experien
## Prerequisites
- [Go](https://golang.org/doc/install)
- [Air](https://github.com/cosmtrek/air#installation) for backend live reload
- [Node.js](https://nodejs.org/)
- [pnpm](https://pnpm.io/installation)
@ -21,12 +20,14 @@ Memos is built with a curated tech stack. It is optimized for developer experien
git clone https://github.com/usememos/memos
```
2. Start backend server with [`air`](https://github.com/cosmtrek/air) (with live reload)
2. Build and run backend server
```bash
air -c scripts/.air.toml
sh scripts/build.sh
```
Then you can run the server following building outputs.
3. Install frontend dependencies and generate TypeScript code from protobuf
```

View File

@ -1,16 +0,0 @@
root = "."
tmp_dir = "build"
[build]
bin = "./build/memos.exe --mode dev"
cmd = "go build -o ./build/memos.exe ./bin/memos/main.go"
delay = 1000
exclude_dir = ["web", "build"]
include_ext = ["go", "mod", "sum"]
exclude_file = []
exclude_regex = []
exclude_unchanged = true
follow_symlink = false
send_interrupt = true
kill_delay = 2000
stop_on_error = true

View File

@ -1,16 +0,0 @@
root = "."
tmp_dir = "build"
[build]
bin = "./build/memos --mode dev"
cmd = "go build -o ./build/memos ./bin/memos/main.go"
delay = 1000
exclude_dir = ["web", "build"]
include_ext = ["go", "mod", "sum"]
exclude_file = []
exclude_regex = []
exclude_unchanged = true
follow_symlink = false
send_interrupt = true
kill_delay = 2000
stop_on_error = true

29
scripts/build.sh Normal file
View File

@ -0,0 +1,29 @@
#!/bin/sh
# Exit when any command fails
set -e
# Get the script directory and change to the project root
cd "$(dirname "$0")/../"
# Detect the operating system
OS=$(uname -s)
# Set output file name based on the OS
if [[ "$OS" == *"CYGWIN"* || "$OS" == *"MINGW"* || "$OS" == *"MSYS"* ]]; then
OUTPUT="./build/memos.exe"
else
OUTPUT="./build/memos"
fi
echo "Building for $OS..."
# Build the executable
go build -o "$OUTPUT" ./bin/memos/main.go
# Output the success message
echo "Build successful!"
# Output the command to run
echo "To run the application, execute the following command:"
echo "$OUTPUT --mode dev"