open-index/open-npm huggingface dataset:
npm package: @ryan-liu/cli
Description: Ryan-liu 通用创建项目脚手架
Author: liuyuan
Latest version: 1.0.7

# Ryan-cli
个人专用创建项目脚手架

## 推荐使用方式

在项目中
```
yarn && yarn build

chmod a+x dist/index.js
```

其他目录中使用
```
ryan-cli create ***
```
npm package: @ryan-liu/eslint-config-jsx-config
Description: vue jsx 通用 eslint
Author: liuyuan
Latest version: 1.0.4

## 使用

```
yarn add @ryan-liu/eslint-config-jsx-config -D
```

`.eslintrc.js`

```js
module.exports = {
    ...
    extends: ['@ryan-liu/jsx-config'],
    ...
}

```

## 插件简称

extends 属性值可以省略包名的前缀 `eslint-config-`。
npm package: @ryan-liu/jodit-react
Description: 改造 jodit-react 为 vite
Author: Chupurnov
Latest version: 0.0.5

# React Jodit WYSIWYG Editor

[![npm](https://img.shields.io/npm/v/jodit-react.svg)](https://www.npmjs.com/package/jodit-react)
[![npm](https://img.shields.io/npm/dm/jodit-react.svg)](https://www.npmjs.com/package/jodit-react)
[![npm](https://img.shields.io/npm/l/jodit-react.svg)](https://www.npmjs.com/package/jodit-react)

React wrapper for [Jodit](https://xdsoft.net/jodit/)

> [Jodit React PRO](https://xdsoft.net/jodit/pro/) it is an extended version of Jodit React with the same API, but with a lot more features.

## Installation

```bash
npm install jodit-react --save
```

## Update editor version
```bash
npm update jodit-react
```

## Run demo
```bash
npm install --dev
npm run demo
```

and open
```
http://localhost:4000/
```

## Usage

### 1. Require and use Jodit-react component inside your application.

```jsx
import React, {useState, useRef} from 'react';
import JoditEditor from "jodit-react";

const Example = ({}) => {
	const editor = useRef(null)
	const [content, setContent] = useState('')

	const config = {
		readonly: false // all options from https://xdsoft.net/jodit/doc/
	}

	return (
            <JoditEditor
            	ref={editor}
                value={content}
                config={config}
		tabIndex={1} // tabIndex of textarea
		onBlur={newContent => setContent(newContent)} // preferred to use only this option to update the content for performance reasons
                onChange={newContent => {}}
            />
        );
}
```


License
-----
This package is available under `MIT` License.
npm package: @ryan-liu/plugin-content-docs
Description: Docs plugin for Docusaurus.
Latest version: 2.0.1-beta.1

# `@docusaurus/plugin-content-docs`

Docs plugin for Docusaurus.

## Usage

See [plugin-content-docs documentation](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-docs).


## 介绍

基于官方的插件去添加部分的参数（tags、catelogry）等，此项目为暂时开发的项目
npm package: @ryan-liu/stylelint-config
Description: stylelint-config-standard-scss 基于 stylelint-config-standard（官方的代码风格） 开发
Author: ryan-liu
Latest version: 1.0.8


## 使用到的包

stylelint-config-standard-scss 基于 stylelint-config-standard（官方的代码风格） 开发

stylelint-config-standard 已经把 stylelint-config-recommended 包含进去了

stylelint-order（可以编写属性顺序）

stylelint-config-rational-order(推荐的 css 顺序规则)


## 文档

具体的 stylelint 配置可以查看 `https://stylelint.bootcss.com/`

中文配置: `https://segmentfault.com/a/1190000041521952?sort=votes`

## 使用 

```
module.exports = {
    extends: '@ryan-liu/stylelint-config',
}
```
npm package: @ryan-liu/vite-plugin-cos-upload
Description: 基于 vite 的打包文件上传到腾讯云 cos 的插件
Author: ryan-liu
Latest version: 1.0.0

## 文档

具体的腾讯 cos 上传方法可以查看 [文档](https://cloud.tencent.com/document/product/436/64980)

使用 cos 上传请注意官网的注意事项：

* Key（文件名）不能以/结尾，否则会被识别为文件夹。

* Key（文件名）同名上传默认为覆盖操作。若您未开启版本控制且不想覆盖云上文件时，请确保上传时的Key不重复。

## 参数说明

```ts
interface Options {
    SecretId: string
    SecretKey: string
    Bucket: string
    Region?: string
    exclude?: RegExp
    /** 并发数 */
    concurrent?: number
    /** key 前缀 */
    prefix?: string
    /** 打包文件目录 */
    distDir?: string
    /** 是否输出日志 */
    log?: boolean
    /** cos 大文件上传方法，不传就用普通方法 */
    cosUploadFileParams?: SliceUploadFileParams
}

```

## 用法

```ts
yarn add vite-plugin-cos-upload -D
```

```ts
// vite.config.ts

import qiniuPlugin from '@ryan-liu/vite-plugin-qiniu-cdn-upload'
import pkg from './package.json'

// config or .env
const cosConfig = {
    SecretId: '',
    SecretKey: '',
    Bucket: '',
    Region: '',
}

/** 项目文件夹地址 */
const basePath = pkg.name

/** cdn 地址 */
const cdnPrePath = ''

function uploadFileToCos(isUpload: boolean) {
    if (!isUpload) {
        return
    }

    return cosPlugin({
        ...cosConfig,
        prefix: basePath,
    })
}

export default defineConfig({
    plugins: [
        ...,
        base: process.env.NODE_ENV == 'production' ? cdnPrePath : `/`,
        uploadFileToCos(process.env.NODE_ENV == 'production')
        ...
    ]
})
```
npm package: @ryan-liu/vite-plugin-qiniu-cdn-upload
Description: 基于 vite 的打包文件上传到七牛云的插件
Author: ryan-liu
Latest version: 1.1.3

## 参数说明

```ts
export interface Options {
    accessKey: string
    secretKey: string
    bucket: string
    exclude?: RegExp
    /** 七牛云区域 */
    zone?: string
    /** 并发数 */
    concurrent?: number
    /** 是否覆盖相同文件名的文件 */
    overwrite?: boolean
    /** key 前缀 */
    prefix?: string
    /** 打包文件目录 */
    distDir?: string
    /** 是否输出日志 */
    log?: boolean
}
```

## example

```
yarn add @ryan-liu/vite-plugin-qiniu-cdn-upload -D
```

```ts
// vite.config.ts

import qiniuPlugin from '@ryan-liu/vite-plugin-qiniu-cdn-upload'
import pkg from './package.json'

const qnConfig = {
    accessKey: '',
    secretKey: '',
    bucket: '',
    zone: 'z2',
}

/** 项目文件夹地址 */
const basePath = pkg.name

/** cdn 地址 */
const cdnPrePath = ''

function uploadFileToQN(isUpload: boolean) {
    if (!isUpload) {
        return
    }
    return qiniuPlugin({
        accessKey: qnConfig.accessKey,
        secretKey: qnConfig.secretKey,
        bucket: qnConfig.bucket,
        zone: 'z2',
        overwrite: false,
        prefix: basePath,
    })
}

export default defineConfig({
    plugins: [
        ...,
        base: process.env.NODE_ENV == 'production' ? cdnPrePath : `/`,
        uploadFileToQN(process.env.NODE_ENV == 'production')
        ...
    ]
})
```
npm package: @ryan-liu/wechat-to-markdown
Description: 解析微信文章 URL 为 markdown
Author: Ryan-liu
Latest version: 1.2.2

## description

Enter the WeChat public address to convert it to markdown format

English | [简体中文](README.zh-CN.md)

## return options

```ts
interface TurnDownResult {
    success: boolean
    code: number
    data?: {
        title?: string
        author?: string
        content?: string
    }
    msg?: string
}

```

## Basic Usage

## CommonJs

```javascript
const transformHtml2Markdown = require('@ryan-liu/wechat-to-markdown').default

setTimeout(async () => {
    const articleData = await transformHtml2Markdown('https://mp.weixin.qq.com/s/9d5DWg7YdMHPvVl-2KLH2w')

    const { title, author, content } = articleData.data

    console.log('title', title)
    console.log('author', author)
    console.log('content', content)
}, 0)
```

## vue3
**index.ts**
```javascript
import transformHtml2Markdown from '@ryan-liu/wechat-to-markdown'

setup() {
    const getData = async () => {
        const articleData = await transformHtml2Markdown(
            '/api/s/9d5DWg7YdMHPvVl-2KLH2w'
        )

        const { title, author, content } = articleData.data

        console.log('title', title)
        console.log('author', author)
        console.log('content', content)
    }

    getData()

    return {}
},
```

**vite.config.ts**

```js
...
server: {
    proxy: {
        '/api': {
            target: 'https://mp.weixin.qq.com',
            changeOrigin: true,
            rewrite: (path) => path.replace(/^\/api/, ''),
        },
    },
},
...
```


## Packages

[axios](http://www.axios-js.com/)

[cheerio](https://github.com/cheeriojs/cheerio)

[turndown (html to markdown)](https://github.com/mixmark-io/turndown)

[turndown-plugin-gfm (turndown parsing partial html element plugin)](https://github.com/mixmark-io/turndown-plugin-gfm)

## Reference

[html2md (A very well developed url to markdown project)](https://github.com/helloworld-Co/html2md)