Skip to content
OBKoro1 edited this page Jul 9, 2019 · 7 revisions

脚本引入

下载npm包,引入它。

const markdownImageDown = require('markdown-img-down-site-change');

初始化:new markdownImageDown(option)

  • 参数:

    • { Object } option
const markdownImage = new markdownImageDown(option)

API:

markdownImage.checkDownImg(): 下载目标图片(replace_image_url)链接

  • 用法:
markdownImage.checkDownImg()

markdownImage.replaceMarkdown(): 替换目标图片(replace_image_url)链接为新的图片链接(new_image_url)

  • 用法:
markdownImage.replaceMarkdown()

markdownImage.updateOption(option) : 更新脚本配置

option参数跟初始化(new)的时候一样,用于更新配置。

markdownImage.updateOption({
    new_image_url: 'https://xxx.com',
})

option:

注意:仔细阅读,以免操作失误导致数据丢失

初始化参数option包括这些属性:

replace_image_url: 失效图片地址,被替换的图片地址

  • 类型:String
  • 默认值: 'http://ww1.sinaimg.cn/large/'
  • 说明:脚本会搜索/替换replace_image_url的值,比如a/图片名字,replace_image_urla/

new_image_url:图片上传后的新地址

  • 类型:String
  • 默认值:'https://xxx.com/目录地址/'
  • 说明:用以替换replace_image_url的值,比如b/图片名字new_image_url: b/

add_end:在图片名字后面添加后缀添加后缀

  • 类型:String
  • 默认值: '',默认不添加后缀
  • 说明:比如github图片:b/名字?raw=trueadd_end: ?raw=true

var_number: 匹配图片链接的图片名之前的url,值为变量数量

  • 类型: Number
  • 默认值: 0
  • 说明:匹配url不固定的地方,用于取出图片名。

栗子:

下面的图片链接变量是: /年/月/日/,这三个是不固定的,所以var_number: 3。

![](https://user-gold-cdn.xitu.io/2019/5/20/图片名字?w=2024&h=1240&f=png&s=339262)
![](https://user-gold-cdn.xitu.io/2018/6/16/图片名字)
replace_image_url: 'https://user-gold-cdn.xitu.io/'
`var_number`: 3

下面的链接在图片名字前都没有变量是固定的,不用传var_number,默认为0

http://ww1.sinaimg.cn/large/图片名字.jpg
http://ww1.sinaimg.cn/large/图片名字.jpg
replace_image_url: 'http://ww1.sinaimg.cn/large/'

read_markdown_src: 要查找markdown文件的文件夹地址

  • 类型:String
  • 默认值:'./source',查找项目下的source文件夹
  • 查找整个项目,read_markdown_src: './'

以上参数实际上可以使用本脚本了,以下是示例:

// ![](https://user-gold-cdn.xitu.io/2019/5/20/16ad3ff354f2dac3?w=2024&h=1240&f=png&s=339262)
// ![](https://user-gold-cdn.xitu.io/2018/6/16/164081cfd8400f92) // 失效图片
// 要替换成:
![](https://github.com/仓库名字/blob/master/juejin/图片名字?raw=true)

let option = {
  replace_image_url: 'https://user-gold-cdn.xitu.io/' // 失效地址
  new_image_url: 'https://github.com/仓库名字/blob/master/weibo_img_move/', // 图片上传的地址
  add_end: '?raw=true' // github图片地址有后缀 直接进去是仓库
  var_number: 3 // url前半部分的变量数量 比如上面的日期是变量: /2019/5/20/、/2018/6/16/
}

test:是否开启测试模式

  • 类型:Boolean
  • 默认值: true
  • 开启测试模式,不会修改markdown文件,其他的不影响,包括:备份项目,下载图片等。

is_link:是否匹配链接

  • 类型:Boolean
  • 默认值: true
  • 关闭该选项,将只匹配![](link),不匹配[]()
  • 场景:链接指向一张图片,然后图片失效了,链接没有替换。

down_img_src: 图片下载到这个文件夹下面

  • 类型:String
  • 默认值: './markdown_img_src''
  • 说明:没有该文件夹,会新建,有该文件夹,直接下载到该文件夹下面。

filter_item: 过滤文件夹,不查找.md

  • 类型:Array
  • 默认值: ['.git'],默认过滤.git文件夹。
  • 建议替换整个值。

copy_item_data:备份项目的地址

  • 类型:String
  • 默认值:copy_item_obkoro,更改这个值即更换存储文件夹
  • 执行时机:在初始化(new)的时候即备份read_markdown_src的文件
  • 关闭备份: copy_item_data: ''
  • 当已有备份项目的文件夹,将不再备份项目。比如项目根目录已经有一个copy_item_obkoro文件夹。

write_file_time: 多久后开始修改markdown的图片链接

  • 类型: Number
  • 默认值: 3000
  • 为了避免备份项目的时候,markdown文件已经被修改了,导致文件数据损坏,需要间隔一段时间才能修改,当项目过大备份项目时间需要更长时间的时候,可以自定义传入一个值。
  • 只有在脚本在备份项目的时候,这个时间间隔才会生效。

downFileNameCallBack: 处理下载图片的name

  • 类型: function, 参数:fileName图片名字。
  • 默认值: null
  • 返回fileName图片名字,用于下载时的图片名字以及替换链接时候的图片名字。
  • 下载的图片名-相关内容:
    • 之前下载的图片名字和修改markdown链接是将后面部分全都切出来,比如https://user-gold-cdn.xitu.io/2018/5/1/1631b6f52f7e7015?w=344&h=344&f=jpeg&s=8317,图片名字是:1631b6f52f7e7015?w=344&h=344&f=jpeg&s=8317
    • github上无法显示待参数的图片:https://github.com/*/1631b6f52f7e7015?w=344&h=344&f=jpeg&s=8317
    • 现在默认后面的全都不要,正则匹配是:/^(\w+)/(取图片名前部分的字母或数字或下划线或汉字),比如该例子下载的图片名为:1631b6f52f7e7015
    • 当然下载的图片名变了,修改图片链接时:markdown中的链接也会一起变化的。
    • 如果跟你的需求不符合,就可以使用本选项来自行处理图片名字。

示例:

替换这个外链:https://user-gold-cdn.xitu.io/2019/5/20/图片名字?w=2024&h=1240&f=png&s=339262
// 参数fileName = 图片名字?w=2024&h=1240&f=png&s=339262
let option = {
    replace_image_url: 'https://user-gold-cdn.xitu.io/',
    read_markdown_src: './source', // 要查找markdown文件的文件夹地址
    down_img_src: './juejin', // 下载图片到这个文件夹
    var_number: 3 // url前半部分的变量数量 比如上面的日期: /2019/5/20/、/2018/6/16/
    downFileNameCallBack: (fileName) => {
      // do something:改名字/加图片格式等
      return fileName
   }
}
下载:./地址/fileName
修改markdown地址:https://xxx.com/juejin/fileName