使用vuepress-plugin-sitemap生成vuepress项目sitemap

配置exclude时发现exclude不能满足我的需求, 因此做修改

exclude参数中可以使用*进行匹配

项目地址 (opens new window)

/* 正则数组 */
let wildcard = [];
/* 排除两个和两个以上的星号 */
let multipleAsterisks = new RegExp('/\\*{2,}/');

/* 初始化正则数组 */
for (let url of exclude) {
    if (multipleAsterisks.test(url)) {
        continue;
    }
    if (url.indexOf("*") > -1) {
        wildcard.push(new RegExp("^" + url.replace(/\*/g, ".*") + "$"));
    }
}

pagesMap.forEach((page, url) => {
    // 改一下这里的判断
    let canJoin = true;
    for (let reg of wildcard) {
        if (reg.test(url)) {
            canJoin = false;
            break;
        }
    }
    // 加入sitemap判断
    if (canJoin && !exclude.includes(url)) {
        sitemap.add({
            url: withBase(url),
            ...page
        })
    }
})

项目中遇到的坑:

forEach

forEach方法不能continuebreak

replaceAll

js没有replaceAll方法,使用replace正则替换

使用npmjs上传包

修改完成后上传到npmjs中

# 检查是否报错
npm install -g

# 登陆npm账户
npm login

# 上传代码到npm包管理库
npm publish