Я создаю приложение CLI в NodeJS, и пакет будет опубликован в NPM. Приложение очень простое, так как в нем всего два файла. Вот структура приложения:
package.json
{
"name": "mycliapp",
"version": "1.0.0",
"description": "Some description",
"main": "./bin/cli.js",
"preferGlobal": true,
"bin": {
"mycliapp": "bin/cli.js"
},
}
бен / cli.js
const nodePlop = require('node-plop');
const configPath = './bin/config.js';
const plop = nodePlop(configPath, {
force: argv.force || argv.f
});
бен / config.js
{
// some configuration
}
Теперь, если я создаю символическую ссылку с npm install -g
из этого каталога и запускаю команду mycliapp
из того же каталога разработки, она работает абсолютно нормально, но если я запускаю эту команду mycliapp
из любого другого каталога на моем компьютере, const configPath = './bin/config.js'
пытаются получить из текущего рабочего каталога, а не из фактического пакета npm, и, следовательно, файл конфигурации не найден.
Как я могу решить эту проблему? Я пытался использовать __dirname
и __filename
с path.join
, но, похоже, ничего не работает.
Я также опубликовал этот пакет на npm и установил оттуда, возникает та же проблема.