UNPKG

builder-isv

Version:

ISV 模块本地预览与云构建器

52 lines (42 loc) 1.09 kB
/** * @author 龙喜<xiaolong.lxl@alibaba-inc.com> * @description 模块工厂 */ 'use strict'; const fs = require('fs'); const path = require('path'); const config = require('../config'); const Base = require('./base'); const Module = require('./module'); let singleton; module.exports = class ModuleFactory { constructor() { if (singleton) { return singleton; } singleton = this; /** * 模块 基于内存的 K-V store 缓存 :) * @type {Object} {'type/name': 1} */ this.moduleCache = {}; } /** * 模块实例 * @param type * @param name * @param inputDir 当调用类型为 INVOKE_TYPE_BUILD 需传递此项 * @returns {*} */ getModule(type, name, inputDir) { let module = this.moduleCache[`${type}/${name}`]; if (!module) { if (inputDir) { module = this.moduleCache[`${type}/${name}`] = new Module(inputDir, type, name, Base.INVOKE_TYPE_BUILD); } else { module = this.moduleCache[`${type}/${name}`] = new Module(null, type, name); } } return module; } };