2016-08-09 4 views
1

Я пишу модуль будет будет выполняться из свойства «сценариев», как это:Есть ли способ получить свойства package.json в модуле, запущенном с npm?

"scripts": { 
    "runMyModule": "mymodule -stuff stuff" 
} 

ПРИМЕЧАНИЕ: Это не package.json моего модуля. Это package.json пользователь использует для запуска npm.

Я хочу, чтобы дать им возможность добавить свойство к этому основному package.json файл (который в командной строке они выполняются с помощью npm run runMyModule), который мой модуль будет читать. Это возможно?

Я хочу что-то вроде:

"forMyModule": { 
    stuff: [ 
     "one", 
     "two" 
    ] 
}, 

"scripts": { 
    "runMyModule": "mymodule -stuff stuff" 
} 

Возможно ли в моем модуле, чтобы получить forMyModule.stuff?

Я создал файлы index.js и bin/mymodule.js.

ответ

2

Найти корневой путь проекта, который использует ваш модуль. Есть несколько способов сделать это, каждый из которых имеет свои плюсы и минусы: Determine project root from a running node.js application

Как только у вас есть этот путь, вы можете просто require(path.join([rootPath, 'package.json'])) и проверить содержимое, чтобы найти настройки.

+0

Спасибо. Я использовал ссылку и ваш предложенный код для использования 'var settings = require (process.cwd() +" /package.json "); –

0

Возможно, вам понравится эта работа?

var pjson = require('../package.json'); 
console.log(pjson.forMyModule); 
+0

Будет ли это работать, даже если оно установлено по всему миру? –

+0

Я так считаю? Глобально установленные модули имеют одинаковый макет каталога внутри каталога node_modules /, только с другим префиксом пути (глобального). –