Как получить рут проекта, в котором установлен мой модуль npm? - PullRequest
0 голосов
/ 26 мая 2018

Я разрабатываю пакет NPM.Теперь я хочу узнать самый простой способ получить рут проекта, который использует мой пользовательский пакет.

Внутри самого моего пакета довольно легко получить рут в файле node.js, например:

__dirname

Это указывает на корень самого моего пакета, хотя.Я хотел бы получить корень проекта, который фактически выполнил npm install моего пакета.

Очевидно, я мог бы просто подняться из каталога node_modules и предположить, что корневой каталог там есть, ноэто звучит очень плохо.

Есть ли стандартный способ добиться этого?

Ответы [ 3 ]

0 голосов
/ 26 мая 2018

вы можете использовать app-root-path , который является модулем npm и довольно красивым.

npm i -S app-root-path

после этого просто выполните

var reqlib = require('app-root-path').require;
var myModule = reqlib('/lib/my-module.js');
0 голосов
/ 19 июля 2019

ПОЦЕЛУЙ

const fullPath = path.dirname(require.main.filename);
const regexResp = /^(.*?)node_modules/.exec(fullPath);
const appRoot = regexResp ? regexResp[1] : fullPath;
console.log(appRoot); // outputs the directory which is the root of this project
0 голосов
/ 26 мая 2018

Вы можете использовать информацию из: require.main

Объект Module, представляющий скрипт входа, загруженный при запуске процесса Node.js.См. «Доступ к основному модулю».

const path = require('path');
console.log(path.dirname(require.main.filename));

Имея такую ​​структуру папок:

/app
  entry.js
  node_modules/
    my-package/
      index.js

app / entry.js

const myPackage = require('my-package');

app / node_modules / my-package / index.js

const path = require('path');
console.log(path.dirname(require.main.filename));

А при звонке: node entry.js

Вы получите: /app печатается на стандартный вывод.

...