2.2.6 • Published 9 months ago

@cubetool/base v2.2.6

Weekly downloads
2
License
MIT
Repository
-
Last release
9 months ago

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 配置项

keytypedescdefaul
spathstring项目配置目录$HOME/.cubetool
pluginsPathstring插件安装目录$HOME/.cubetool/plugins
logPathstringlog 目录$HOME/.cubetool/logs
logPrintbool是否打印日志false
logLevelstring日志记录级别'warn'
pluginsarray需要加载的插件,如不指定则加载所有已安装插件undefined

日志级别支持:debug、info、notice、warn、error

result 返回值

objectdesc
ENV运行环境常量
loglog 对象,使用参考 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) 设置全局registry
npm.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 = [] 命令参数

插件开发

请参考插件开发文档。

2.2.5

9 months ago

2.2.6

9 months ago

2.2.4

10 months ago

3.0.0-alpha.1

12 months ago

3.0.0-alpha.0

12 months ago

2.2.3

2 years ago

2.2.2

2 years ago

2.2.1

2 years ago

2.1.2

2 years ago

2.2.0

2 years ago

2.1.1

2 years ago

2.1.0

2 years ago

2.0.6

3 years ago

2.0.5

3 years ago

2.0.4

3 years ago

2.0.3

3 years ago

2.0.2

3 years ago

2.0.2-beta

3 years ago

2.0.1

3 years ago

2.0.0

3 years ago

2.0.0-beta.4

3 years ago

2.0.0-beta.3

3 years ago

2.0.0-beta.2

3 years ago

2.0.0-beta.1

3 years ago

2.0.3-alpha.4

4 years ago

2.0.3-alpha.3

4 years ago

2.0.3-alpha.2

4 years ago

2.0.3-alpha.1

4 years ago

2.0.1-alpha.1

4 years ago

1.0.0-alpha.1

4 years ago

2.0.2-alpha.1

4 years ago

0.0.1

4 years ago