1. Предпосылки
При разработке приложений для узлов нам неизбежно нужно использовать или разбивать модули npm.Одна из проблем, с которыми мы часто сталкиваемся:
Как экспериментировать с недавно разработанными или модифицированными модулями npm в проекте?
У новых студентов обычно есть следующие методы:
Для демонстрации предположим, что проектmy-project
, требует использования отдельногоmy-utils
модуль
1.1 Выпустить бета-версию
- Плюсы: Вы довольны идти.
- недостаток:Скучно + скучно + скучно, беда + беда + беда.
1.2 Установить напрямую с относительным путем
$ cd path/to/my-project
$ npm install path/to/my-utils
- Плюсы: Просто и понятно
- недостаток:В процессе отладки часто требуется тонкая настройка, в это время необходимо переключиться в каталог my-utils для модификации, а затем несколько раз переустановить его, что очень хлопотно.
1.3 Использование мягких цепей
$ cd path/to/my-project/node_modules
$ ln -s path/to/my-utils my-utils
- Преимущества: После мягкой цепи модификации с обеих сторон напрямую синхронизируются.
- недостаток:Работа с командой хлопотная, а синтаксис разных операционных систем разный
2. Положительное решение - ссылка npm
Но на самом деле сам npm предусмотрел особый случай для такого рода ситуаций.npm link
инструкция.
Связанные документы:docs.npmjs.com/cli/link
Ниже мы кратко представим использование:
$ cd path/to/my-project
$ npm link path/to/my-utils
Просто замените слово, и все готово, круто~
Если два каталога не вместе, есть другой способ:
$ # 先去到模块目录,把它 link 到全局
$ cd path/to/my-utils
$ npm link
$
$ # 再去项目目录通过包名来 link
$ cd path/to/my-project
$ npm link my-utils
Эту команду также можно использовать для отладки модулей node cli, например, нам нужно отладить наш локальныйegg-init, ты можешь это сделать:
$ cd path/to/egg-init
$ npm link
$ # 此时全局的 egg-init 指令就已经指向你的本地开发目录了
$ egg-init # 即可
Удалить ссылку также очень просто:
$ npm unlink my-utils
3. Напишите в конце
- Этот метод предназначен только для последнего шага отладки, а правильность самого модуля должна быть больше гарантирована модульным тестированием.
- Содержимое, связанное с модульным тестированием, см. в следующих разделах:модульный тест