open-index/open-npm huggingface dataset:
npm package: @qingh/init
Description: ``` npm i @qingh/init -g ```
Author: qingh
Latest version: 1.0.1

## 构建自己的脚手架工具

#### 使用说明

```
npm i @qingh/init -g
```

#### 下载 react 模块

```
init react projectName
```

#### 下载 vue2.0 模块

```
init vue2.0 projectName
```

#### 下载 vue3.0 模块

```
init vue3.0 projectName
```

#### 查看帮助

```
init -h
```
npm package: @qingh/upload
Description: ``` import { parse } from 'url'; import { createServer } from 'http'; import upload from '@qingh/upload'; const port = 8080;
Author: qingh
Latest version: 1.0.2

## 原生 nodejs 实现上传

#### 使用说明

```
import { parse } from 'url';
import { createServer } from 'http';
import upload from '@qingh/upload';
const port = 8080;

createServer(async (req, res) => {
	const { pathname } = parse(req.url, true);
 	if (pathname === '/api/v1/upload') {
    if (req.method.toLowerCase() === 'post') {
    	res.setHeader('content-type', 'application/json;charset=utf8');
      try {
        let data = await upload(req, res, {
          uploadDir: 'upload',
          type: ['jpg', 'png','gif'],
          maxSize: 5 * 1024 * 1024
        });
				res.write('upload success');
      } catch (error) {
        res.write('upload fail');
      }
			res.end();
    }
  }else{
		//other codes
	}
}).listen(port);

```
npm package: @qinghuanaa/lmutils
Description: 常见的js业务工具函数封装
Author: Qinghuan
Latest version: 1.0.5

## 简介

**@qinghuanaa/lmutils**是一个简单易上手的`js`工具库，将一些常见业务的逻辑封装起来，开箱即用。

> **@qinghuanaa/lmutils**遵循 MIT 开源协议发布，GitHub 地址：https://github.com/Asaki-M/lmutils

## 安装

---

```
yarn add @qinghuanaa/lmutils

--- or ---

npm i @qinghuanaa/lmutils
```

## 使用

---

```js
// 全部导入
// import lmutils from '@qinghuanaa/lmutils'
// const lmutils = require('@qinghuanaa/lmutils')
import _ from '@qinghuanaa/lmutils'

// lmutils.lm_copy('text')
_.lm_copy('text')
```

## API 说明

---

### lm_copy

描述：传入一个`string`类型的参数，将其复制到操作系统中的剪切板

语法：

```js
lm_copy(text)
```

参数：

`text`(String)：需要复制的文本内容

示例：

```js
document.getElementById('copybtn').addEventListener('click', () => {
  lm_copy('123')
})
```

### lm_getdayago

描述：计算时间为刚刚、几分钟前、几小时前、几天前

语法：

```js
lm_getdayago(date, now)
```

参数：

`date`(number | Date)：传入一个毫秒级别的时间单位或者一个`Date`对象时间单位

`now`(number | Date)：可选参数，默认值为`Date.now()`，传入一个当前时间单位用以计算`date`到`now`为什么时间

返回值：

返回一个`string`类型的字符串，说明计算时间为刚刚、几分钟前、几小时前、几天前

示例：

```js
console.log(_.lm_getdayago(new Date('2022-1-26'))) // 1天前
console.log(_.lm_getdayago(1643264880000, 1643265074194)) // 3分钟前
```

### lm_formatdate

描述：返回一个指定格式的时间字符串

语法：

```js
lm_formatdate(date, format)
```

参数：

`date`(number | Date)：传入一个毫秒级别的时间单位或者一个`Date`对象时间单位

format(string)：传入一个指定格式的字符串，仅支持`'yyyy-MM-dd hh:mm:ss' || 'yyyy/MM/dd hh:mm:ss' || 'yyyy-MM-dd' || 'yyyy.MM.dd' || 'yyyy/MM/dd' || 'hh:mm:ss' || 'hh:mm'`等多个格式

返回值：

返回一个格式化后的时间字符串

示例：

```js
// 2022-01-27 13:05:04
console.log(
  _.lm_formatdate(new Date('2022-1-27 13:05:04'), 'yyyy-MM-dd hh:mm:ss')
)
// 2022/01/27
console.log(_.lm_formatdate(new Date('2022-1-27 13:05:04'), 'yyyy/MM/dd'))
// 13:05
console.log(_.lm_formatdate(new Date('2022-1-27 13:05:04'), 'hh:mm'))
```

### lm_download

描述：通过传入`url`地址将文件下载到本地

语法：

```js
lm_download(url, name)
```

参数：

`url`(string)：传入一个字符串地址，可以是`项目文件url | 本站或第三方网站url | blob地址 | base64`，需要注意的是传入 blob 地址时，name 为必选参数

`name`(string)：可选参数，传入下载文件的名字，若不传默认为 default 文件名

示例：

```js
lm_download(
  'https://92bb2db0-778c-11ec-997e-198ad526592c.oss-cn-guangzhou.aliyuncs.com/95244600_p0.jpg'
)

