Cecha | Edit1 (Node.js) | Edit2 (Python) | Edit3 (Go) |
---|---|---|---|
Rozmiar obrazu Docker | ~150MB | ~180MB | ~25MB |
Czas startu | ~2s | ~3s | <1s |
Zużycie RAM | ~50MB | ~80MB | ~15MB |
Edytor kodu | CodeMirror | Monaco | Ace |
Wizualizacja JSON | JSONEditor (pełna) | Podstawowa | Zaawansowana |
Wizualizacja YAML | Drzewo | Preview | Preview |
Wizualizacja XML | Drzewo | Preview | Kolorowanie |
Łatwość instalacji | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
Dlaczego Edit1 jest najlepszy:
- Najprostsza instalacja - tylko
npm install
inpm start
- Najlepszy edytor wizualny - JSONEditor oferuje pełną edycję wizualną z tree/form/code view
- Najszybszy development - hot reload, bogaty ekosystem npm
- Najprostsza konfiguracja - Docker Compose gotowy do użycia
# Utwórz folder projektu
mkdir edit1 && cd edit1
# Utwórz package.json
cat > package.json << 'EOF'
{
"name": "edit1-visual-editor",
"version": "1.0.0",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"express": "^4.18.2",
"body-parser": "^1.20.2",
"cors": "^2.8.5"
}
}
EOF
# Utwórz Dockerfile
cat > Dockerfile << 'EOF'
FROM node:18-alpine
RUN apk add --no-cache git
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN mkdir -p /app/data
EXPOSE 3001
CMD ["npm", "start"]
EOF
# Utwórz docker-compose.yml
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
edit1:
build: .
container_name: edit1-editor
ports:
- "3001:3001"
volumes:
- ./data:/app/data
- ./public:/app/public
restart: unless-stopped
EOF
# Utwórz skrypt uruchamiający
cat > edit1 << 'EOF'
#!/bin/bash
FILE=$1
if [ -z "$FILE" ]; then
echo "Usage: edit1 <filename.json|yaml|xml>"
exit 1
fi
docker-compose up -d --build
sleep 2
echo "Opening http://localhost:3001?file=$FILE"
open "http://localhost:3001?file=$FILE" 2>/dev/null || xdg-open "http://localhost:3001?file=$FILE" 2>/dev/null || echo "Open manually: http://localhost:3001?file=$FILE"
EOF
chmod +x edit1
# Skopiuj pliki server.js i public/index.html z artifactów powyżej
# Uruchom
./edit1 config.json
# Utwórz folder projektu
mkdir edit2 && cd edit2
# Utwórz requirements.txt
cat > requirements.txt << 'EOF'
Flask==2.3.3
Flask-CORS==4.0.0
PyYAML==6.0.1
EOF
# Utwórz Dockerfile
cat > Dockerfile << 'EOF'
FROM python:3.11-slim
RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN mkdir -p /app/data
EXPOSE 3002
CMD ["python", "app.py"]
EOF
# Skopiuj app.py i templates/index.html z artifactów
# Uruchom
docker build -t edit2 .
docker run -d -p 3002:3002 -v $(pwd)/data:/app/data edit2
# Utwórz folder projektu
mkdir edit3 && cd edit3
# Utwórz go.mod
cat > go.mod << 'EOF'
module edit3
go 1.21
require (
github.com/gin-gonic/gin v1.9.1
github.com/gin-contrib/cors v1.4.0
gopkg.in/yaml.v3 v3.0.1
)
EOF
# Utwórz Dockerfile
cat > Dockerfile << 'EOF'
FROM golang:1.21-alpine AS builder
RUN apk add --no-cache git
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o edit3 .
FROM alpine:latest
RUN apk --no-cache add ca-certificates git
WORKDIR /app
COPY --from=builder /app/edit3 .
COPY --from=builder /app/static ./static
RUN mkdir -p /app/data
EXPOSE 3003
CMD ["./edit3"]
EOF
# Skopiuj main.go i static/index.html z artifactów
# Uruchom
docker build -t edit3 .
docker run -d -p 3003:3003 -v $(pwd)/data:/app/data edit3
✅ Edycja wizualna i tekstowa jednocześnie ✅ Kolorowanie składni ✅ Automatyczne zapisywanie do Git ✅ Historia wersji z możliwością przywracania ✅ Walidacja formatów przed zapisem ✅ Docker dla łatwego deploymentu ✅ Brak konieczności konfiguracji
# Dla każdego edytora:
edit1 config.yaml # Node.js (port 3001)
edit2 data.json # Python (port 3002)
edit3 settings.xml # Go (port 3003)
# Pliki są automatycznie:
# - Tworzone jeśli nie istnieją
# - Wersjonowane w Git
# - Zapisywane w folderze ./data
- Instalacja globalna (dla Edit1):
npm install -g edit1-visual-editor
edit1 myfile.json
- Aliasy w ~/.bashrc:
alias edit-json='edit1'
alias edit-yaml='edit1'
alias edit-xml='edit1'
- Integracja z VS Code:
{
"terminal.integrated.commandsToSkipShell": ["edit1", "edit2", "edit3"]
}
Wybierz Edit1 (Node.js) jeśli chcesz najłatwiejsze rozwiązanie z najlepszym edytorem wizualnym! 🚀