mirror of
https://github.com/usememos/memos.git
synced 2025-02-11 00:40:38 +01: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
|
# Docker Compose Environment File
|
||||||
.env
|
.env
|
||||||
|
|
||||||
bin/air
|
|
||||||
|
|
||||||
dev-dist
|
|
||||||
|
|
||||||
dist
|
dist
|
||||||
|
|
||||||
# VSCode settings
|
# 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
|
## Prerequisites
|
||||||
|
|
||||||
- [Go](https://golang.org/doc/install)
|
- [Go](https://golang.org/doc/install)
|
||||||
- [Air](https://github.com/cosmtrek/air#installation) for backend live reload
|
|
||||||
- [Node.js](https://nodejs.org/)
|
- [Node.js](https://nodejs.org/)
|
||||||
- [pnpm](https://pnpm.io/installation)
|
- [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
|
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
|
```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
|
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