FROM node:20-slim # Install build dependencies RUN apt-get update && apt-get install -y \ git \ python3 \ cmake \ build-essential \ curl \ wget \ ca-certificates \ xz-utils \ && rm -rf /var/lib/apt/lists/* # Set toolchain paths ENV INSTALL_BASE=/opt/wasm-toolchains ENV EMSDK_PATH=/opt/wasm-toolchains/emsdk ENV SWIFTWASM_PATH=/opt/wasm-toolchains/swiftwasm # --- Install Emscripten --- RUN mkdir -p ${INSTALL_BASE} && \ git clone https://github.com/emscripten-core/emsdk.git ${EMSDK_PATH} && \ cd ${EMSDK_PATH} && \ ./emsdk install latest && \ ./emsdk activate latest # --- Install SwiftWasm (Linux x86_64) --- RUN mkdir -p ${SWIFTWASM_PATH} && \ SWIFTWASM_VERSION="swift-wasm-5.10-SNAPSHOT-2023-11-02-a" && \ SWIFTWASM_TARBALL="${SWIFTWASM_VERSION}-ubuntu22.04_x86_64.tar.gz" && \ SWIFTWASM_URL="https://github.com/swiftwasm/swift/releases/download/${SWIFTWASM_VERSION}/${SWIFTWASM_TARBALL}" && \ cd /tmp && \ curl -L -o "${SWIFTWASM_TARBALL}" "${SWIFTWASM_URL}" && \ tar xzf "${SWIFTWASM_TARBALL}" -C ${SWIFTWASM_PATH} --strip-components=1 && \ rm -f "${SWIFTWASM_TARBALL}" # Set up app WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # HF Space default port is 7860, but we accept PORT env EXPOSE 7860 ENV PORT=7860 CMD ["node", "dist/server.js"]