
Security News
PolinRider: North Korea-Linked Supply Chain Campaign Expands Across Open Source Ecosystems
PolinRider expands across npm, Packagist, Go modules, and Chrome extensions, using hidden loaders to target developer environments.
@cubetool/base
Advanced tools
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());
cubeTool(name, 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
| object | desc |
|---|---|
| ENV | 运行环境常量 |
| log | log 对象,使用参考 npmlog |
| config | 配置对象 |
| plugin | 插件实例 |
| Project | 项目类 |
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 |
log日志对象,可操作该对象相关方法写入日志,使用请参考 npmlog
config配置对象,配置数据将会存储到 ENV.SUPPORT_PATH/config.json 文件,方便有需要做持久数据配置的场景。
config 对象接口方法请参考 conf API。 同时 config 对象拓展了以下方法:
config.add(key, value)如果指定的key不存在则添加对应配置项。
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()加载所有已安装插件。
Projectcube 项目类
construct(appPath)project.path获取当前 cube 项目所在目录。
project.cubeMetaData获取当前 cube 项目 meta 数据。
project.cubePackageData获取当前 cube 项目模块信息。
project.isCubeProject判断当前项目是否是合法的 cube 项目。
project.init(conf = {}, options = {})初始化项目。
project.compiler()为当前项目生成一个编译实例,返回 compiler 对象实例。
project.publish(url, data = {}, srcPath = 'src')打包后发布 cube 项目。
project.replaceContent(filePath, options<String|Object|Function>)替换cube文件内容。
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() 编译项目。
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={})发起网络请求。
utils.upload(url, file, data = {})上传文件。
utils.mkdir(path)创建目录,如果父目录不存在将递归创建父级目录。
utils.touchFile(path, content = '')如果文件不存在则使用指定 content 内容在 path 下创建文件。
utils.uniqId(len = 10)使用指定 len 长度生成随机字符串 id。
utils.getPackageData(path)获取指定路径模块信息。
utils.loglog 对象,使用参考 npmlog
utils.conf(opts)返回 conf 实例,使用参考 conf 。
utils.npmnpm 操作,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() 方法,其参数:
请参考插件开发文档。
FAQs
The npm package @cubetool/base receives a total of 648 weekly downloads. As such, @cubetool/base popularity was classified as not popular.
We found that @cubetool/base demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 7 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
PolinRider expands across npm, Packagist, Go modules, and Chrome extensions, using hidden loaders to target developer environments.

Security News
Open source attacks are accelerating as AI coding agents pull in dependencies faster, with less human review.

Research
/Security News
Malicious Chrome and Firefox extensions posed as free VPNs while stealing clipboard data through later extension updates.