lm_download(
  'blob:http://127.0.0.1:5500/53121d4c-412b-4359-9a22-816da32b9599',
  '1.jpg'
)

lm_download('/dist/index.js', 'index.js')
```

### lm_filetobase64

描述：将一个 file 或者 blob 对象转成一个 base64 地址

语法：

```js
lm_filetobase64(file, callback)
```

参数：

`file`(File | Blob)：File 或者 Blob 类型对象

`callback`(Function)：传入一个回调函数，用于接受转换 base64 后的字符串

示例：

```js
lm_filetobase64(file, (data) => {
  console.log(data)
})
```

### lm_base64tofile

描述：将一个 base64 字符串转换成 File 对象

语法：

```js
lm_base64tofile(url, name)
```

参数：

`url`(string)：一个 base64 字符串

`name`(string)：返回 File 对象的 name 属性

返回值：

返回一个 File 对象

示例：

```js
const base64 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAADFoAABEk......'
console.log(lm_base64tofile(base64, 'button'))
```
npm package: @qinghuanaa/vitepress-cli
Description: A CLI for quickly creating a vitepress project has two templates for selection.
Author: Qinghuan
Latest version: 1.0.1

# vitepress-cli

A CLI for quickly creating a vitepress project has two templates for selection.

- blog-template
- docs-template

# Install

```

npm install @qinghuanaa/vitepress-cli -g

```

# Usage

```
vitepress-cli create <project name>
```

According to tips to select the template to create a project

# Detail

## docs template

The template directory like this

```
<project name>
├── docs
│   ├── .vitepress
│   │   └── config.js  "vitepress project config file"
│   ├── public  "store public file"
│   │   └── bg.jpg
│   ├── index.md   "front page"
│   └── guide
├── yarn.lock
└── package.json
```

## blog template

The template directory like this

```
<project name>
├── docs
│   ├── .vitepress
│   │   └── config.js  "vitepress project config file"
│   ├── public  "store public file"
│   │   └── bg.jpg
│   ├── index.md   "front page"
│   ├── blogs   "store some blogs file"
│   └── projects   "store some projects file"
├── yarn.lock
└── package.json
```
npm package: @qingleili/cockpit-build-plugin
Description: cockpit通用build方案
Author: liqinglei002
Latest version: 0.0.1

cockpit-build-plugin
====================

cockpit通用build方案

[![oclif](https://img.shields.io/badge/cli-oclif-brightgreen.svg)](https://oclif.io)
[![Version](https://img.shields.io/npm/v/cockpit-build-plugin.svg)](https://npmjs.org/package/cockpit-build-plugin)
[![Downloads/week](https://img.shields.io/npm/dw/cockpit-build-plugin.svg)](https://npmjs.org/package/cockpit-build-plugin)
[![License](https://img.shields.io/npm/l/cockpit-build-plugin.svg)](https://github.com/cli/cockpit-build-plugin/blob/master/package.json)

<!-- toc -->
* [Usage](#usage)
* [Commands](#commands)
<!-- tocstop -->
# Usage
<!-- usage -->
```sh-session
$ npm install -g @qingleili/cockpit-build-plugin
$ oclif-example COMMAND
running command...
$ oclif-example (-v|--version|version)
@qingleili/cockpit-build-plugin/0.0.1 darwin-x64 node-v12.20.1
$ oclif-example --help [COMMAND]
USAGE
  $ oclif-example COMMAND
...
```
<!-- usagestop -->
# Commands
<!-- commands -->
* [`oclif-example build [FILE]`](#oclif-example-build-file)

## `oclif-example build [FILE]`

describe the command here

```
USAGE
  $ oclif-example build [FILE]

