open-index/open-npm huggingface dataset:
npm package: @sweet-milktea/babel-preset-sweet
Description: babel插件
Latest version: 4.6.0

# @sweet-milktea/babel-preset-sweet

## 插件配置

* env
    * nodeEnv `{ boolean }` : 是否为node环境
    * ecmascript `{ boolean }` : 编译到esnext
    * targets `{ object }` : 自定义babel的编译目标
    * debug `{ boolean }` : 开启debug信息
    * modules `{ boolean | string }` : 模块加载方式
    * useBuiltIns `{ boolean | string }` : useBuiltIns
* react
    * use `{ boolean }` : 是否开启react转换，默认开启
    * runtime `{ string }` : 是否使用react/jsx-runtime，默认根据react版本判断
    * development `{ boolean }`: 是否为开发环境
    * reactCompiler `{ boolean }`: 是否开启reactCompiler
* typescript
    * use `{ boolean }` : 是否开启typescript转换
npm package: @sweet-milktea/milktea-vite
Description: vite配置函数
Latest version: 4.4.0

# @sweet-milktea/milktea-vite

## 使用

## 如何使用

1. 在工程目录下创建`.sweetrc.js`或`sweet.config.mjs`文件，然后通过cli工具运行。（支持typescript，即`.sweetrc.ts`或`sweet.config.ts`文件）

2. 在node内运行函数。

```javascript
import {
  config as viteConfig, // vite开发环境配置
  build as viteBuild,   // vite生产环境配置
  serverRenderBuild     // vite SSR生产环境配置
} from '@sweet-milktea/milktea-vite';

// sweetConfig { SweetConfig | string | null | undefined }: 覆盖文件，优先级最高
// mode { string }: 开发模式 development，生产模式 production
const vite = await viteConfig({
  // 配置项
  sweetConfig: null,
  mode: 'development'
});
```

## 配置文件`.sweetrc.js`说明

### 使用方法

根目录下创建`.sweetrc.js`文件。代码如下所示：

```javascript
module.exports = {
  ... // 配置
};
```

或

```javascript
module.exports = function(info) {
  return {
    ... // 配置
  };
};
```

### 配置项

* mode `{ string }` : 开发模式还是生产模式
* frame `{ string }` : 值为`react`或`vue`，是否为react或vue模式，并自动修改默认配置，添加plugin
* vite `{ object }` : vite配置，会合并到默认配置中
* chainVite `{ Function }` : 通过扩展或修改vite配置
* typescript(ts) `{ object }` : typescript配置
    * configFile `{ string }` : typescript的配置文件
    * tsChecker `{ boolean }` : 设置为false时，关闭vite-plugin-checker插件注入

下面的配置是关于服务器端渲染的

* severEntry `{ any }` : 服务器端的文件入口（参考vite的SSR）

### 关于vue

如果使用vue，需要手动安装`@vitejs/plugin-vue`、`@vitejs/plugin-vue-jsx`、`@vue/compiler-sfc`(vue3)。

### 关于typescript

使用typescript，需要手动安装`typescript`。   

### info

info是当前环境的信息。

* info.environment：当前环境，可能的值为`client`、`server`。分别为编译dll文件、编译浏览器端代码、编译node端代码。

## [api、服务器端渲染](https://github.com/duan602728596/sweet/blob/master/packages/server/README.md)

## 使用typescript

