Есть ли лучший способ передать местоположение папки в мой пакет npm? - PullRequest
0 голосов
/ 30 марта 2019

Я публикую свой собственный пакет npm, в настоящее время он работает точно так, как задумано. Однако я чувствую, что есть лучший способ передать пути к папкам в модуль.

В настоящее время в моем модуле есть несколько путей к файлам, записанных как ../../../views и т. Д. *

Я не хочу включать их таким образом, кто-то предложил использовать обратные вызовы, но я не совсем уверен, как их интегрировать с моим модулем.

Это мой файл index.js.

const Koa = require('koa');
app = new Koa();
autorouter = require('./autorouter.js');

app.use(autorouter);
module.exports = function autoroute(){
    return app;
}

А это файл "авторутер"

const send = require('koa-send'),
  fs = require('fs'),
  render = require('koa-ejs'),
  path = require('path'),
  run = require('../../../run.js');

const publicFolder =  path.join(__dirname, '../../../public');
const viewsFolder =  path.join(__dirname, '../../../views');

render(app, {
  root: viewsFolder,
  layout: false,
  viewExt: 'html',
  cache: false,
  debug: false
});

autorouter = async (ctx) => {

  if (!(ctx.path.includes('.'))) {
    if (ctx.path.length == 1) {
      await ctx.render('index', await run('index', ctx));

    } else {
      if (!(pageExists(ctx.path + '.html'))) {
        await ctx.render('404');
      } else {
        await ctx.render(ctx.path.substr(1), await run(ctx.path));
      }
    }
  } else {

    await send(ctx, ctx.path, {
      root: publicFolder
    });
  }

}

module.exports = autorouter;


pageExists = (page) => {
  return fs.existsSync(viewsFolder + page);
}

Любая помощь в адаптации этого к лучшей методологии будет принята с благодарностью.

...