Проблемы с линтером темы на этапе «Установка JS-зависимостей»

Я скопировал [package.json](https://github.com/discourse/discourse-theme-skeleton/blob/main/package.json) из последней версии discourse-theme-skeleton/package.json at main · discourse/discourse-theme-skeleton · GitHub

Файл небольшой:

{
private: true,
devDependencies: {
@discourse/lint-configs: "2.21.0",
ember-template-lint: "7.7.0",
eslint: "9.27.0",
prettier: "3.5.3",
stylelint: "16.19.1"
},
engines: {
node: ">= 22",
npm: "please-use-pnpm",
yarn: "please-use-pnpm",
pnpm: "9.x"
},
packageManager: "pnpm@9.15.5"
}

Линтинг работает при моих попытках запустить “Right Stuff” локально, но в GitHub я получаю следующее:

Run yarn install --frozen-lockfile
error This project's package.json defines "packageManager": "yarn@pnpm@9.15.5". However the current global version of Yarn is 1.22.22.

Presence of the "packageManager" field indicates that the project is meant to be used with Corepack, a tool included by default with all official Node.js distributions starting from 16.9 and 14.19.
Corepack must currently be enabled by running corepack enable in your terminal. For more information, check out https://yarnpkg.com/corepack.

И это происходит на этапе “install JS Dependencies”, так что, казалось бы, проблема не в моих действиях?

Вот мой код: GitHub - pfaffman/discourse-custom-homepage-for-groups: Discourse theme component to change home page based on user's primary group · GitHub

Кстати, это выглядит как проблемный шаг?

Yarn вообще не должен запускаться?

(Кстати, разве не здорово, когда ты тратишь 15 минут на обновление репозитория, а потом какая-то мета-проблема занимает у тебя часы :sweat_smile: )

Вот в чём проблема:

Удали файл yarn.lock из репозитория, но оставь (и обнови!) файл pnpm-lock.yaml.

Бонусные баллы :sports_medal: В идеале это следовало сделать через PR, чтобы у тебя не падал CI на основной ветке.

Это правда. Я начинаю стараться помнить об этом; это пока просто не автоматизировано. Я делаю это примерно в 30% случаев. :slight_smile:


Теперь у меня вот что:

Run pnpm install --frozen-lockfile
 ERR_PNPM_LOCKFILE_CONFIG_MISMATCH  Cannot proceed with the frozen installation. The current "settings.autoInstallPeers" configuration doesn't match the value found in the lockfile

Update your lockfile using "pnpm install --no-frozen-lockfile"

Так что я сделал то, что мне сказали, и теперь получаю:

Run bundle install
Don't run Bundler as root. Installing your bundle as root will break this
application for all non-root users on this machine.
Could not locate Gemfile

Но когда я делаю это:

 (main *) pfaffman@noreno:~/src/pfaffman/discourse-custom-homepage-for-groups$ cp ~/src/discourse-repos/discourse-theme-skeleton/pnpm-lock.yaml .
 (main *) pfaffman@noreno:~/src/pfaffman/discourse-custom-homepage-for-groups$ git add pnpm-lock.yaml
 (main +) pfaffman@noreno:~/src/pfaffman/discourse-custom-homepage-for-groups$ git commit -m 'their pnpm lock'
[main e195a2e] their pnpm lock
 1 file changed, 1 insertion(+), 1 deletion(-)
 (main) pfaffman@noreno:~/src/pfaffman/discourse-custom-homepage-for-groups$ git push

и я уверен, что их репозиторий актуален.

Видите? И это даже напоминает мне, что я безответственно работаю в основной ветке.

Похоже, это просто устаревший файл pnpm-lock … выполните установку в этой директории.

Но когда я запустил pnpm install --no-frozen-lockfile и затем использовал новый файл блокировки, GitHub выдал ошибку bundler. Я должен иметь возможность использовать тот, что в discourse-theme-skeleton, верно?

Добавьте файл Gemfile

Погодите. Gemfile же для Ruby, верно?

Но вот тут:

pfaffman@noreno:~$ cd src/discourse-repos/discourse-theme-skeleton/
 (main) pfaffman@noreno:~/src/discourse-repos/discourse-theme-skeleton$ cp pnpm-lock.yaml  Gemfile.lock Gemfile package.json stylelint.config.mjs ~/src/pfaffman/discourse-custom-homepage-for-groups/

Это именно то, что нам нужно, верно? Оказалось, что stylelint.config.mjs устарел, так что это уже что-то.

В любом случае, у меня всё ещё есть ошибка:

 ERR_PNPM_LOCKFILE_CONFIG_MISMATCH  Cannot proceed with the frozen installation. The current "settings.autoInstallPeers" configuration doesn't match the value found in the lockfile

Кажется, он нужен для любых спецификаций, так как требуется скриптом CI.