## picgo-plugin-pic-migrater

[![PicGo Convention](https://img.shields.io/badge/picgo-convention-blue.svg?style=flat-square)](https://github.com/PicGo/bump-version)

一个能将你markdown文件里的图片从一个地方迁移到另外一个图床的PicGo插件。

## 特性

1. **这个插件既可以被用在 [命令行](https://github.com/PicGo/PicGo-Core) 版本的PicGo里也可以用在 [GUI](https://github.com/Molunerfinn/PicGo) 版本的PicGo里!**
2. 它迁移支持本地相对路径或者绝对路径的图片，也支持迁移远端URL的图片。
3. 它支持 markdown 文件中 markdown 格式的图片链接以及 html 格式的图片链接。（从 v1.3.0 开始支持）

举个例子，我们手上有一个 `test.md`:

```md
![](./js.jpg)
![](http://xxx.com/js.jpg)

<!-- 从 v1.3.0 开始，支持 img 标签的图片链接迁移 -->
<img src="http://yyy.com/js.jpg" />
```

如果你选择了 `imgur` 作为你的默认图床, 那么迁移过后:

```md
![](https://i.imgur.com/xxx.jpg)
![](https://i.imgur.com/xxxx.jpg)

<!-- 从 v1.3.0 开始，支持 img 标签的图片链接迁移 -->
<img src="http://i.imgur.com/xxxxx.jpg" />
```

## 版本要求

`picgo-plugin-pic-migrater <= 1.2.2` 需要 PicGo-GUI 版本 `2.0.2 ~ 2.2.0, PicGo-Cli 版本 1.4.0 ~ 1.5.0-`.

`picgo-plugin-pic-migrater > 1.2.2` 需要 PicGo-GUI 版本 `2.3.0 ~ 目前最新开发版`, PicGo-Cli 版本 `1.5.0-alpha.1 ~ 目前最新alpha版本`.

## 安装

### 命令行

```bash
picgo install pic-migrater
```

安装之后 `pic-migrater` 会注册一个叫做 `migrate` 的命令。

### GUI

> 在插件设置页面搜索插件

![](https://raw.githubusercontent.com/Molunerfinn/test/master/test/pic-migrater.png)

## 配置

使用之前请配置一下插件！

因为在迁移某个markdown文件里的图片之后会在同一个文件夹里生成一个新的markdown文件（防止原本文件丢失）。所以你要配置一下这个新的文件的文件名后缀。

### 命令行

```bash
picgo set plugin pic-migrater
```

### GUI

打开插件配置页面，找到`pic-migrator`的右下角配置按钮，点击`配置`。

![](https://raw.githubusercontent.com/Molunerfinn/test/master/test/GUI-prefix.png)

### 配置详情

#### newFileSuffix

> 新文件名的后缀

![](https://raw.githubusercontent.com/Molunerfinn/test/master/test/CLI-prefix.png)

举个例子，如果你原本的文件名为 `2019.md` 并且你将 `newFileSuffix` 设置成 `_new`，那么迁移过后，将会生成一个叫做 `2019_new.md` 的新文件。

#### include

> 只包含

如果你配置了 `include` 字段，那么migrator只会迁移包含这个字段值的图片地址。

举个例子，如果你将 `include` 配置为 `sinaimg.cn`，那么migrator只会迁移那些URL或者路径里带有`sinaimg.cn`字符串的图片。

#### exclude

> 不包含

如果你配置了 `exclude` 字段，那么migrator将不会迁移包含这个字段值的图片地址。

举个例子，如果你将 `exclude` 配置为 `sinaimg.cn`，那么migrator不会迁移那些URL或者路径里带有`sinaimg.cn`字符串的图片。

#### oldContentWriteToNewFile

> 从 v1.3.0 开始

如果你吧 `oldContentWriteToNewFile` 配置成 `true`，那么旧的文件内容将会写入新的文件中，而迁移的结果将会写入旧的文件中。

## 使用方法

### 命令行

```bash
$ picgo migrate -h
Usage: migrate [options] <files...>

migrating pictures url from markdown files

Options:
  -h, --help  output usage information

Note:
You should configurate this plugin first!
picgo set plugin pic-migrater

Examples:

  # migrate file or files
  $ picgo migrate ./test.md ./test1.md

  # migrate markdown files in folder
  $ picgo migrate ./test/
```

### GUI

![](https://raw.githubusercontent.com/Molunerfinn/test/master/test/pic-migrater-gui.png)


### Node.js项目（v1.2.3+）

```js
const { PicGo } = require('picgo')
const PluginMigrater = require('picgo-plugin-pic-migrater')

const picgo = new PicGo()

picgo.setConfig({
  'picgo-plugin-pic-migrater': {
    newFileSuffix: '_new',
    include: '',
    exclude: ''
  }
})

const plugin = PluginMigrater(picgo)

plugin.migrateFiles(['/xxx/yyy.md']) // { total: number, success: number }
```

## 感谢

感谢 [@Moyf](https://github.com/Moyf) 提供了本插件最初的python版本的构想。