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:
parent
f1eacfefb0
commit
3c0d011085
6
.gitignore
vendored
6
.gitignore
vendored
@ -15,11 +15,7 @@ build
|
||||
# Docker Compose Environment File
|
||||
.env
|
||||
|
||||
bin/air
|
||||
|
||||
dev-dist
|
||||
|
||||
dist
|
||||
|
||||
# VSCode settings
|
||||
/.vscode
|
||||
.vscode
|
||||
|
@ -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.
|
@ -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
|
||||
|
||||
```
|
||||
|
@ -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
|
@ -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
29
scripts/build.sh
Normal 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"
|
Loading…
x
Reference in New Issue
Block a user