【核心模块】 plover模块加载和解析器
const path = require('path');
const ModuleResolver = require('plover-module-resolver');
const options = {
development: true,
applicationRoot: path.resolve('./'),
libModulesDir: path.resolve('./node_modules'),
modulesDir: path.resolve('./modules')
};
const moduleResolver = new ModuleResolver(options);
console.log(moduleResolver.list()); // 模块列表
plover-module-resolver
先加载libModulesDir
目录下的plover库模块,然后再加载modulesDir
目录中的plover应用模块。
Note
某些情况下需要对库模块进行自定义,此时在modulesDir
中定义同名模块,plover-module-resolver
将会覆盖libModulesDir
中模块。
是否为开发模式,默认为非开发模式。
应用根目录。
plover库模块目录,默认为applicationRoot
应用根目录下的node_modules
目录。
在package.json
中定义了plover
信息的模块为plover库模块。
{
"name": "plover-xxx",
"version": "0.1.0",
"description": "xxx",
"plover": {
"plugin": "lib/plugin.js"
}
}
plover应用模块目录,默认为applicationRoot
应用根目录下的modules
目录。
返回模块列表。
加载模块信息。
moduleResolver.loadModule(path.resolve('./tempModules/test'));
name | description |
---|---|
path | 模块根目录 |
options | 配置可选项 |
- options配置可选项:
name | description |
---|---|
namespace | 匿名模块的名字空间 |
ensure | 是否校验模块package.json 中必须存在plover 配置 |
silent | 当解析模块不存在时,是否忽略,若为false ,系统将抛出异常 |
添加模块信息。
moduleResolver.pushModule({
name: 'test',
version: '0.0.1',
path: path.resolve('./tempModules/test'),
view: {
template: 'views/view.art',
js: 'js/view.js',
css: 'css/view.css'
},
// ...
});
name | description |
---|---|
info | 模块信息 |
返回指定名称的模块信息。在开发模式中每次都重新加载模块信息(隔间时间为3秒), 在生产环境时直接从缓冲中获取。
name | description |
---|---|
name | 模块名称 |
验证模块依赖是否兼容, 如果有问题则会抛出Error。若在package.json
的plover
中定义了dep
依赖模块信息,此时将会校验plover模块依赖的版本是否兼容。