在项目内添加`tsconfig.json`文件。
npm package: @sweet-milktea/server-hot-client
Description: [webpack-dev-server](https://github.com/webpack/webpack-dev-server)的客户端代码。
Latest version: 4.3.0

[webpack-dev-server](https://github.com/webpack/webpack-dev-server)的客户端代码。   

源代码请参考[https://github.com/webpack/webpack-dev-server/tree/master/client-src](https://github.com/webpack/webpack-dev-server/tree/master/client-src)。   

依赖了ansi-html-community、html-entities、url、sockjs、sockjs-client。   

### webpack-dev-server LICENSE

```
Copyright JS Foundation and other contributors

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
```
npm package: @sweet-milktea/server-log
Description: 服务端的koa日志中间件函数
Latest version: 4.0.0

# @sweet-milktea/server-log

生产环境下的日志扩展。

## 使用方法

```javascript
import serverLog from '@sweet-milktea/server-log';

const { accessLogger, logger } = serverLog(type, {
  pm2,
  basicPath,
  url
});
```

## 参数

* type `{ 'file' | 'http' }` : 日志类型，本地*file* 或 远程接口*http*。
* options `{ object }` : 配置项。
    * pm2 `{ boolean }` : 服务是否在pm2状态下运行。
    * basicPath `{ string }` : *.logs*文件夹在本地的目录。
    * url `{ string }` : 日志的远程接口。

## 返回值

* accessLogger `{ Function }` : Koa日志中间件。
* logger `{ object }` : 创建日志方法。方法参考[log4js](https://github.com/log4js-node/log4js-node)。
npm package: @sweet-milktea/util-tools
Description: 通用工具函数
Latest version: 4.4.0

# @sweet/util-tools

一些通用的工具。

## webp图片、视频批量转换工具

> 首先需要自行安装`ffmpeg`。

使用方法：

```javascript
import media2webp from '@sweet-milktea/util-tools/media2webp';

media2webp(
  './src',        // 入口文件夹
  './build',      // 输出文件夹
  true,           // 是否包含视频
  ['ogg', 'rmvb'] // 配置其他想要转换的格式
);
```

## 查看当前工程下是否有依赖需要升级

使用方法：

```javascript
import update from '@sweet-milktea/util-tools/update';

update(
  ['path/to/project'], // 项目工程目录的数组
  0                    // Npm包信息地址。0：Npm，1：Yarn，2：CNpm，3：腾讯npm镜像
);
```

## avif图片批量转换工具

> 首先需要自行安装`sharp`模块，
> 或者安装 [avifenc](https://github.com/AOMediaCodec/libavif) （mac上使用brew安装`brew install joedrago/repo/avifenc`）。

使用方法：

```javascript
import image2avif from '@sweet-milktea/util-tools/image2avif';

image2avif(
  './src',   // 入口文件夹
  './build', // 输出文件夹
  'sharp'    // sharp或avifenc
);
```

## webp图片批量转换工具

> 首先需要自行安装`imagemin-webp`、`imagemin-gif2webp`。   
> mac下可能需要使用brew安装`giflib`。

使用方法：

```javascript
import image2webp from '@sweet-milktea/util-tools/image2webp';

image2webp(
  './src',   // 入口文件夹
  './build', // 输出文件夹
  // 图片转换选项配置
  {
    img: {},
    gif: {}
  }
);
```

* img：[https://github.com/imagemin/imagemin-webp#api](https://github.com/imagemin/imagemin-webp#api)
* gif：[https://github.com/imagemin/imagemin-gif2webp#api](https://github.com/imagemin/imagemin-gif2webp#api)

## 图片压缩工具

> 首先需要自行安装`imagemin-gifsicle`、`imagemin-jpegoptim`、`imagemin-pngquant`。   
> mac下可能需要使用brew安装`jpeg`。

使用方法：

```javascript
import imageCompress from '@sweet-milktea/util-tools/imageCompress';

imageCompress(
  './src',   // 入口文件夹
  './build', // 输出文件夹
  // 图片压缩选项配置
  {
    png: {},
    jpg: {},
    gif: {}
  }
);
```

### 压缩选项：

* png：[https://github.com/imagemin/imagemin-pngquant#api](https://github.com/imagemin/imagemin-pngquant#api)
* jpg：[https://github.com/imagemin/imagemin-jpegoptim#api](https://github.com/imagemin/imagemin-jpegoptim#api)
* gif：[https://github.com/imagemin/imagemin-gifsicle#api](https://github.com/imagemin/imagemin-gifsicle#api)

## 生成icns图标

使用方法：

```javascript
import image2icns from '@sweet-milktea/util-tools/image2icns';

image2icns(
  './1024x1024.png',  // 输入图片
  './1024x1024.icns', // 生成图标
  {
    size: 512, // 尺寸
    retina: 2  // 1k屏或2k屏 
  }
);
```

如果retina的值为1：则size的值为16、32、128、256、512、1024。   
如果retina的值为2：则size的值为16、32、128、256、512。