OPTIONS
  -f, --force
  -h, --help       show CLI help
  -n, --name=name  name to print

EXAMPLE
  $ oclif-example hello
  hello world from ./src/hello.ts!
```

_See code: [src/commands/build.ts](https://github.com/cli/cockpit-build-plugin/blob/v0.0.1/src/commands/build.ts)_
<!-- commandsstop -->
npm package: @qingleili/cockpit-cli
Description: 贝壳基础CLI框架
Author: liqinglei002
Latest version: 0.0.3

mycli
=====

desc

[![oclif](https://img.shields.io/badge/cli-oclif-brightgreen.svg)](https://oclif.io)
[![Version](https://img.shields.io/npm/v/mycli.svg)](https://npmjs.org/package/mycli)
[![Downloads/week](https://img.shields.io/npm/dw/mycli.svg)](https://npmjs.org/package/mycli)
[![License](https://img.shields.io/npm/l/mycli.svg)](https://github.com/cliTest/mycli/blob/master/package.json)

<!-- toc -->
* [Usage](#usage)
* [Commands](#commands)
<!-- tocstop -->
# Usage
<!-- usage -->
```sh-session
$ npm install -g @qingleili/cockpit-cli
$ kcc COMMAND
running command...
$ kcc (-v|--version|version)
@qingleili/cockpit-cli/0.0.2 darwin-x64 node-v12.20.1
$ kcc --help [COMMAND]
USAGE
  $ kcc COMMAND
...
```
<!-- usagestop -->
# Commands
<!-- commands -->
* [`kcc demo [SECONDARG]`](#kcc-demo-secondarg)
* [`kcc help [COMMAND]`](#kcc-help-command)
* [`kcc snippet TPLNAME COMPONENTNAME`](#kcc-snippet-tplname-componentname)
* [`kcc update [CHANNEL]`](#kcc-update-channel)

## `kcc demo [SECONDARG]`

description of this example command

```
USAGE
  $ kcc demo [SECONDARG]

OPTIONS
  -f, --force
  --file=file
```

## `kcc help [COMMAND]`

display help for kcc

```
USAGE
  $ kcc help [COMMAND]

ARGUMENTS
  COMMAND  command to show help for

OPTIONS
  --all  see all commands in CLI
```

_See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v3.2.2/src/commands/help.ts)_

## `kcc snippet TPLNAME COMPONENTNAME`

创建一个组件

```
USAGE
  $ kcc snippet TPLNAME COMPONENTNAME

ARGUMENTS
  TPLNAME        模板名称
  COMPONENTNAME  组件名称

OPTIONS
  -c, --classPrefix=classPrefix
  -p, --path=path
```

## `kcc update [CHANNEL]`

update the kcc CLI

```
USAGE
  $ kcc update [CHANNEL]
```

_See code: [@oclif/plugin-update](https://github.com/oclif/plugin-update/blob/v1.3.10/src/commands/update.ts)_
<!-- commandsstop -->
npm package: @qingleili/vue-loader
Description: Vue.js component loader for Webpack
Author: Sjoerd Visscher
Latest version: 9.9.5

# vue-loader [![Build Status](https://circleci.com/gh/vuejs/vue-loader/tree/master.svg?style=shield)](https://circleci.com/gh/vuejs/vue-loader/tree/master) [![npm package](https://img.shields.io/npm/v/vue-loader.svg?maxAge=2592000)](https://www.npmjs.com/package/vue-loader)

> Vue.js component loader for [Webpack](http://webpack.github.io).

**NOTE: the master branch now hosts 9.x which only works with Vue 2.0. For version 8.x which works with Vue 1.x, see the [8.x branch](https://github.com/vuejs/vue-loader/tree/8.x).**

It allows you to write your components in this format:

![screenshot](http://blog.evanyou.me/images/vue-component.png)

The best way to get started is with [vue-cli](https://github.com/vuejs/vue-cli):

``` js
npm install -g vue-cli
vue init webpack-simple hello
cd hello
npm install
npm run dev
```

This will setup a basic Webpack + `vue-loader` project for you, with `*.vue` files and hot-reloading working out of the box!

For advanced `vue-loader` configuration, checkout the [documentation](http://vuejs.github.io/vue-loader/).
npm package: @qinglian/mock
Description: A real data mock tool
Author: southorange1228
Latest version: 0.0.1

## Python
- 版本 < 3.10.0

### BM25

用于相似度检索
依赖相关包
- gensim < 4.0
- wordninja

### K-means

用于自动聚类
依赖相关包
- sklearn
- jieba
npm package: @qinglian/release-tool
Description: a release tool
Author: southorange
Latest version: 0.0.7

### @qinglian/release-tool

发包构建工具

#### 功能

- [x] 支持 workspace 与单包场景
- [x] 支持多个包同时发布
- [x] 支持自定义 prerelease
- [ ] 支持生成 changelog
- [ ] 支持 plugin 例如：自动提交变更日志

#### 用法

##### 安装

```shell
npm i @qinglian/release-tool
```

##### 用法

新建`release.js`文件，内容如下

```js
// release.js
const { release } = require("@qinglian/release-tool");
release();
```

执行命令`node release.js`
npm package: @qinglian/sql-parser
Description: A SQL parser build with Rust
Author: southorange1228
Latest version: 0.0.2-beta.0

### @qinglian/sql-parser

基于Rust实现的SQL Parser工具。

#### example
```js
const { parser } = require("@qinglian/sql-parser");

