Работа с включением модулей в моих проектах NodeJS Я всегда немного затрудняюсь с указанием путей к файлам других модулей проекта, которые требуются.
Я, очевидно, использую относительные пути. Но это подразумевает выполнение таких вещей, как:
const helper = require("../../lib/util/helpers.js
Это имеет некоторые недостатки:
Мне всегда нужно учитывать, где находится файл, из которого мне требуется другой модуль.
По мере роста проекта мне иногда приходится перемещать некоторые файлы в другое место из-за реструктуризации проекта, поэтому мне нужно просматривать не только пути к файлам, требующим его, но также и пути всех модулей, которые требуются в файле, которым я являюсь перемещение.
Я всегда думал, что было бы намного яснее, если бы я мог указать пути относительно корня проекта вместо самого файла. Для ясности, именно здесь находится мой файл package.json
(или каталог node_modules
).
Я знаю, что могу определить путь к любому внешнему модулю, используя require.resolve()
, и хотя я мог бы сделать что-то вроде path.dirname(path.dirname(path.dirname(require.resolve('express'))))
, но мне он кажется слишком грязным.
К сожалению, насколько мне известно, не существует никакого свойства require.modules_path
или require.projectRoot
, поэтому мне нужно полагаться на какой-то трюк, подобный тому, который я упомянул выше, или обход всего дерева до первого родительского каталога, содержащего package.json
файл.
У меня вопрос: есть ли лучшее решение, которого мне не хватает?