node.js - 引用相对文件的最快方法

标签 node.js sublimetext3 sublimetext2 sublimetext sublime-text-plugin

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

const db = require('../../models/index');

在大型项目中,定位必要依赖项的相对路径很麻烦。是否有 Sublime Text 插件或首选方法来引用相对依赖项而无需手动找出路径?

最佳答案

既然你没有使用 babel,我可能会选择这样的东西:

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 。理论上你可能可以覆盖,但是......哎呀。

关于node.js - 引用相对文件的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60214694/

相关文章:

css - 带有片段的 Sublime Text 换行选择

javascript - 在 Sublime Text 2 上切换 Node 构建窗口

javascript - Windows 上 package.json 中位于外部的 'npm run' 脚本?

javascript - 循环遍历在 it block 中创建的数组

javascript - 如何在 NodeJS 中测试递归调用的函数?

sublimetext - 如何在Sublime Text中将终端颜色代码查看为颜色

text - 如何选择光标前的所有文本?

Git 在 Windows 中打开 Sublime

python - Sublime Text 2 - 无法运行带有空格和引号的 Windows 命令

javascript - 如何在 Knex JS 中使用 IS NOT NULL