Локальный сервер из папки в Windows на GO

Локальный сервер из папки в Windows на GO

Небольшой сервер для хостинга локальных файлов в localhost.

Понадобилось на днях запустить приложение в разработке на локальной Windows машине без каких либо инструментов разработчика.

Сначала сделал PowerShell скрипт. Проблема в том, что для его запуска нужны разрешения на запуск скрптов. В системе обычного юзера который не понимает что и зачем, я бы такого делать не рекомендовал. Но, как временное решение, прокатило.

В итоге, решил поискать маленький локальный сервер на GO.

Расписывать особо нечего просто вот код:

package main

import (
	"flag"
	"fmt"
	"log"
	"net/http"
)

func main() {
	portPtr := flag.Int("port", 3000, "port number")
	dirPtr := flag.String("dir", ".", "directory")
	flag.Parse()

	listenPar := fmt.Sprintf(":%d", *portPtr)

	fs := http.FileServer(http.Dir(*dirPtr))
	http.Handle("/", fs)

	log.Println(fmt.Sprintf("Serving directory '%s' on port %d", *dirPtr, *portPtr))
	http.ListenAndServe(listenPar, nil)
}

Репозиторий автора:

GitHub - hatorikibble/dirserv: small webserver for serving directories written in go
small webserver for serving directories written in go - GitHub - hatorikibble/dirserv: small webserver for serving directories written in go

Написал к нему небольшой скрипт для сборки на bash. Настроил сборку так, что при запуске билда приложения, одновременно запускается и этот скрипт, который собирает данный сервер для 3 ОС: Windows, Linux, MacOS:

#!/bin/bash

## IMPORTANT: Do not run this script directly. Use the build.sh script in the root of the project.

TARGETS="linux darwin windows"
ARCHS="amd64"
DIR="$(pwd)"
mkdir -p $DIR/dist

# Build the server for each target
for target in $TARGETS; do
    for arch in $ARCHS; do
        echo "Building $target/$arch"
        if [ "$target" == "windows" ]; then
            ext=".exe"
        else
            ext=""
        fi
        GOOS=$target GOARCH=$arch go build -o $DIR/dist/SERVER-$target-$arch$ext $DIR/dirserver/dirserver.go
    done
done

Теги: bash, Go, Vue

Комментарии ()