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

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

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

Фронт: Починить параллельное выполнение скриптов в pnpm

Для уверенных в себе, задача на неделю

pnpm умеет выполнять скрипты параллельно (и даже дает крутой UI для объединения вывода):

❯ pnpm test
> pnpm run --recursive --include-workspace-root /^test:/

Scope: all 2 workspace projects
. test:js$ eslint .
└─ Running...
. test:styles$ stylelint **/*.css **/*.svelte
└─ Done in 640ms
. test:types$ tsc --noEmit
└─ Done in 72ms
. test:audit$ pnpm audit --prod
│ No known vulnerabilities found
└─ Done in 3s1s
web test:run$ c8 pnpm unit
└─ Done in 3.6s
│ • • • •   (4 / 4)
└─ Done in 3.1s
web test:check$ svelte-check
│ svelte-check found 0 errors and 0 warnings
└─ Done in 1.7s

Этот инструмент создавался в основном с прицелом на запуск одной и той же задачи в нескольких проектах монорепозитория (аргумент --recursive). Однако, его можно использовать и в одном проекте (--parallel), запуская задачи через регулярные выражения (/^test:/).

Не работают две вещи:

Польза: строка в резюме с PR в популярный проект.

  1. Создайте тестовый проект с несколькими скриптами, которые можно запускать параллельно:

    {
     "scripts": {
       "test:a": "echo a",
       "test:b": "echo b",
       "test": "pnpm run --parallel /^test:/"
     }
    }
  2. Форкните pnpm.

  3. Создайте ветку.

  4. Изучите CONTRIBUTING.md, чтобы понять как запускать в консоли версию pnpm из репозитория.

  5. Найдите проверки аргументов с --parallel и уберите требование фильтра проектов для запуска вне монорепозитория.

  6. Проверьте, что теперь pnpm test в тестовом проекте работает, но печатает вывод, как в этом issue.

  7. Найдите способ включить красивый UI --recursive для --parallel (подумайте, можно ли включать его какой-то опцией, чтобы не создавать breaking changes — может быть, такая опция уже есть, просто не работает).

  8. Отправьте PR добавив cc @ai и fixes #6692 & fixes 3076 в описание. Не забудьте также заполнить описание — подробно написать, что вы сделали.