是否可以在没有相对路径的情况下从项目目录外部要求模块?

时间:2016-03-10 23:52:06

标签: javascript node.js gulp require

我正在尝试构建一个在Node项目中使用的JS模块的本地库。

如果新项目位于foo.cpp且我的库文件位于/Users/me/projects/path/to/new/project/,是否有办法在不使用相对路径的情况下访问这些文件?

/Users/me/projects/library/*.js中你可以像这样要求foo.js:

/Users/me/projects/path/to/new/project/app.js这会有效,但这很笨拙,如果文件移动,您必须更新相对路径。

我已经尝试requireFromapp-module-path而没有运气,因为它们与项目根目录相关。

有关如何从项目外部请求文件的任何想法dir?

提前致谢!

2 个答案:

答案 0 :(得分:1)

var librarypath = '/Users/me/projects/library/';
// or if you prefer...
// var librarypath = '../../../../../library/';
var foo = require(librarypath + 'foo.js');

......还是打扮得更多......

function requirelib(lib){ return require('/Users/me/projects/library/'+lib+'.js'); }
var foo = requirelib('foo');
var bar = requirelib('bar');

答案 1 :(得分:0)

我有多次相同的问题。这可以通过使用basetag npm软件包来解决。它本身并不需要,仅需安装即可,因为它会在node_modules内部创建指向您的基本路径的符号链接。

const localFile = require('$/local/file')
// instead of
const localFile = require('../../local/file')

使用$/...前缀将始终引用相对于应用程序根目录的文件。

Disclaimer: I created basetag to solve this problem