@cubetool/base
v2.2.6
Published
开发者工具核心
Downloads
30
Readme
cubetool 开发者工具核心
cubetool 开发者工具核心模块,可集成到各应用场景进行 cube 项目开发管理。
使用示例
import cubeTool from '@cubetool/base';
const myCubeTool = cubeTool('myapp/v1', {
logPath: '/var/log/cubetool',
});
const {ENV, log, config, plugin, Project} = myCubeTool;
const cubeProject = new Project(process.cwd());
FUNCTION cubeTool(name, options)
- @param {string} name 应用名称标识,建议使用“名称/v版本形式”
- @param {object} options = {} 配置参数
- @return {object} result 返回结果
options 配置项
key | type | desc | defaul -|-|-|- spath | string | 项目配置目录 | $HOME/.cubetool pluginsPath| string | 插件安装目录 | $HOME/.cubetool/plugins logPath| string | log 目录 | $HOME/.cubetool/logs logPrint| bool | 是否打印日志 | false logLevel| string | 日志记录级别 | 'warn' plugins| array| 需要加载的插件,如不指定则加载所有已安装插件| undefined
日志级别支持:debug、info、notice、warn、error
result 返回值
object | desc -|- ENV | 运行环境常量 log | log 对象,使用参考 npmlog config | 配置对象 plugin | 插件实例 Project | 项目类
OBJECT ENV
提供运行环境相关常量信息。 属性 | 值说明 -|- ENV.APP_NAME | 应用名 ENV.SUPPORT_PATH | 项目配置目录 ENV.LOG_PATH | log 目录 ENV.PLUGINS_PATH | plugins 目录 ENV.LIB_ROOT | 此模块被安装位置 ENV.LIB_NAME | 此模块名称 ENV.LIB_VERSION | 此模块版本 ENV.UA | User-Agent
OBJECT log
日志对象,可操作该对象相关方法写入日志,使用请参考 npmlog
OBJECT config
配置对象,配置数据将会存储到 ENV.SUPPORT_PATH/config.json 文件,方便有需要做持久数据配置的场景。
config 对象接口方法请参考 conf API。 同时 config 对象拓展了以下方法:
config.add(key, value)
如果指定的key不存在则添加对应配置项。
OBJECT plugin
插件管理对象。
plugin.install(name)
安装插件,内部调用的 utils.exec
,返回 child_process,并且添加promise()方法。
plugin.remove(name)
卸载插件,内部调用的 utils.exec
,返回 child_process,并且添加promise()方法。
plugin.update(name)
更新插件,内部调用的 utils.exec
,返回 child_process,并且添加promise()方法。
plugin.load(name)
加载插件。
plugin.loadALL()
加载所有已安装插件。
CLASS Project
cube 项目类
construct(appPath)
- @param {string} appPath 指定 cube 项目所在目录
project.path
获取当前 cube 项目所在目录。
project.cubeMetaData
获取当前 cube 项目 meta 数据。
project.cubePackageData
获取当前 cube 项目模块信息。
project.isCubeProject
判断当前项目是否是合法的 cube 项目。
project.init(conf = {}, options = {})
初始化项目。
- @param {object} conf cube meta 信息
- @param {object} options = {} 其他配置
project.compiler()
为当前项目生成一个编译实例,返回 compiler
对象实例。
project.publish(url, data = {}, srcPath = 'src')
打包后发布 cube 项目。
- @param {string} url 上传服务器地址
- @param {object} data 附加的 post 数据
- @param {string} srcPath 需要打包的文件路径,此处路径使用相对 cube 项目根目录的相对路径
project.replaceContent(filePath, options<String|Object|Function>)
替换cube文件内容。
- @param {string} filePath cube文件路径
- @param {string|object|function} options
- 当options为字符串类型,则该字符串直接覆盖指定文件内容
- 当options为对象类型,则该对象属性会以json形式合并到指定文件(仅对json文件有效)
- 当options为函数类型,该函数可通过参数拿到文件内容,需返回新的内容
OBJECT compiler
编译对象实例,当前使用 webpack(v4) 编译 cube 项目。
compiler.cubeMeta
获取当前编译项目 cube meta 数据。
compiler.init(options = {})
初始化编译对象,options 参数见: webpack v4 Configuration。
compiler.addDevServer(options = {})
添加 webpack devserver,options 参数见: DevServer。
compiler.setHtmlPage(options = {})
设置 HtmlWebpackPlugin 插件,参数配置见:HtmlWebpackPlugin。
多次调用该方法设置以最后一次设置为准
compiler.addCubeDevData(cubeData, systemData, others = {})
在添加了 HtmlWebpackPlugin 插件的情况下,插入 {cubeData, systemData, ...others} = window.CubeDevData
对象到页面。
compiler.addPlugin(plugin)
添加处理 webpack 插件,注意插件模块需要使用绝对路径。
compiler.addLoader(matchType, loader, pos = 'last')
添加 webpack loader。
compiler.addRules(rule, pos = 'last')
添加处理规则,将会添加到 webpack 配置的 module.rules 下。
compiler.run()
调用 webpack.watch() 编译项目,将动态检查代码改动。
compiler.runOnce()
调用 webpack.run() 编译项目。
OBJECT utils{}
为方便开发,提供的工具函数集,可使用如下方法引入:
import {utils} from '@cubetool/base';
utils.exec(command, options = {}, argvs = [])
执行命令。返回 child_process,并且添加promise()方法,如:
let execProcess = utils.exec('ls', { cwd: '/home' }, ['-la']);
let { stdout, stderr } = await execProcess.promise();
utils.request(url, options={})
发起网络请求。
- @param {string} url 请求 url
- @param {object} options = {} 参考 got
utils.upload(url, file, data = {})
上传文件。
- @param {array} url 上传 url
- @param {object} file 文件对象,格式:{file, name}
- @param {object} data = {} 附加 post 参数
utils.mkdir(path)
创建目录,如果父目录不存在将递归创建父级目录。
utils.touchFile(path, content = '')
如果文件不存在则使用指定 content 内容在 path 下创建文件。
utils.uniqId(len = 10)
使用指定 len 长度生成随机字符串 id。
utils.getPackageData(path)
获取指定路径模块信息。
utils.log
log 对象,使用参考 npmlog
utils.conf(opts)
返回 conf 实例,使用参考 conf 。
utils.npm
npm 操作,cubetool 底层的插件等功能使用该模块实现。
npm.setRegistry(registry)
设置全局registrynpm.install(name, options, argvs)
安装模块npm.uninstall(name, options, argvs)
卸载模块npm.update(name, options, argvs)
更新模块
install、uninstall、update 方法底层调用 utils.exec()
方法,其参数:
- @param {string} name 模块
- @param {object} options = {} child_process.exec()
- @param {array} argvs = [] 命令参数
插件开发
请参考插件开发文档。