Evgeny
а ты не знаешь как до корня добраться от текущего файла?
Ilia
Посоны, есть либа типо bottleneck, но с отсчетом таймаута от вызова колбека, а не от вызова функции?
Anonymous
Evgeny
о БОЖЕ! и что?
Sergey
то, что в ноде каждый файл это МОДУЛЬ!
Sergey
каждая директория с index.js файлом
тоже!
Anonymous
При этом неизвестно, из какого файла это нужно будет узнать.
Evgeny
о.О
Anonymous
Sergey
npm-пакет уж тогда
Anonymous
В моём случае.
Anonymous
Ну... Да.
Safort
http://www.opennet.ru/opennews/art.shtml?num=45283
Компания RethinkDB сворачивают лавочку. Надеюсь проект кто-нибудь подхватит.
Sergey
ты файлы по отдельности запускаешь или всегда из главного?
Safort
Да я вот тоже уже начал её прикручивать к пет прожекту..
Anonymous
Короче, это свойства INIT_CWD, PWD в объекте process.env.
Evgeny
чото мне кажется что ты не прав
Anonymous
Ну, пока их значения не меняются.
Sergey
Sergey
а не корень пакета
Anonymous
Неа.
Anonymous
Специально перешёл на каталог ниже.
Sergey
PWD - Print Working Directory
Anonymous
Ну... Да. Я так и ожидал.
Anonymous
Только по факту другое поведение увидел.
Sergey
это не корень)
Anonymous
Правда запускал через npm-скрипт.
Sergey
Anonymous
это не корень)
Но по факту он ссылается на корень npm-пакета.
Sergey
он ссылается туда
откуда ты запускаешь ноду
Sergey
запустишь из другого места
будет показывать туда
Sergey
если ты запускаешь приложение через условный app.js
то тебе это решит проблему
Sergey
а если ты будешь включать этот пакет в другое приложение
то process.env.PWD будет указывать на приложение, а не на пакет
Anonymous
Печаль.
Anonymous
Да, я уже проверил.
Anonymous
Так... INIT_CWD присутсвует только если я запускаю приложение через npm-скрипт.
Aleksey
Anonymous
Неа
Anonymous
Не то же.
Aleksey
я правда неочень понимаю что относительно чего ты разолвишь, но обычно для этого хватает методов из модуля path, либо require.resolve
Nikita
а что такое корень модуля?)
Anonymous
Суть в том, что мне нужен надёжный способ найти корень проекта.
Aleksey
process.cwd?
Aleksey
либо можешь привязаться к файлам через __dirname или __filename
Anonymous
Работает только если сам проект запускается из нужного места или через npm-script. Если же он подключен как модуль, то не подходит.
Aleksey
т.е. ты внутри модуля хочешь понять где находится корень проекта?
Nikita
да какой тебе файл надо получить-то?)
Anonymous
Aleksey
ну тогда __dirname
Aleksey
относительно него резолви путь до корня
Aleksey
самый надежный способ
Aleksey
да. ты же знаешь где на fs у тебя модуль лежит
Aleksey
в чем проблема то?
Anonymous
Не знаю. Модуль может быть запущен кем угодно и откуда угодно.
Aleksey
я уже понял, что у тебя какой-то костыль
Aleksey
но есть еще module.parent
Aleksey
выдает инфу о родительском модуле из которого загрузили твой
Anonymous
Не подходит.
Aleksey
https://nodejs.org/dist/latest-v6.x/docs/api/modules.html#modules_module_parent
Aleksey
тебе не угодишь :)
Nikita
ты четко объяснить можешь, чего хочешь?))
Aleksey
в целом, это стандартные способы для определения пути
Aleksey
может ты к задаче неправильно подходишь?
Anonymous
Есть файл /unknown/path/to/project/.../.../file.js. Внутри file.js нужно получить /unknown/path/to/project.
Evgeny
так до проекта или до модуля?
Nikita
а как этот файл запускают?
Anonymous
До npm-пекта == до проекта.
Nikita
это cli тулза?
Anonymous
Файл выполняется как модуль внутри проекта. Сам проект тоже выполняется как модуль в качестве npm-пакета.
Anonymous
Самый простой способ вижу — подниматься по файловому пути и искать package.json;
Anonymous
Пока что.
Aleksey
может тебе наоборот пробросить этот путь внутрь?
Aleksey
сделай в package.json скрипт для надежности, который и будешь запускать
Anonymous
Это костыльнее предыдущего варианта. =)
Anonymous
Его никто не будет запускать. Он же npm-пакет.
Aleksey
ну как я понял у тебя схема такая, ты непонятно откуда запускаешь зависимость проекта и хочешь внутри зависимости получить путь к проекту
Anonymous
Бинго. =)
Aleksey
ну так сделай промежуточный шаг с npm скриптом
Evgeny
а как вызывается твой модуль?