const MockSQL = `
create table room_user
(
    id          varchar(50)                        not null,
    openid      varchar(50)                        not null,
    roomid      varchar(50)                        not null,
    status      tinyint  default 1                 not null,
    create_time datetime default CURRENT_TIMESTAMP not null,
    update_time datetime default CURRENT_TIMESTAMP not null
);
`;

const sqlAst = parser(MockSQL);
console.log(sqlAst)
```
npm package: @qingmo/expire-local-storage
Description: make your localStorage more flexible
Author: qingmo
Latest version: 2.0.0

# expire-local-storage
让localstorage支持设置过期时间
## install
~~~ shell script
npm install expire-local-storage --save-dev
~~~
### usage
~~~ javascript
import createStorage from 'expire-local-storage'
const store = createStorage()
// set
store.setItem('test',{a:1}, 1000) // key value expire ms
// get
const val = store.getItem('test') // {a:1}
// get all storage both set from store and H5 localstorage
cosnt res = store.getAllItem()
// remove
store.removeItem(test)
store.removeAll()

~~~
npm package: @qingqingfe/nodebb-plugin-qingqing-markdown
Description: A Markdown parser for NodeBB
Latest version: 1.2.1

# NodeBB Markdown Parser

This NodeBB plugin is a parser that allows users to write posts using [Markdown](https://daringfireball.net/projects/markdown/).

To customise options for the parser, please consult the "Markdown" page in the administration panel, under the "Plugins" heading.

## Installation

    npm install nodebb-plugin-markdown
npm package: @qingqingfe/sav-api
Description: api for savjs
Author: ahschl0322@gmail.com
Latest version: 0.0.9

# sav-api

[![NPM version](https://badge.fury.io/js/sav-api.png)](http://badge.fury.io/js/sav-api)
[![Dependency Status](https://david-dm.org/savjs/sav-api.png)](https://david-dm.org/savjs/sav-api)
[![devDependency Status](https://david-dm.org/savjs/sav-api/dev-status.png)](https://david-dm.org/savjs/sav-api#info=devDependencies)
[![Build Status](https://travis-ci.org/savjs/sav-api.svg?branch=master)](https://travis-ci.org/savjs/sav-api)

api layer for savjs
npm package: @qingqingfe/sav-flux
Description: flux for savjs
Author: jetiny
Latest version: 1.0.4

# sav-flux

[![NPM version](https://badge.fury.io/js/sav-flux.png)](http://badge.fury.io/js/sav-flux)
[![Dependency Status](https://david-dm.org/savjs/sav-flux.png)](https://david-dm.org/savjs/sav-flux)
[![devDependency Status](https://david-dm.org/savjs/sav-flux/dev-status.png)](https://david-dm.org/savjs/sav-flux#info=devDependencies)
[![Build Status](https://travis-ci.org/savjs/sav-flux.svg?branch=master)](https://travis-ci.org/savjs/sav-flux)

savjs flux
npm package: @qingqingfe/sav-util
Description: util library for savjs
Author: ahschl0322@gmail.com
Latest version: 0.0.3
Deprecated: false

# sav-util

[![NPM version](https://badge.fury.io/js/sav-util.png)](http://badge.fury.io/js/sav-util)
[![Dependency Status](https://david-dm.org/savjs/sav-util.png)](https://david-dm.org/savjs/sav-util)
[![devDependency Status](https://david-dm.org/savjs/sav-util/dev-status.png)](https://david-dm.org/savjs/sav-util#info=devDependencies)
[![Build Status](https://travis-ci.org/savjs/sav-util.svg?branch=master)](https://travis-ci.org/savjs/sav-util)

util library for savjs
npm package: @qingshaner/mojito
Description: An emoji commit helper cli app
Author: qingshaner
Latest version: 0.0.5

# 🌴Mojito


<p align="center">
<a href="https://www.npmjs.com/%40qingshaner/cli" target="_blank"><img src="https://img.shields.io/npm/v/%40qingshaner/mojito" alt="NPM Version" /></a>
<img alt="license" src="https://img.shields.io/npm/l/%40qingshaner%2Fmojito">
<a href="https://codecov.io/gh/Jon-a-than/mojito" > 
 <img src="https://codecov.io/gh/Jon-a-than/mojito/branch/main/graph/badge.svg?token=0E664U5JGV"/> 
 </a>
<a href="https://github.com/Jon-a-than/mojito/actions/workflows/ci.yaml"><img src="https://github.com/Jon-a-than/mojito/actions/workflows/ci.yml/badge.svg" alt="ci" /></a>
</p>


😘 An emoji commit helper cli app.

## 安装

```bash
pnpm install @qingshaner/mojito -g
```

## 命令

### commit (alias: c)

提交 commit, 默认 commit 信息实例

```bash
mojito c
```

```
✅ test(commit): test commit
```

### commit --retry (alias: c -r)

重试最后一次错误 commit

```bash
mojito c -r
```

### commit --list (alias: c -l)

列出所有 emoji 及其对应的 commit 类型

```bash
mojito c -l
```
npm package: @qingshui123/ui-demo
Description: A React UI Library.
Latest version: 1.0.1

## React 组件库搭建指南

- [React 组件库搭建指南（一）：项目初始化](https://github.com/worldzhao/blog/issues/3)
- [React 组件库搭建指南（二）：开发调试](https://github.com/worldzhao/blog/issues/4)
- [React 组件库搭建指南（三）：编译打包](https://github.com/worldzhao/blog/issues/5)
- [React 组件库搭建指南（四）：单元测试](https://github.com/worldzhao/blog/issues/6)
- [React 组件库搭建指南（五）：标准化发布流程](https://github.com/worldzhao/blog/issues/7)

组件库一直是前端开发不可或缺的一环，主要是为了开发提效，避免开发同学复制粘贴和重复造轮子。

对于 2C 移动端场景而言，不同业务线的设计规范大相径庭，过于定制化，所以内部其实一直没有一套基于 React 的移动端组件库。

而对于某一条特定的业务线来讲，设计语言是能够也必须要达到统一的。

于是在部门内搭了一个简单的组件库，组件不多，但在搭建过程中掌握了很多知识，再看 antd 等热门组件库，对其中的一些设计也有了更深的感悟，故记录下来，希望能帮助到其他的同学。

[🚀 在线预览](https://worldzhao.github.io/react-ui-library-tutorial)

🚆 本地预览

```bash
git clone git@github.com:worldzhao/react-ui-library-tutorial.git
cd react-ui-library-tutorial
yarn
yarn start
```

按顺序执行完命令后，即可在 localhost:3000 端口看到以下内容：

![preview](https://raw.githubusercontent.com/worldzhao/blog/master/images/rc-lib-v1-1.jpg)

## 概览

本系列文章主要包含以下内容：

- 项目初始化: 组件库前期开发准备工作。`eslint`/`commit lint`/`typescript`等等；
- 开发阶段: 使用 [dumi](https://d.umijs.org/zh-CN) 进行开发调试以及文档编写；
- 打包阶段: 输出~~`umd`~~/`cjs`/`esm`产物并支持按需加载；
- 组件测试: 使用`@testing-library/react`及其相关生态进行组件测试；
- 发布 npm: 编写脚本完成发布或直接使用 [np](https://www.npmjs.com/package/np) 发布；
- 部署文档站点: 使用 Github Pages 以及 Github Actions 完成文档站点自动部署。