Я запускаю npm install
из корневую папку моего образца проекта для ее создания с использованием сценариев в package.json
.
В сборке требуется несколько шагов транспиляции в настоящее время в prepublish
script, но версия npm версии 4 отображает предупреждение о том, что происходит изменение прерывания, что заставило меня поверить в новый prepare
событие сборки script - более надежное будущее.
C:\code\antlr4ts-json>npm install
npm WARN prepublish-on-install As of [email protected], `prepublish` scripts will run only for `npm publish`.
npm WARN prepublish-on-install (In [email protected] and previous versions, it also runs for `npm install`.)
npm WARN prepublish-on-install See the deprecation note in `npm help scripts` for more information.
...
К сожалению, просто перемещение script от prepublish
до prepare
прерывает обратную совместимость: если кто-то запускает npm install
с помощью [email protected]
, шаги сборки в prepare
молча игнорируются.
Что лучше всего подходит для обновления моего времени сборки script? В идеале я хотел бы обновить свой package.json
, чтобы npm install
работал для любого npm @ >= 3, но в качестве альтернативы генерирует ясное сообщение об ошибке, указывающее, что npm @ >= 4 требуется при запуске npm install
с использованием npm @3.
Bakground: Я пытался включить
"engines": { "npm": ">=4.0.0" },
Благодаря @toomuchdesign (и другим), я понимаю, почему это не делает то, что я хочу; engines
проверяет только, когда мой пакет установлен как зависимость, а не кто-то создает его из источников. Это имеет смысл.
Я отслеживал предысторию этого запланированного изменения до npm issue # 10074, что объясняет, почему необходимо изменить разрыв. Однако я все еще не понимаю, как лучше справляться с переходом.