Node.js + Webpack + TypeScript: __dirname возвращает корень диска C

117
02 августа 2019, 23:00

Есть библиотека, которая разрабатывается по ходу, и основной проект, в котором эта библиотека используется. Допустим:

  • В библиотеке есть файл library.ts, его абсолютный путь - С:\Users\user1\projects\lib1\src\library.ts
  • Проект, в котором библиотека используется, имеет файл someProject.ts, абсолютный путь которого - C:\Users\user1\projects\someProject\src\someProject.ts

Библиотека написана на TypeScript и собирается Webpack-ом в JavaScript для исполнения в среде Node.js.

Нужно программно получить путь С:\Users\user1\projects\lib1\src в файле library.ts. Я уже решил эту задачу одним способом - через DefinePlugin, но мне не нравится, что в library.ts, __dirname возвращает лишь /. Из-за этого path.resolve(__dirname, 'fileName') даст C:\fileName.

Естественно, то я запускаю проект НЕ в корне диска C:

Answer 1

Для управления особыми переменными ноды у webpack есть специальная настройка в конфиге:

node: {
    __dirname: ...,
}

Как написано в документации, для __dirname существует три варианта:

  • "mock" (по умолчанию) - всегда используется "/";
  • true - используется относительный путь к директории, в которой лежит исходный файл (путь берется относительно настройки context);
  • false - используется путь к директории, в которой лежит выходной файл (на самом деле, webpack вообще не трогает эту переменную, и её обрабатывает нода - так что в браузере этот вариант не сработает).

Выбирайте вариант который вам подходит.

READ ALSO
Автонажатие TamperMonkey

Автонажатие TamperMonkey

Есть ссылка с классом button primary marginBlock _participateNow Есть код взятый с интернета

121
Почему не могу вызвать метод jQuery через $

Почему не могу вызвать метод jQuery через $

Всем привет! Обнаружил странную проблемуУ меня есть jQuery плагин, который подключается таким вот образом

120
Scroll постоянно приходится опускать вниз

Scroll постоянно приходится опускать вниз

Запуск страници, скрол внизуОтправил сообщение Клиент -> сервер-> клиент Скрол на месте сообщение внизу,не видно,приходится крутить скролл

97
Отправка писем по шаблону

Отправка писем по шаблону

Нужно мне решить задачу такуюНа сайте есть таблица, которая подгружается по ajax (офферы с данными) Нужно вытягивать с определенных div'ов переменные,...

99