
Research
/Security News
Fake imToken Chrome Extension Steals Seed Phrases via Phishing Redirects
Mixed-script homoglyphs and a lookalike domain mimic imToken’s import flow to capture mnemonics and private keys.
░█▀▄░▀█▀░█▀▀░█▀█░█▀▀░█▀█░█▀▀░█▀▀
░█░█░░█░░▀▀█░█▀▀░█▀▀░█░█░▀▀█░█▀▀
░▀▀░░▀▀▀░▀▀▀░▀░░░▀▀▀░▀░▀░▀▀▀░▀▀▀
Простой HTTP-сервер на Node.js + Express для быстрого поднятия локального сервера.
Основной кейс: есть папка public (или любая другая) — нужно быстро начать её раздавать.
CLI-команда: dispense run
# Глобально (удобно для быстрого использования везде)
npm install -g dispense
# Локально в проект (dev-зависимость)
npm install dispense
# Если установлен глобально
dispense run
# Если установлен локально
npx dispense run
dispense run [options]
-a, --api <path> путь до файла с вашим кастомным роутером для api (дефолтный для Express синтаксис)
-p, --port <number> порт (default 3000 или process.env.PORT)
-d, --public <path> папка со статикой (default ./public)
-nsh, --no-sec-headers отключить security-заголовки
-o, --origins <list> список origin для API CORS (separated by ,)
-h, --help показать помощь
# По умолчанию
dispense run # раздаёт ./public
# Другая папка
dispense run --public ./dist
# Порт 4000, статика из ./your-dir
dispense run --port 4000 --public ./your-dir
# Без security-заголовков
dispense run --no-sec-headers
# Явный список origin для /api
dispense run --allowed-origins http://localhost:3000,https://example.com
# Важно: путь считается от текущей директории, где вы запускаете команду
cd /path/to/project
dispense run --public ./build
По умолчанию dispense использует встроенный роутер под /api.
Можно передать свой роутер (файл/папку), который экспортирует Express Router:
// custom-api-router.js
import { Router } from 'express';
const router = Router({ mergeParams: true });
router.get('/ping', (req, res) => {
res.json({ ok: true });
});
export default router;
Запуск с кастомным роутером:
dispense run --api-router ./custom-api-router.js
Путь считается от текущей рабочей директории.
# Если не указывать --port, берётся PORT или 3000
PORT=8080 dispense run
# Можно комбинировать с другими параметрами
PORT=5000 dispense run --public ./Public
# Установка (если ещё нет)
npm install -g pm2 dispense
# Запуск
pm2 start dispense --name dev-server -- run --port 3000 --public ./Public
# Управление
pm2 restart dispense
pm2 stop dispense
pm2 delete dispense
Корректно обрабатываются SIGINT, SIGTERM и shutdown от PM2 (graceful shutdown).
# После клонирования репо
npm install
npm start # эквивалентно: node ./bin/run.js run
npx dispense # при установке из репо - тоже работает
# Ручной запуск с параметрами
node ./bin/run.js run --port 4000 --public ./Public
server.js — создание и запуск Express-сервера (createServer, startServer).bin/run.js — CLI-обвязка (команда server).public/* — Раздача статики + роутер фронтенда/api.middlewares - примитивная проверка клиента и basicAuth (при установке из NPM недоступно)CORS + security-заголовки (можно выключить).MIT
FAQs
NodeJS server with express boilerplate
We found that dispense demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
Mixed-script homoglyphs and a lookalike domain mimic imToken’s import flow to capture mnemonics and private keys.

Security News
Latio’s 2026 report recognizes Socket as a Supply Chain Innovator and highlights our work in 0-day malware detection, SCA, and auto-patching.

Company News
Join Socket for live demos, rooftop happy hours, and one-on-one meetings during BSidesSF and RSA 2026 in San Francisco.