@antora/user-require-帮助者
一个节点(Node.js)模块,提供帮助功能,解决与指定上下文相关的模块名称或路径,并要求其(使用) userRequire)或返回(使用 userRequire.resolve) (中文(简体) ).
扩展路径是系统依赖的.
开发用于安多拉.
此功能的目的是需要用户环境的JavaScript模块(指定为模块名称或路径请求).
这个 require 函数在Node.js中解析调用脚本环境中的模块名称和路径(即应用程序代码).
这意味着它不会在本地找到模块 节点( 模块) 文件夹(除非调用脚本也位于该文件夹内)或本地相对路径.
这个假设不适合用户提供的代码.
使用 require.resolve,而这正是这个帮助者所封装的功能.
以行为为基础 require.resolve,此函数的荣誉前缀为 @antora/ 扩展路径帮助器 模块,将请求的模块名称或路径定位到请求中指定的已解决上下文.
见 使用量 用于实例.
例如 .: 或者说 ./ 前缀将针对指定的点参数分别查找模块名称或路径.
如果未指定上下文,且请求参数是一个模块名称,此函数将使用解析参数指定的函数(默认为内置) require.resolve 如果指定,则与路径参数一起.
换句话说,如果给出了光模块名,帮助者会解决模块相对于指定路径,如果指定的话,否则会与调用脚本的环境相干(从而忽略了基和点参数).
函数检查请求参数以区分模块名称和路径.
如果请求参数有文件扩展名, 则以路径解决 .
此外,如果请求的论据以点开头(./)或点点(../) 段并不含结肠(:)作为一条道路解决, 即使它没有文件扩展名。 。 。 .
否则,它就成了一个模块名称.
人口贩运
如果请求是一个包含文件扩展名的模块名称(例如, highlight.js),附件 / 以迫使它被当作一个模块名称(例如, highlight.js/) (中文(简体) ).
安装
$ npm i @antora/user-require-helper
API 密码
function userRequire (id[, context])
使用 userRequire.resolve 并且需要它.
如果无法在本地文件系统中找到已解析的模块名称或路径,则错误带有 MODULE_NOT_FOUND 代码被丢弃.
request< string> - 要解决的模块名称或路径. 此参数是必需的, 且不能为空 .context<Object> - 控制如何解决请求的命名参数. 所有被命名的参数都是可选的. 默认 :{}。 。 。 .base< string> - 用来解决相对模块名称或路径的基础目录. 传入expandPath,指定默认值~+。 。 。 . 默认 :~+。 。 。 .cwd< string> - 要用作工作目录而不是当前工作目录的绝对目录. 传入expandPath,它将当前工作目录指定为默认值. 默认 :process.cwd()。 。 。 .dot< 字符串 > - 用于替换主要点的目录( X).) 模块名称或路径中的段. 传入expandPath,指定默认值.。 。 。 . 默认 :.。 。 。 .paths< 字符串[ ] > - 传递到require.resolve当指定了空模块名称时. 如果此参数为空, 则没有路径传递到require.resolve(这意味着它使用内置路径). 默认 :[]。 。 。 .context.resolve< 功能> - 用于解决模块名称或路径请求的解析函数. 内置默认值require.resolve函数. 默认 :require.resolve。 。 。 .
function userRequire.resolve (request[, context])
确定与指定上下文相关的模块名称或路径并返回.
如果无法在本地文件系统中找到已解析的模块名称或路径, 编码错误 MODULE_NOT_FOUND 被抛出.
见 userRequire 用于描述参数.
使用量
用户要求. resolve
这个 userRequire.resolve 函数返回一个系统依赖的路径.
在此显示使用Unix类操作系统时的结果 .
const userRequire = require('@antora/user-require-helper')
// request is a path
userRequire.resolve('/foo/bar.js')
//=> /foo/bar.js
userRequire.resolve('~/foo/bar.js')
//=> $HOME/foo/bar.js
userRequire.resolve('foo/bar.js')
//=> $PWD/foo/bar.js
userRequire.resolve('foo/bar.js', { base: '/base/dir' })
//=> /base/dir/foo/bar.js
userRequire.resolve('./foo/bar.js')
//=> $PWD/foo/bar.js
userRequire.resolve('./foo/bar.js', { dot: '/dot/dir' })
//=> /dot/dir/foo/bar.js
userRequire.resolve('~+/foo/bar.js')
//=> $PWD/foo/bar.js
// request is a module name
userRequire.resolve('/path/to/node_modules/foo-bar')
//=> /path/to/node_modules/foo-bar/main.js
userRequire.resolve('foo-bar')
//=> /calling/script/dir/node_modules/foo-bar/main.js
userRequire.resolve('foo-bar', { paths: ['/other/dir'] })
//=> /other/dir/node_modules/foo-bar/main.js
userRequire.resolve('^:foo-bar')
//=> /calling/script/dir/node_modules/foo-bar/main.js
userRequire.resolve('^:foo-bar', { paths: ['/other/dir'] })
//=> /calling/script/dir/node_modules/foo-bar/main.js
userRequire.resolve(':foo-bar')
//=> $PWD/node_modules/foo-bar/main.js
userRequire.resolve(':foo-bar', { base: '/base/dir' })
//=> /base/dir/node_modules/foo-bar/main.js
userRequire.resolve('.:foo-bar')
//=> $PWD/node_modules/foo-bar/main.js
userRequire.resolve('.:foo-bar', { dot: '/dot/dir' })
//=> /dot/dir/node_modules/foo-bar/main.js
userRequire.resolve('./subdir:foo-bar', { dot: '/dot/dir' })
//=> /dot/dir/subdir/node_modules/foo-bar/main.js
userRequire.resolve('~+:foo-bar')
//=> $PWD/node_modules/foo-bar/main.js
userRequire.resolve('foo-bar.js/')
//=> /calling/script/dir/node_modules/foo-bar.js/main.js
用户要求
用途 userRequire.resolve 以解析路径,并通过要求返回该路径导出的对象.
const userRequire = require('@antora/user-require-helper')
const exportedObject = userRequire('./foo/bar.js', { dot: '/dot/dir' })
版权和许可证
版权 (C) 2021年-由OpenDevise Inc. 和为Antora的个人贡献者所出.
该软件的使用按照下列规定进行: Mozilla 公共许可版本 2.0 (MPL-2.0) (中文(简体) ).