This commit is contained in:
xugaoyi 2020-03-07 12:47:24 +08:00
parent 0761c560a4
commit 045d184cbf
9 changed files with 78 additions and 32 deletions

View File

@ -18,5 +18,5 @@ jobs:
steps:
- name: 'Checkout codes' # 步骤一,获取仓库代码
uses: actions/checkout@v1
- name: 'Run baiduPush.sh' # 步骤二执行sh命令文件
run: npm install && bash ./baiduPush.sh # 注意,运行目录是仓库根目录
- name: 'Run baiduPush' # 步骤二执行sh命令文件
run: npm install && npm run baiduPush # 运行目录是仓库根目录

View File

@ -1,14 +1,14 @@
# 基于VuePress构建的静态博客
# 一个简洁至上的 博客 & 文档 & 笔记管理 主题
## Introduce
1. 根据 vuepress 的默认主题修改而成,追求**极简主义**。
1. 根据 [vuepress](https://vuepress.vuejs.org/zh/) 的默认主题修改而成,追求**简洁至上**。
2. 这是一个兼具**博客文章** 与 **学习笔记** 管理的博客主题。
2. 这是一个兼具 **博客文章** & **技术文档** & **学习笔记** 管理的博客主题。
3. 添加博客所需的**评论**、**时间轴**、**分类**、**最近更新** 等。
4. 这主题可以很方便的管理你的**学习笔记**和**教程文档****扩展的搜索框**让你快速查找文档。
4. 这主题可以很方便的管理你的**学习笔记**和**技术文档****扩展的搜索框**让你快速查找文档。
5. 添加对*前端程序员*很友好**demo演示模块**很方便的在博客中插入demo同时可以查看demo源码跳转到codepen在线编辑。

View File

@ -3,8 +3,6 @@
# 确保脚本抛出遇到的错误
set -e
node utils/baiduPush.js # 生成所有链接文件
# 百度链接推送
curl -H 'Content-Type:text/plain' --data-binary @urls.txt "http://data.zz.baidu.com/urls?site=https://xugaoyi.com&token=T5PEAzhGaPNbjQ2X"

View File

@ -10,7 +10,7 @@ module.exports = {
"/04.更多/": [{"title":"学习","collapsable":false,"children":[["01.学习/02.提高学习效率的策略.md","提高学习效率的策略"],["01.学习/03.提高记忆的技巧.md","提高记忆的技巧"],["01.学习/04.自律小建议.md","自律小建议"],["01.学习/05.处理问题的思路.md","处理问题的思路"]]},{"title":"面试","collapsable":false,"children":[["03.面试/01.面试问题集锦.md","面试问题集锦"]]},{"title":"英语","collapsable":false,"children":[["04.英语/01.英语基础.md","英语基础"]]},{"title":"心情杂货","collapsable":false,"children":[["05.心情杂货/01.一个完美主义者的自我救赎.md","一个完美主义者的自我救赎"]]},["97.学习网站.md","学习网站"],["98.在线工具.md","在线工具"],["99.友情链接.md","友情链接"]],
"/about/": [["01.about.md","about"]],
"/about/": [["01.关于.md","关于"]],
"/timeline/": [["01.时间轴.md","时间轴"]],

View File

@ -40,29 +40,47 @@ curl -H 'Content-Type:text/plain' --data-binary @urls.txt "http://data.zz.baidu.
没关系,技术的本质就是让人"偷懒"的。于是我写了一个nodejs工具用于把所有的博客页面链接生成到`urls.txt`
```js
// baiduPush.js
/**
* 生成百度链接推送文件
*/
const fs = require('fs');
const path = require('path');
const readFileList = require('./modules/readFileList');
const logger = require('tracer').colorConsole();
const matter = require('gray-matter'); // FrontMatter解析器 https://github.com/jonschlinkert/gray-matter
const readFileList = require('./modules/readFileList');
const urlsRoot = path.join(__dirname, '..', 'urls.txt'); // 百度链接推送文件
const DOMAIN = 'https://xugaoyi.com'
const DOMAIN = process.argv.splice(2)[0]; // 获取命令行传入的参数
if (!DOMAIN) {
logger.error('请在运行此文件时指定一个你要进行百度推送的域名参数node utils/baiduPush.js https://xugaoyi.com')
return
}
main();
function main() {
fs.writeFileSync(urlsRoot, DOMAIN)
const files = readFileList(); // 读取所有md文件数据
files.forEach( file => {
const link = `\r\n${DOMAIN}${file.permalink}/`;
console.log(link);
fs.appendFileSync(urlsRoot, link);
const { data } = matter(fs.readFileSync(file.filePath, 'utf8'));
if (data.permalink) {
const link = `\r\n${DOMAIN}${data.permalink}/`;
console.log(link)
fs.appendFileSync(urlsRoot, link);
}
})
}
```
上面代码仅是针对我个人的博客生成链接到`urls.txt`文件。更多代码在 [这里](https://github.com/xugaoyi/blog/blob/master/utils/baiduPush.js)。
运行如下命令就可以生产一个包含博客所有链接的`urls.txt`文件:
```sh
node utils/baiduPush.js https://xugaoyi.com
```
哈哈,第一个麻烦解决了:smirk:,接下来是解决第二个需要手动运行推送命令的问题。
@ -80,6 +98,7 @@ GitHub Actions 是一个 CI/CD持续集成/持续部署)工具,但也可
配置文件的第一部分是触发条件。
```sh
## baiduPush.yml
name: 'baiduPush'
on:
@ -102,12 +121,31 @@ jobs:
- name: 'Checkout codes' # 步骤一,获取仓库代码
uses: actions/checkout@v1
- name: 'Run baiduPush.sh' # 步骤二执行sh命令文件
run: npm install && bash ./baiduPush.sh # 运行命令。(注意,运行目录是仓库根目录)
run: npm install && npm run baiduPush # 运行命令。(注意,运行目录是仓库根目录)
```
上面代码中指定运行环境是最新的ubuntu流程的第一步是从代码仓库获取代码第二步运行两个命令先安装项目依赖再运行`baiduPush.sh`文件。完整代码看 [这里](https://github.com/xugaoyi/blog/blob/master/.github/workflows/baiduPush.yml)
上面代码中指定运行环境是最新的ubuntu流程的第一步是从代码仓库获取代码第二步运行两个命令先安装项目依赖再运行写在`package.json`的`baiduPush`命令。完整代码看 [这里](https://github.com/xugaoyi/blog/blob/master/.github/workflows/baiduPush.yml)
### `baiduPush.sh`生成`urls.txt`和执行百度推送命令
### `baiduPush`命令在`package.json`配置
```js
// package.json
"scripts": {
"baiduPush": "node utils/baiduPush.js https://xugaoyi.com && bash baiduPush.sh"
}
```
上面脚本中在`node utils/baiduPush.js`的后面加入你的域名参数。运行此命令生成`urls.txt`文件,然后执行`baiduPush.sh`文件。
注意在使用window系统时请使用git bash命令窗运行上面的脚本。
> `baiduPush`命令之所以没有放在`baiduPush.yml`的 run 里面是因为我想在本地也可以执行`npm run baiduPush`命令。
### `baiduPush.sh`执行百度推送命令
`baiduPush.sh`文件:
@ -116,23 +154,21 @@ jobs:
set -e
node utils/baiduPush.js # 生成所有链接文件
# 百度链接推送
curl -H 'Content-Type:text/plain' --data-binary @urls.txt "http://data.zz.baidu.com/urls?site=https://xugaoyi.com&token=T5PEAzhGa*****"
rm -rf urls.txt # 灭迹
```
上面代码中,先使用node运行先前写好的工具用于生成`urls.txt`文件,然后执行推送命令
上面代码中,把`urls.txt`文件中的所有链接一次性推送
> baiduPush.sh内的命令其实可以写在yml文件的`run`字段中我这里分开写是为了方便在本地也可以运行baiduPush.sh文件
> baiduPush.sh内的命令之所以没有写在`package.json`是因为我觉得命令太长了,不方便阅读
写好配置推送到仓库就会在每天的早上7点钟自动运行命令生成一个包含博客所有页面链接的`urls.txt`文件,并把所有链接一次性推送到百度。麻麻再也不用担心我的网站不被收录~~:kissing_heart: :kissing_heart: :kissing_heart:
在这个基础上可以扩展,满足你自己的定时需求。
在这个基础上可以扩展,使用GitHub Actions满足你自己的各种定时需求。

View File

@ -5,7 +5,9 @@ permalink: /pages/41f87d890d0a02af
---
# 解决百度无法收录搭建在GitHub上的静态博客的问题
::: warning
如果你正在寻找本博客的搭建文档,博主建议你直接查看[vuepress](https://vuepress.vuejs.org/zh/)官方文档。另外本博客对vuepress默认主题做的改造可以查看这个仓库的[README](https://github.com/xugaoyi/blog)。
:::
## 背景

View File

@ -1,9 +1,9 @@
---
title: "about"
date: "2019-12-25 14:27:01"
permalink: "/about"
sidebar: false
article: false
title: 关于
date: 2019-12-25 14:27:01
permalink: /about
sidebar: false
article: false
---
# 关于

View File

@ -6,7 +6,7 @@
"build": "node utils/frontmatter.js && node utils/sidebar.js && vuepress build docs",
"deploy": "bash deploy.sh",
"updateFM": "node utils/frontmatter.js -update",
"baiduPush": "node utils/baiduPush.js && bash baiduPush.sh"
"baiduPush": "node utils/baiduPush.js https://xugaoyi.com && bash baiduPush.sh"
},
"license": "MIT",
"devDependencies": {

View File

@ -3,11 +3,16 @@
*/
const fs = require('fs');
const path = require('path');
const logger = require('tracer').colorConsole();
const matter = require('gray-matter'); // FrontMatter解析器 https://github.com/jonschlinkert/gray-matter
const readFileList = require('./modules/readFileList');
const urlsRoot = path.join(__dirname, '..', 'urls.txt'); // 百度链接推送文件
const DOMAIN = process.argv.splice(2)[0]; // 获取命令行传入的参数
const DOMAIN = 'https://xugaoyi.com'
if (!DOMAIN) {
logger.error('请在运行此文件时指定一个你要进行百度推送的域名参数node utils/baiduPush.js https://xugaoyi.com')
return
}
main();
@ -19,7 +24,12 @@ function main() {
const files = readFileList(); // 读取所有md文件数据
files.forEach( file => {
const { data } = matter(fs.readFileSync(file.filePath, 'utf8'));
data.permalink && fs.appendFileSync(urlsRoot, `\r\n${DOMAIN}${data.permalink}/`);
const { data } = matter(fs.readFileSync(file.filePath, 'utf8'));
if (data.permalink) {
const link = `\r\n${DOMAIN}${data.permalink}/`;
console.log(link)
fs.appendFileSync(urlsRoot, link);
}
})
}