npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@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) 设置全局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 = [] 命令参数

插件开发

请参考插件开发文档。