Нам нужны твои мозги

Хотите расти как разработчик и найти крутую работу? Не протирайте штаны — займитесь Open Source проектами. Так легче всего попасть в лучшие команды разработчиков и положить себе в резюме настоящий проект, вместо нелепых «примеров кода». Но найти подходящий проект для участия сложно. Начинаются лень и отговорки, а за ними — отсутствие профессионального роста, критики по-настоящему крутых программистов, уныние и застой.

На Cult of Martians мы собираем интересные задачи для современных веб-программистов. Можно выбрать подходящую по сложности, продолжительности и специализации. Задачи не выдуманы «из воздуха» — каждая решает насущную проблему, и решить ее можно через создание нового Open Source проекта или улучшение существующего. Решайте задачи, прокачивайтесь, присылайте решение на оценку. Лучших могут пригласить к себе на работу компании, программистам которых понравится ваше решение.

Фронт: Минималистичный npm-пакет для установки precommit-хука

Для новичков, задача на неделю

В сообществе разработчиков есть много инструментов для установки Git-хуков. Хуже и лучше, медленнее и быстрее, некоторые с существенными ограничениями. Например, марсиане создали быстрый и фичастый Lefthook, который мы используем в коммерческих проектах, больших и маленьких.

Возникла идея создать альтернативу средству с максимальными возможностями: микро-менеджер Git-хуков, для «легких» frontend open source проектов. Под капотом — лишь запуск lint-staged. Без парсинга конфигов в рантайме, с минимумом или совсем без зависимостей и лишь парой дополнительных строк в package.json:

  "simple-pre-commit": "npx lint-staged",

Польза: внести вклад в дело уменьшения коллективного размера node_modules. Получить open source портфолио на Node.js.

  1. Изучить pre-commit, Lefthook, husky.
  2. Создать новый npm-проект.
  3. В postinstall скрипте найти package.json в process.cwd и проверить, что ваш проект есть в devDependencies (чтобы не запускаться при случайной установке во вложенных зависимостях).
  4. Если вы есть в devDependencies, то читать какое-то свойство с командой в package.json, создавать исполняемый скрипт в .git/hooks/pre-commit и прописывать туда указанную команду. Пусть при запуске хука будет запускаться сразу линтер, без траты времени на запуск вашего инструмента, разбор его конфигов и прочих тяжелых операций, свойственных популярным менеджерам git-хуков.
  5. Положить в npm-пакет CLI-скрипт для обновления pre-commit-хука при обновлении конфига в package.json. Можно оставить запуск этого CLI-скрипта ручным.
  6. Попробовать сделать все это с нулем или крайним минимум зависимостей.
  7. Не выкладывать проект, а сначала прислать Андрею Ситнику.