Как изменить «node_module», написанный в машинописном виде?

#typescript #debugging #node-modules

Вопрос:

Мне нужно отладить библиотеку, в которой я использую node_modules . К сожалению, библиотека написана на машинописном языке. Как я должен принудительно перекомпилировать отредактированный мной код машинописи?

К вашему сведению: Библиотека находится https://www.npmjs.com/package/hardhat.

Ответ №1:

Когда вы устанавливаете пакет NPM, он уже собран и скомпилирован в JavaScript.

Некоторые .ts файлы все еще могут быть видны, но нет никакой гарантии, что вы сможете перекомпилировать их без проблем, поскольку они могут зависеть от конфигураций, отсутствующих в этой сборке.

Вы можете сделать несколько вещей:

Во-первых, вы можете попробовать использовать свой отладчик для установки точек останова в файлах машинописи. Если библиотека поставляется с исходными картами, это может сработать из коробки. С помощью отладчика вы можете просматривать или редактировать внутренние значения для отладки.

Во-вторых, вы можете напрямую редактировать скомпилированные .js файлы библиотеки. Если вам просто нужно изменить несколько мелких вещей, обычно это самый простой способ, если .js только файлы не были уменьшены.

В-третьих, вы можете попытаться перекомпилировать его. Бежать npm install -g typescript . Затем найдите папку внутри папки библиотеки, содержащую tsconfig.json файл, и откройте в ней терминал/cmd. Выполните команду tsc или npx tsc . В качестве альтернативы добавьте -w флаг, чтобы он перекомпилировался при изменении файлов. Вы можете увидеть множество опечаток, но они не мешают компилятору компилироваться. Нет никакой гарантии, что это сработает.

В-четвертых, вы можете ознакомиться с документами сопровождающего о том, как вручную создать библиотеку с нуля. Это «правильный» способ, но он может занять очень много времени, если вы хотите только очень быстро что-то протестировать.

Комментарии:

1. И если вы выберете четвертый вариант, вы также можете использовать npm link отредактированный пакет в качестве зависимости.

2. Подход npm link здесь не сработал. После связывания в моей папке node_modules по-прежнему отсутствует символическая ссылка на пакет «hardhat».