首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引用相对文件的最快方法

问引用相对文件的最快方法
EN

Stack Overflow用户
提问于 2020-02-14 02:54:22
回答 1查看 44关注 0票数 1

假设您有一个相对文件引用(例如使用JS ):

代码语言:javascript
复制
const db = require('../../models/index');

在大型项目中,定位必要依赖项的相对路径是很麻烦的。有没有一个很棒的文本插件或者更好的方式来引用相对依赖关系,而不需要手动找出路径?

EN

回答 1

Stack Overflow用户

发布于 2020-02-15 02:03:33

由于您没有使用babel,因此我可能会使用以下内容:

代码语言:javascript
复制
const $path = require('path');
const rxTilde = /^~\/?/;
const rxDollar = /^\$(\w+)\/(.*)/;

global.requirex = path => {
  let finalPath = path; // default to entered path
  const rpath = $path.dirname(require.main.filename); // get path of main/root module
  if (rxTilde.test(path)) finalPath = $path.join(rpath, path.replace(rxTilde, '')); // use ~ tilde as "rooted" path
  else if (rxDollar.test(path)) { // use $name for special aliases
    const [, dpath, endPath] = rxDollar.exec(path);
    if (dpath === 'asdf') finalPath = $path.join(rpath, 'my/special/path', endPath);
  }
  // console.log(finalPath);
  return require(finalPath);
};

// run from directory: /home/user/www/test/
const a1 = requirex('~/my/path/to/module');
//>> /home/user/www/test/my/path/to/module
const a2 = requirex('$asdf/other-module');
//>> /home/user/www/test/my/special/path/other-module

没有特殊处理别名的常规路径应该直接“落入”常规require而无需修改。

另外,我不想覆盖内置的require,这就是为什么我创建了一个全局requirex。理论上你可以重写,but...yikes。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60214694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档