[{"data":1,"prerenderedAt":2162},["ShallowReactive",2],{"navigation":3,"post-\u002Fposts\u002F2022\u002Fuse-gitlab-to-deploy-ghost-theme-automatically":20,"surroundPosts-\u002Fposts\u002F2022\u002Fuse-gitlab-to-deploy-ghost-theme-automatically":2150},[4,8,12,16],{"title":5,"path":6,"stem":7},"首页","\u002F","00.index",{"title":9,"path":10,"stem":11},"文章","\u002Fposts","01.posts",{"title":13,"path":14,"stem":15},"动态","\u002Fmoments","02.moments",{"title":17,"path":18,"stem":19},"关于","\u002Fabout","09.about",{"id":21,"title":22,"body":23,"class":2129,"cover":2130,"coverSize":2129,"date":2131,"description":53,"draft":2132,"extension":2133,"hideComments":2132,"location":2129,"meta":2134,"navigation":174,"path":2135,"readingTime":2136,"seo":2141,"sitemap":2142,"stem":2143,"tags":2144,"time":2129,"weather":2129,"__hash__":2149},"posts\u002Fposts\u002F2022\u002F20220524.use-gitlab-to-deploy-ghost-theme-automatically.md","使用 GitLab CI 自动部署 Ghost 主题",{"type":24,"value":25,"toc":2127},"minimark",[26,33,36,47,847,858,867,871,881,884,887,910,917,1864,1869,1975,1982,2106,2120,2123],[27,28,29],"blockquote",{},[30,31,32],"p",{},"居家隔离的第 N 天",[30,34,35],{},"今天收到了 Ghost 5.0 发布的邮件，第一时间更新了下，发现主题里有些功能已经不兼容了，于是准备对主题做下更新。在看 Ghost Integrations 的时候发现有个 GitHub 的插件特别好用，支持通过 GitHub Actions 自动部署你的主题。但是我自己的项目用的都是 GitLab，找了一圈，没有官方的插件。于是尝试自己通过 GitLab CI 来实现。",[30,37,38,39,46],{},"大致看了下基于 GitHub Actions 自动部署的实现方式，通过官方提供的一个 ",[40,41,45],"a",{"href":42,"rel":43},"https:\u002F\u002Fgithub.com\u002FTryGhost\u002Faction-deploy-theme\u002Fblob\u002Fmain\u002Findex.js",[44],"nofollow","TryGhost\u002Faction-deploy-theme"," 的步骤，代码很简单，总共 40 行，我们来看下它做了什么：",[48,49,54],"pre",{"className":50,"code":51,"language":52,"meta":53,"style":53},"language-javascript shiki shiki-themes material-theme-lighter github-light github-dark","const path = require('node:path')\nconst core = require('@actions\u002Fcore')\nconst exec = require('@actions\u002Fexec')\nconst GhostAdminApi = require('@tryghost\u002Fadmin-api');\n\n(async function main() {\n  try {\n    const url = core.getInput('api-url')\n    const api = new GhostAdminApi({\n      url,\n      key: core.getInput('api-key'),\n      version: 'canary'\n    })\n\n    const basePath = process.env.GITHUB_WORKSPACE\n    const pkgPath = path.join(process.env.GITHUB_WORKSPACE, 'package.json')\n\n    let zipPath = core.getInput('file')\n\n    \u002F\u002F Zip file was not provided - zip everything up!\n    if (!zipPath) {\n      const themeName = core.getInput('theme-name') || require(pkgPath).name\n      const themeZip = `${themeName}.zip`\n      const exclude = core.getInput('exclude') || ''\n      zipPath = themeZip\n\n      \u002F\u002F Create a zip\n      await exec.exec(`zip -r ${themeZip} ${core.getInput('working-directory') || '.'} -x *.git* *.zip yarn* npm* node_modules* *routes.yaml *redirects.yaml *redirects.json ${exclude}`, [], { cwd: basePath })\n    }\n\n    zipPath = path.join(basePath, zipPath)\n\n    \u002F\u002F Deploy it to the configured site\n    await api.themes.upload({ file: zipPath })\n    console.log(`${zipPath} successfully uploaded.`)\n  }\n  catch (err) {\n    console.error(err)\n    process.exit(1)\n  }\n}())\n","javascript","",[55,56,57,95,118,141,169,176,196,205,236,256,265,293,310,318,323,346,389,394,422,427,434,454,499,524,556,567,572,578,670,676,681,706,711,717,751,778,784,799,815,834,839],"code",{"__ignoreMap":53},[58,59,62,66,70,74,78,82,86,90,92],"span",{"class":60,"line":61},"line",1,[58,63,65],{"class":64},"sbsja","const",[58,67,69],{"class":68},"s_hVV"," path",[58,71,73],{"class":72},"smGrS"," =",[58,75,77],{"class":76},"sGLFI"," require",[58,79,81],{"class":80},"su5hD","(",[58,83,85],{"class":84},"sjJ54","'",[58,87,89],{"class":88},"s_sjI","node:path",[58,91,85],{"class":84},[58,93,94],{"class":80},")\n",[58,96,98,100,103,105,107,109,111,114,116],{"class":60,"line":97},2,[58,99,65],{"class":64},[58,101,102],{"class":68}," core",[58,104,73],{"class":72},[58,106,77],{"class":76},[58,108,81],{"class":80},[58,110,85],{"class":84},[58,112,113],{"class":88},"@actions\u002Fcore",[58,115,85],{"class":84},[58,117,94],{"class":80},[58,119,121,123,126,128,130,132,134,137,139],{"class":60,"line":120},3,[58,122,65],{"class":64},[58,124,125],{"class":68}," exec",[58,127,73],{"class":72},[58,129,77],{"class":76},[58,131,81],{"class":80},[58,133,85],{"class":84},[58,135,136],{"class":88},"@actions\u002Fexec",[58,138,85],{"class":84},[58,140,94],{"class":80},[58,142,144,146,149,151,153,155,157,160,162,165],{"class":60,"line":143},4,[58,145,65],{"class":64},[58,147,148],{"class":68}," GhostAdminApi",[58,150,73],{"class":72},[58,152,77],{"class":76},[58,154,81],{"class":80},[58,156,85],{"class":84},[58,158,159],{"class":88},"@tryghost\u002Fadmin-api",[58,161,85],{"class":84},[58,163,164],{"class":80},")",[58,166,168],{"class":167},"sP7_E",";\n",[58,170,172],{"class":60,"line":171},5,[58,173,175],{"emptyLinePlaceholder":174},true,"\n",[58,177,179,181,184,187,190,193],{"class":60,"line":178},6,[58,180,81],{"class":80},[58,182,183],{"class":64},"async",[58,185,186],{"class":64}," function",[58,188,189],{"class":76}," main",[58,191,192],{"class":167},"()",[58,194,195],{"class":167}," {\n",[58,197,199,203],{"class":60,"line":198},7,[58,200,202],{"class":201},"sVHd0","  try",[58,204,195],{"class":167},[58,206,208,211,214,216,218,221,224,227,229,232,234],{"class":60,"line":207},8,[58,209,210],{"class":64},"    const",[58,212,213],{"class":68}," url",[58,215,73],{"class":72},[58,217,102],{"class":80},[58,219,220],{"class":167},".",[58,222,223],{"class":76},"getInput",[58,225,81],{"class":226},"skxfh",[58,228,85],{"class":84},[58,230,231],{"class":88},"api-url",[58,233,85],{"class":84},[58,235,94],{"class":226},[58,237,239,241,244,246,249,251,253],{"class":60,"line":238},9,[58,240,210],{"class":64},[58,242,243],{"class":68}," api",[58,245,73],{"class":72},[58,247,248],{"class":72}," new",[58,250,148],{"class":76},[58,252,81],{"class":226},[58,254,255],{"class":167},"{\n",[58,257,259,262],{"class":60,"line":258},10,[58,260,261],{"class":80},"      url",[58,263,264],{"class":167},",\n",[58,266,268,271,274,276,278,280,282,284,287,289,291],{"class":60,"line":267},11,[58,269,270],{"class":226},"      key",[58,272,273],{"class":167},":",[58,275,102],{"class":80},[58,277,220],{"class":167},[58,279,223],{"class":76},[58,281,81],{"class":226},[58,283,85],{"class":84},[58,285,286],{"class":88},"api-key",[58,288,85],{"class":84},[58,290,164],{"class":226},[58,292,264],{"class":167},[58,294,296,299,301,304,307],{"class":60,"line":295},12,[58,297,298],{"class":226},"      version",[58,300,273],{"class":167},[58,302,303],{"class":84}," '",[58,305,306],{"class":88},"canary",[58,308,309],{"class":84},"'\n",[58,311,313,316],{"class":60,"line":312},13,[58,314,315],{"class":167},"    }",[58,317,94],{"class":226},[58,319,321],{"class":60,"line":320},14,[58,322,175],{"emptyLinePlaceholder":174},[58,324,326,328,331,333,336,338,341,343],{"class":60,"line":325},15,[58,327,210],{"class":64},[58,329,330],{"class":68}," basePath",[58,332,73],{"class":72},[58,334,335],{"class":80}," process",[58,337,220],{"class":167},[58,339,340],{"class":80},"env",[58,342,220],{"class":167},[58,344,345],{"class":68},"GITHUB_WORKSPACE\n",[58,347,349,351,354,356,358,360,363,365,368,370,372,374,377,380,382,385,387],{"class":60,"line":348},16,[58,350,210],{"class":64},[58,352,353],{"class":68}," pkgPath",[58,355,73],{"class":72},[58,357,69],{"class":80},[58,359,220],{"class":167},[58,361,362],{"class":76},"join",[58,364,81],{"class":226},[58,366,367],{"class":80},"process",[58,369,220],{"class":167},[58,371,340],{"class":80},[58,373,220],{"class":167},[58,375,376],{"class":68},"GITHUB_WORKSPACE",[58,378,379],{"class":167},",",[58,381,303],{"class":84},[58,383,384],{"class":88},"package.json",[58,386,85],{"class":84},[58,388,94],{"class":226},[58,390,392],{"class":60,"line":391},17,[58,393,175],{"emptyLinePlaceholder":174},[58,395,397,400,403,405,407,409,411,413,415,418,420],{"class":60,"line":396},18,[58,398,399],{"class":64},"    let",[58,401,402],{"class":80}," zipPath",[58,404,73],{"class":72},[58,406,102],{"class":80},[58,408,220],{"class":167},[58,410,223],{"class":76},[58,412,81],{"class":226},[58,414,85],{"class":84},[58,416,417],{"class":88},"file",[58,419,85],{"class":84},[58,421,94],{"class":226},[58,423,425],{"class":60,"line":424},19,[58,426,175],{"emptyLinePlaceholder":174},[58,428,430],{"class":60,"line":429},20,[58,431,433],{"class":432},"sutJx","    \u002F\u002F Zip file was not provided - zip everything up!\n",[58,435,437,440,443,446,449,452],{"class":60,"line":436},21,[58,438,439],{"class":201},"    if",[58,441,442],{"class":226}," (",[58,444,445],{"class":72},"!",[58,447,448],{"class":80},"zipPath",[58,450,451],{"class":226},") ",[58,453,255],{"class":167},[58,455,457,460,463,465,467,469,471,473,475,478,480,482,485,487,489,492,494,496],{"class":60,"line":456},22,[58,458,459],{"class":64},"      const",[58,461,462],{"class":68}," themeName",[58,464,73],{"class":72},[58,466,102],{"class":80},[58,468,220],{"class":167},[58,470,223],{"class":76},[58,472,81],{"class":226},[58,474,85],{"class":84},[58,476,477],{"class":88},"theme-name",[58,479,85],{"class":84},[58,481,451],{"class":226},[58,483,484],{"class":72},"||",[58,486,77],{"class":76},[58,488,81],{"class":226},[58,490,491],{"class":80},"pkgPath",[58,493,164],{"class":226},[58,495,220],{"class":167},[58,497,498],{"class":80},"name\n",[58,500,502,504,507,509,512,515,518,521],{"class":60,"line":501},23,[58,503,459],{"class":64},[58,505,506],{"class":68}," themeZip",[58,508,73],{"class":72},[58,510,511],{"class":84}," `${",[58,513,514],{"class":80},"themeName",[58,516,517],{"class":84},"}",[58,519,520],{"class":88},".zip",[58,522,523],{"class":84},"`\n",[58,525,527,529,532,534,536,538,540,542,544,547,549,551,553],{"class":60,"line":526},24,[58,528,459],{"class":64},[58,530,531],{"class":68}," exclude",[58,533,73],{"class":72},[58,535,102],{"class":80},[58,537,220],{"class":167},[58,539,223],{"class":76},[58,541,81],{"class":226},[58,543,85],{"class":84},[58,545,546],{"class":88},"exclude",[58,548,85],{"class":84},[58,550,451],{"class":226},[58,552,484],{"class":72},[58,554,555],{"class":84}," ''\n",[58,557,559,562,564],{"class":60,"line":558},25,[58,560,561],{"class":80},"      zipPath",[58,563,73],{"class":72},[58,565,566],{"class":80}," themeZip\n",[58,568,570],{"class":60,"line":569},26,[58,571,175],{"emptyLinePlaceholder":174},[58,573,575],{"class":60,"line":574},27,[58,576,577],{"class":432},"      \u002F\u002F Create a zip\n",[58,579,581,584,586,588,591,593,596,599,602,605,607,610,613,615,617,620,622,625,627,629,631,633,635,638,641,643,645,648,650,653,655,658,661,663,665,668],{"class":60,"line":580},28,[58,582,583],{"class":201},"      await",[58,585,125],{"class":80},[58,587,220],{"class":167},[58,589,590],{"class":76},"exec",[58,592,81],{"class":226},[58,594,595],{"class":84},"`",[58,597,598],{"class":88},"zip -r ",[58,600,601],{"class":84},"${",[58,603,604],{"class":80},"themeZip",[58,606,517],{"class":84},[58,608,609],{"class":84}," ${",[58,611,612],{"class":80},"core",[58,614,220],{"class":84},[58,616,223],{"class":76},[58,618,81],{"class":619},"sfo-9",[58,621,85],{"class":84},[58,623,624],{"class":88},"working-directory",[58,626,85],{"class":84},[58,628,451],{"class":619},[58,630,484],{"class":72},[58,632,303],{"class":84},[58,634,220],{"class":88},[58,636,637],{"class":84},"'}",[58,639,640],{"class":88}," -x *.git* *.zip yarn* npm* node_modules* *routes.yaml *redirects.yaml *redirects.json ",[58,642,601],{"class":84},[58,644,546],{"class":80},[58,646,647],{"class":84},"}`",[58,649,379],{"class":167},[58,651,652],{"class":226}," []",[58,654,379],{"class":167},[58,656,657],{"class":167}," {",[58,659,660],{"class":226}," cwd",[58,662,273],{"class":167},[58,664,330],{"class":80},[58,666,667],{"class":167}," }",[58,669,94],{"class":226},[58,671,673],{"class":60,"line":672},29,[58,674,675],{"class":167},"    }\n",[58,677,679],{"class":60,"line":678},30,[58,680,175],{"emptyLinePlaceholder":174},[58,682,684,687,689,691,693,695,697,700,702,704],{"class":60,"line":683},31,[58,685,686],{"class":80},"    zipPath",[58,688,73],{"class":72},[58,690,69],{"class":80},[58,692,220],{"class":167},[58,694,362],{"class":76},[58,696,81],{"class":226},[58,698,699],{"class":80},"basePath",[58,701,379],{"class":167},[58,703,402],{"class":80},[58,705,94],{"class":226},[58,707,709],{"class":60,"line":708},32,[58,710,175],{"emptyLinePlaceholder":174},[58,712,714],{"class":60,"line":713},33,[58,715,716],{"class":432},"    \u002F\u002F Deploy it to the configured site\n",[58,718,720,723,725,727,730,732,735,737,740,743,745,747,749],{"class":60,"line":719},34,[58,721,722],{"class":201},"    await",[58,724,243],{"class":80},[58,726,220],{"class":167},[58,728,729],{"class":80},"themes",[58,731,220],{"class":167},[58,733,734],{"class":76},"upload",[58,736,81],{"class":226},[58,738,739],{"class":167},"{",[58,741,742],{"class":226}," file",[58,744,273],{"class":167},[58,746,402],{"class":80},[58,748,667],{"class":167},[58,750,94],{"class":226},[58,752,754,757,759,762,764,767,769,771,774,776],{"class":60,"line":753},35,[58,755,756],{"class":80},"    console",[58,758,220],{"class":167},[58,760,761],{"class":76},"log",[58,763,81],{"class":226},[58,765,766],{"class":84},"`${",[58,768,448],{"class":80},[58,770,517],{"class":84},[58,772,773],{"class":88}," successfully uploaded.",[58,775,595],{"class":84},[58,777,94],{"class":226},[58,779,781],{"class":60,"line":780},36,[58,782,783],{"class":167},"  }\n",[58,785,787,790,792,795,797],{"class":60,"line":786},37,[58,788,789],{"class":201},"  catch",[58,791,442],{"class":226},[58,793,794],{"class":80},"err",[58,796,451],{"class":226},[58,798,255],{"class":167},[58,800,802,804,806,809,811,813],{"class":60,"line":801},38,[58,803,756],{"class":80},[58,805,220],{"class":167},[58,807,808],{"class":76},"error",[58,810,81],{"class":226},[58,812,794],{"class":80},[58,814,94],{"class":226},[58,816,818,821,823,826,828,832],{"class":60,"line":817},39,[58,819,820],{"class":80},"    process",[58,822,220],{"class":167},[58,824,825],{"class":76},"exit",[58,827,81],{"class":226},[58,829,831],{"class":830},"srdBf","1",[58,833,94],{"class":226},[58,835,837],{"class":60,"line":836},40,[58,838,783],{"class":167},[58,840,842,844],{"class":60,"line":841},41,[58,843,517],{"class":167},[58,845,846],{"class":80},"())\n",[30,848,849,850,853,854,857],{},"把主题打包成 zip 包，然后提供 Ghost 上创建的 ",[55,851,852],{},"Admin API Key"," 和 ",[55,855,856],{},"API URL","，通过 API 去上传，那么我们应该也可以自己去实现。",[30,859,860,861,853,864,866],{},"首先，我们也需要去 Ghost 后台创建一个自定义的 Integration，比如取名叫 GitLab CI，目的是为了获得 ",[55,862,863],{},"Admin API key",[55,865,856],{},"，后面在 GitLab CI 中需要用到。",[868,869],"post-image",{"filename":870},"01.png",[30,872,873,874,853,877,880],{},"下一步，去 GitLab CI 中，把这两个内容配置成变量，取名 ",[55,875,876],{},"GHOST_ADMIN_API_KEY",[55,878,879],{},"GHOST_API_URL"," 以便在 CI 脚本中使用。",[868,882],{"filename":883},"02.png",[30,885,886],{},"在项目中添加 Ghost Admin API 库：",[48,888,892],{"className":889,"code":890,"language":891,"meta":53,"style":53},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","yarn add @tryghost\u002Fadmin-api --dev\n","bash",[55,893,894],{"__ignoreMap":53},[58,895,896,900,903,906],{"class":60,"line":61},[58,897,899],{"class":898},"sbgvK","yarn",[58,901,902],{"class":88}," add",[58,904,905],{"class":88}," @tryghost\u002Fadmin-api",[58,907,909],{"class":908},"stzsN"," --dev\n",[30,911,912,913,916],{},"在 ",[55,914,915],{},"gulpfile.js"," 中插入部署的任务：",[48,918,920],{"className":50,"code":919,"language":52,"meta":53,"style":53},"const GhostAdminApi = require('@tryghost\u002Fadmin-api')\nconst { series, src, dest } = require('gulp')\nconst less = require('gulp-less')\nconst zip = require('gulp-zip')\nconst pump = require('pump')\n\nconst handleError = (done) => {\n  return function (err) {\n    if (err) {\n      console.error(err)\n    }\n    return done(err)\n  }\n}\n\nfunction css(done) {\n  pump(\n    [\n      src('.\u002Fassets\u002Fcss\u002F*.less', { sourcemaps: true }),\n      less({}),\n      dest('assets\u002Fcss', { sourcemaps: '.\u002F' }),\n    ],\n    handleError(done)\n  )\n}\n\nfunction zipper(done) {\n  const targetDir = 'dist\u002F'\n  const themeName = require('.\u002Fpackage.json').name\n  const filename = `${themeName}.zip`\n\n  pump(\n    [\n      src(['**', '!node_modules', '!node_modules\u002F**', '!dist', '!dist\u002F**']),\n      zip(filename),\n      dest(targetDir),\n    ],\n    handleError(done)\n  )\n}\n\nasync function deploy(done) {\n  try {\n    const zipFile = `dist\u002F${require('.\u002Fpackage.json').name}.zip`\n    const api = new GhostAdminApi({\n      url: process.env.GHOST_API_URL,\n      key: process.env.GHOST_ADMIN_API_KEY,\n      version: `v${require('.\u002Fpackage.json').version}`,\n    })\n\n    await api.themes.upload({ file: zipFile })\n    console.log(`${zipFile} successfully uploaded.`)\n    done()\n  }\n  catch (err) {\n    console.error(err)\n    done(err)\n  }\n}\n\nconst build = series(css)\n\nexports.build = build\nexports.zip = series(build, zipper)\nexports.deploy = deploy\nexports.default = build\n",[55,921,922,942,978,1000,1022,1044,1048,1071,1086,1098,1113,1117,1131,1135,1140,1144,1160,1168,1173,1206,1220,1255,1262,1273,1278,1282,1286,1301,1318,1343,1362,1366,1372,1376,1431,1445,1458,1464,1474,1478,1482,1486,1504,1511,1552,1569,1588,1607,1642,1649,1654,1683,1707,1716,1721,1734,1749,1760,1765,1770,1775,1790,1795,1813,1835,1850],{"__ignoreMap":53},[58,923,924,926,928,930,932,934,936,938,940],{"class":60,"line":61},[58,925,65],{"class":64},[58,927,148],{"class":68},[58,929,73],{"class":72},[58,931,77],{"class":76},[58,933,81],{"class":80},[58,935,85],{"class":84},[58,937,159],{"class":88},[58,939,85],{"class":84},[58,941,94],{"class":80},[58,943,944,946,948,951,953,956,958,961,963,965,967,969,971,974,976],{"class":60,"line":97},[58,945,65],{"class":64},[58,947,657],{"class":167},[58,949,950],{"class":68}," series",[58,952,379],{"class":167},[58,954,955],{"class":68}," src",[58,957,379],{"class":167},[58,959,960],{"class":68}," dest",[58,962,667],{"class":167},[58,964,73],{"class":72},[58,966,77],{"class":76},[58,968,81],{"class":80},[58,970,85],{"class":84},[58,972,973],{"class":88},"gulp",[58,975,85],{"class":84},[58,977,94],{"class":80},[58,979,980,982,985,987,989,991,993,996,998],{"class":60,"line":120},[58,981,65],{"class":64},[58,983,984],{"class":68}," less",[58,986,73],{"class":72},[58,988,77],{"class":76},[58,990,81],{"class":80},[58,992,85],{"class":84},[58,994,995],{"class":88},"gulp-less",[58,997,85],{"class":84},[58,999,94],{"class":80},[58,1001,1002,1004,1007,1009,1011,1013,1015,1018,1020],{"class":60,"line":143},[58,1003,65],{"class":64},[58,1005,1006],{"class":68}," zip",[58,1008,73],{"class":72},[58,1010,77],{"class":76},[58,1012,81],{"class":80},[58,1014,85],{"class":84},[58,1016,1017],{"class":88},"gulp-zip",[58,1019,85],{"class":84},[58,1021,94],{"class":80},[58,1023,1024,1026,1029,1031,1033,1035,1037,1040,1042],{"class":60,"line":171},[58,1025,65],{"class":64},[58,1027,1028],{"class":68}," pump",[58,1030,73],{"class":72},[58,1032,77],{"class":76},[58,1034,81],{"class":80},[58,1036,85],{"class":84},[58,1038,1039],{"class":88},"pump",[58,1041,85],{"class":84},[58,1043,94],{"class":80},[58,1045,1046],{"class":60,"line":178},[58,1047,175],{"emptyLinePlaceholder":174},[58,1049,1050,1052,1056,1058,1060,1064,1066,1069],{"class":60,"line":198},[58,1051,65],{"class":64},[58,1053,1055],{"class":1054},"sfCm-"," handleError",[58,1057,73],{"class":72},[58,1059,442],{"class":167},[58,1061,1063],{"class":1062},"s99_P","done",[58,1065,164],{"class":167},[58,1067,1068],{"class":64}," =>",[58,1070,195],{"class":167},[58,1072,1073,1076,1078,1080,1082,1084],{"class":60,"line":207},[58,1074,1075],{"class":201},"  return",[58,1077,186],{"class":64},[58,1079,442],{"class":167},[58,1081,794],{"class":1062},[58,1083,164],{"class":167},[58,1085,195],{"class":167},[58,1087,1088,1090,1092,1094,1096],{"class":60,"line":238},[58,1089,439],{"class":201},[58,1091,442],{"class":226},[58,1093,794],{"class":80},[58,1095,451],{"class":226},[58,1097,255],{"class":167},[58,1099,1100,1103,1105,1107,1109,1111],{"class":60,"line":258},[58,1101,1102],{"class":80},"      console",[58,1104,220],{"class":167},[58,1106,808],{"class":76},[58,1108,81],{"class":226},[58,1110,794],{"class":80},[58,1112,94],{"class":226},[58,1114,1115],{"class":60,"line":267},[58,1116,675],{"class":167},[58,1118,1119,1122,1125,1127,1129],{"class":60,"line":295},[58,1120,1121],{"class":201},"    return",[58,1123,1124],{"class":76}," done",[58,1126,81],{"class":226},[58,1128,794],{"class":80},[58,1130,94],{"class":226},[58,1132,1133],{"class":60,"line":312},[58,1134,783],{"class":167},[58,1136,1137],{"class":60,"line":320},[58,1138,1139],{"class":167},"}\n",[58,1141,1142],{"class":60,"line":325},[58,1143,175],{"emptyLinePlaceholder":174},[58,1145,1146,1149,1152,1154,1156,1158],{"class":60,"line":348},[58,1147,1148],{"class":64},"function",[58,1150,1151],{"class":76}," css",[58,1153,81],{"class":167},[58,1155,1063],{"class":1062},[58,1157,164],{"class":167},[58,1159,195],{"class":167},[58,1161,1162,1165],{"class":60,"line":391},[58,1163,1164],{"class":76},"  pump",[58,1166,1167],{"class":226},"(\n",[58,1169,1170],{"class":60,"line":396},[58,1171,1172],{"class":226},"    [\n",[58,1174,1175,1178,1180,1182,1185,1187,1189,1191,1194,1196,1200,1202,1204],{"class":60,"line":424},[58,1176,1177],{"class":76},"      src",[58,1179,81],{"class":226},[58,1181,85],{"class":84},[58,1183,1184],{"class":88},".\u002Fassets\u002Fcss\u002F*.less",[58,1186,85],{"class":84},[58,1188,379],{"class":167},[58,1190,657],{"class":167},[58,1192,1193],{"class":226}," sourcemaps",[58,1195,273],{"class":167},[58,1197,1199],{"class":1198},"syTEX"," true",[58,1201,667],{"class":167},[58,1203,164],{"class":226},[58,1205,264],{"class":167},[58,1207,1208,1211,1213,1216,1218],{"class":60,"line":429},[58,1209,1210],{"class":76},"      less",[58,1212,81],{"class":226},[58,1214,1215],{"class":167},"{}",[58,1217,164],{"class":226},[58,1219,264],{"class":167},[58,1221,1222,1225,1227,1229,1232,1234,1236,1238,1240,1242,1244,1247,1249,1251,1253],{"class":60,"line":436},[58,1223,1224],{"class":76},"      dest",[58,1226,81],{"class":226},[58,1228,85],{"class":84},[58,1230,1231],{"class":88},"assets\u002Fcss",[58,1233,85],{"class":84},[58,1235,379],{"class":167},[58,1237,657],{"class":167},[58,1239,1193],{"class":226},[58,1241,273],{"class":167},[58,1243,303],{"class":84},[58,1245,1246],{"class":88},".\u002F",[58,1248,85],{"class":84},[58,1250,667],{"class":167},[58,1252,164],{"class":226},[58,1254,264],{"class":167},[58,1256,1257,1260],{"class":60,"line":456},[58,1258,1259],{"class":226},"    ]",[58,1261,264],{"class":167},[58,1263,1264,1267,1269,1271],{"class":60,"line":501},[58,1265,1266],{"class":76},"    handleError",[58,1268,81],{"class":226},[58,1270,1063],{"class":80},[58,1272,94],{"class":226},[58,1274,1275],{"class":60,"line":526},[58,1276,1277],{"class":226},"  )\n",[58,1279,1280],{"class":60,"line":558},[58,1281,1139],{"class":167},[58,1283,1284],{"class":60,"line":569},[58,1285,175],{"emptyLinePlaceholder":174},[58,1287,1288,1290,1293,1295,1297,1299],{"class":60,"line":574},[58,1289,1148],{"class":64},[58,1291,1292],{"class":76}," zipper",[58,1294,81],{"class":167},[58,1296,1063],{"class":1062},[58,1298,164],{"class":167},[58,1300,195],{"class":167},[58,1302,1303,1306,1309,1311,1313,1316],{"class":60,"line":580},[58,1304,1305],{"class":64},"  const",[58,1307,1308],{"class":68}," targetDir",[58,1310,73],{"class":72},[58,1312,303],{"class":84},[58,1314,1315],{"class":88},"dist\u002F",[58,1317,309],{"class":84},[58,1319,1320,1322,1324,1326,1328,1330,1332,1335,1337,1339,1341],{"class":60,"line":672},[58,1321,1305],{"class":64},[58,1323,462],{"class":68},[58,1325,73],{"class":72},[58,1327,77],{"class":76},[58,1329,81],{"class":226},[58,1331,85],{"class":84},[58,1333,1334],{"class":88},".\u002Fpackage.json",[58,1336,85],{"class":84},[58,1338,164],{"class":226},[58,1340,220],{"class":167},[58,1342,498],{"class":80},[58,1344,1345,1347,1350,1352,1354,1356,1358,1360],{"class":60,"line":678},[58,1346,1305],{"class":64},[58,1348,1349],{"class":68}," filename",[58,1351,73],{"class":72},[58,1353,511],{"class":84},[58,1355,514],{"class":80},[58,1357,517],{"class":84},[58,1359,520],{"class":88},[58,1361,523],{"class":84},[58,1363,1364],{"class":60,"line":683},[58,1365,175],{"emptyLinePlaceholder":174},[58,1367,1368,1370],{"class":60,"line":708},[58,1369,1164],{"class":76},[58,1371,1167],{"class":226},[58,1373,1374],{"class":60,"line":713},[58,1375,1172],{"class":226},[58,1377,1378,1380,1383,1385,1388,1390,1392,1394,1397,1399,1401,1403,1406,1408,1410,1412,1415,1417,1419,1421,1424,1426,1429],{"class":60,"line":719},[58,1379,1177],{"class":76},[58,1381,1382],{"class":226},"([",[58,1384,85],{"class":84},[58,1386,1387],{"class":88},"**",[58,1389,85],{"class":84},[58,1391,379],{"class":167},[58,1393,303],{"class":84},[58,1395,1396],{"class":88},"!node_modules",[58,1398,85],{"class":84},[58,1400,379],{"class":167},[58,1402,303],{"class":84},[58,1404,1405],{"class":88},"!node_modules\u002F**",[58,1407,85],{"class":84},[58,1409,379],{"class":167},[58,1411,303],{"class":84},[58,1413,1414],{"class":88},"!dist",[58,1416,85],{"class":84},[58,1418,379],{"class":167},[58,1420,303],{"class":84},[58,1422,1423],{"class":88},"!dist\u002F**",[58,1425,85],{"class":84},[58,1427,1428],{"class":226},"])",[58,1430,264],{"class":167},[58,1432,1433,1436,1438,1441,1443],{"class":60,"line":753},[58,1434,1435],{"class":76},"      zip",[58,1437,81],{"class":226},[58,1439,1440],{"class":80},"filename",[58,1442,164],{"class":226},[58,1444,264],{"class":167},[58,1446,1447,1449,1451,1454,1456],{"class":60,"line":780},[58,1448,1224],{"class":76},[58,1450,81],{"class":226},[58,1452,1453],{"class":80},"targetDir",[58,1455,164],{"class":226},[58,1457,264],{"class":167},[58,1459,1460,1462],{"class":60,"line":786},[58,1461,1259],{"class":226},[58,1463,264],{"class":167},[58,1465,1466,1468,1470,1472],{"class":60,"line":801},[58,1467,1266],{"class":76},[58,1469,81],{"class":226},[58,1471,1063],{"class":80},[58,1473,94],{"class":226},[58,1475,1476],{"class":60,"line":817},[58,1477,1277],{"class":226},[58,1479,1480],{"class":60,"line":836},[58,1481,1139],{"class":167},[58,1483,1484],{"class":60,"line":841},[58,1485,175],{"emptyLinePlaceholder":174},[58,1487,1489,1491,1493,1496,1498,1500,1502],{"class":60,"line":1488},42,[58,1490,183],{"class":64},[58,1492,186],{"class":64},[58,1494,1495],{"class":76}," deploy",[58,1497,81],{"class":167},[58,1499,1063],{"class":1062},[58,1501,164],{"class":167},[58,1503,195],{"class":167},[58,1505,1507,1509],{"class":60,"line":1506},43,[58,1508,202],{"class":201},[58,1510,195],{"class":167},[58,1512,1514,1516,1519,1521,1524,1526,1528,1531,1533,1535,1537,1539,1541,1543,1546,1548,1550],{"class":60,"line":1513},44,[58,1515,210],{"class":64},[58,1517,1518],{"class":68}," zipFile",[58,1520,73],{"class":72},[58,1522,1523],{"class":84}," `",[58,1525,1315],{"class":88},[58,1527,601],{"class":84},[58,1529,1530],{"class":76},"require",[58,1532,81],{"class":619},[58,1534,85],{"class":84},[58,1536,1334],{"class":88},[58,1538,85],{"class":84},[58,1540,164],{"class":619},[58,1542,220],{"class":84},[58,1544,1545],{"class":80},"name",[58,1547,517],{"class":84},[58,1549,520],{"class":88},[58,1551,523],{"class":84},[58,1553,1555,1557,1559,1561,1563,1565,1567],{"class":60,"line":1554},45,[58,1556,210],{"class":64},[58,1558,243],{"class":68},[58,1560,73],{"class":72},[58,1562,248],{"class":72},[58,1564,148],{"class":76},[58,1566,81],{"class":226},[58,1568,255],{"class":167},[58,1570,1572,1574,1576,1578,1580,1582,1584,1586],{"class":60,"line":1571},46,[58,1573,261],{"class":226},[58,1575,273],{"class":167},[58,1577,335],{"class":80},[58,1579,220],{"class":167},[58,1581,340],{"class":80},[58,1583,220],{"class":167},[58,1585,879],{"class":68},[58,1587,264],{"class":167},[58,1589,1591,1593,1595,1597,1599,1601,1603,1605],{"class":60,"line":1590},47,[58,1592,270],{"class":226},[58,1594,273],{"class":167},[58,1596,335],{"class":80},[58,1598,220],{"class":167},[58,1600,340],{"class":80},[58,1602,220],{"class":167},[58,1604,876],{"class":68},[58,1606,264],{"class":167},[58,1608,1610,1612,1614,1616,1619,1621,1623,1625,1627,1629,1631,1633,1635,1638,1640],{"class":60,"line":1609},48,[58,1611,298],{"class":226},[58,1613,273],{"class":167},[58,1615,1523],{"class":84},[58,1617,1618],{"class":88},"v",[58,1620,601],{"class":84},[58,1622,1530],{"class":76},[58,1624,81],{"class":619},[58,1626,85],{"class":84},[58,1628,1334],{"class":88},[58,1630,85],{"class":84},[58,1632,164],{"class":619},[58,1634,220],{"class":84},[58,1636,1637],{"class":80},"version",[58,1639,647],{"class":84},[58,1641,264],{"class":167},[58,1643,1645,1647],{"class":60,"line":1644},49,[58,1646,315],{"class":167},[58,1648,94],{"class":226},[58,1650,1652],{"class":60,"line":1651},50,[58,1653,175],{"emptyLinePlaceholder":174},[58,1655,1657,1659,1661,1663,1665,1667,1669,1671,1673,1675,1677,1679,1681],{"class":60,"line":1656},51,[58,1658,722],{"class":201},[58,1660,243],{"class":80},[58,1662,220],{"class":167},[58,1664,729],{"class":80},[58,1666,220],{"class":167},[58,1668,734],{"class":76},[58,1670,81],{"class":226},[58,1672,739],{"class":167},[58,1674,742],{"class":226},[58,1676,273],{"class":167},[58,1678,1518],{"class":80},[58,1680,667],{"class":167},[58,1682,94],{"class":226},[58,1684,1686,1688,1690,1692,1694,1696,1699,1701,1703,1705],{"class":60,"line":1685},52,[58,1687,756],{"class":80},[58,1689,220],{"class":167},[58,1691,761],{"class":76},[58,1693,81],{"class":226},[58,1695,766],{"class":84},[58,1697,1698],{"class":80},"zipFile",[58,1700,517],{"class":84},[58,1702,773],{"class":88},[58,1704,595],{"class":84},[58,1706,94],{"class":226},[58,1708,1710,1713],{"class":60,"line":1709},53,[58,1711,1712],{"class":76},"    done",[58,1714,1715],{"class":226},"()\n",[58,1717,1719],{"class":60,"line":1718},54,[58,1720,783],{"class":167},[58,1722,1724,1726,1728,1730,1732],{"class":60,"line":1723},55,[58,1725,789],{"class":201},[58,1727,442],{"class":226},[58,1729,794],{"class":80},[58,1731,451],{"class":226},[58,1733,255],{"class":167},[58,1735,1737,1739,1741,1743,1745,1747],{"class":60,"line":1736},56,[58,1738,756],{"class":80},[58,1740,220],{"class":167},[58,1742,808],{"class":76},[58,1744,81],{"class":226},[58,1746,794],{"class":80},[58,1748,94],{"class":226},[58,1750,1752,1754,1756,1758],{"class":60,"line":1751},57,[58,1753,1712],{"class":76},[58,1755,81],{"class":226},[58,1757,794],{"class":80},[58,1759,94],{"class":226},[58,1761,1763],{"class":60,"line":1762},58,[58,1764,783],{"class":167},[58,1766,1768],{"class":60,"line":1767},59,[58,1769,1139],{"class":167},[58,1771,1773],{"class":60,"line":1772},60,[58,1774,175],{"emptyLinePlaceholder":174},[58,1776,1778,1780,1783,1785,1787],{"class":60,"line":1777},61,[58,1779,65],{"class":64},[58,1781,1782],{"class":68}," build",[58,1784,73],{"class":72},[58,1786,950],{"class":76},[58,1788,1789],{"class":80},"(css)\n",[58,1791,1793],{"class":60,"line":1792},62,[58,1794,175],{"emptyLinePlaceholder":174},[58,1796,1798,1802,1804,1807,1810],{"class":60,"line":1797},63,[58,1799,1801],{"class":1800},"s39Yj","exports",[58,1803,220],{"class":167},[58,1805,1806],{"class":80},"build ",[58,1808,1809],{"class":72},"=",[58,1811,1812],{"class":80}," build\n",[58,1814,1816,1818,1820,1823,1825,1827,1830,1832],{"class":60,"line":1815},64,[58,1817,1801],{"class":1800},[58,1819,220],{"class":167},[58,1821,1822],{"class":80},"zip ",[58,1824,1809],{"class":72},[58,1826,950],{"class":76},[58,1828,1829],{"class":80},"(build",[58,1831,379],{"class":167},[58,1833,1834],{"class":80}," zipper)\n",[58,1836,1838,1840,1842,1845,1847],{"class":60,"line":1837},65,[58,1839,1801],{"class":1800},[58,1841,220],{"class":167},[58,1843,1844],{"class":80},"deploy ",[58,1846,1809],{"class":72},[58,1848,1849],{"class":80}," deploy\n",[58,1851,1853,1855,1857,1860,1862],{"class":60,"line":1852},66,[58,1854,1801],{"class":1800},[58,1856,220],{"class":167},[58,1858,1859],{"class":80},"default ",[58,1861,1809],{"class":72},[58,1863,1812],{"class":80},[30,1865,912,1866,1868],{},[55,1867,384],{}," 中插入脚本：",[48,1870,1874],{"className":1871,"code":1872,"language":1873,"meta":53,"style":53},"language-json shiki shiki-themes material-theme-lighter github-light github-dark","{\n  \u002F* ... *\u002F\n  \"scripts\": {\n    \"build\": \"gulp build\",\n    \"zip\": \"gulp zip\",\n    \"deploy\": \"gulp deploy\"\n  }\n  \u002F* ... *\u002F\n}\n","json",[55,1875,1876,1880,1885,1901,1924,1944,1963,1967,1971],{"__ignoreMap":53},[58,1877,1878],{"class":60,"line":61},[58,1879,255],{"class":167},[58,1881,1882],{"class":60,"line":97},[58,1883,1884],{"class":432},"  \u002F* ... *\u002F\n",[58,1886,1887,1890,1894,1897,1899],{"class":60,"line":120},[58,1888,1889],{"class":1800},"  \"",[58,1891,1893],{"class":1892},"sseR_","scripts",[58,1895,1896],{"class":1800},"\"",[58,1898,273],{"class":167},[58,1900,195],{"class":167},[58,1902,1903,1906,1910,1912,1914,1917,1920,1922],{"class":60,"line":143},[58,1904,1905],{"class":1800},"    \"",[58,1907,1909],{"class":1908},"sZMiF","build",[58,1911,1896],{"class":1800},[58,1913,273],{"class":167},[58,1915,1916],{"class":84}," \"",[58,1918,1919],{"class":88},"gulp build",[58,1921,1896],{"class":84},[58,1923,264],{"class":167},[58,1925,1926,1928,1931,1933,1935,1937,1940,1942],{"class":60,"line":171},[58,1927,1905],{"class":1800},[58,1929,1930],{"class":1908},"zip",[58,1932,1896],{"class":1800},[58,1934,273],{"class":167},[58,1936,1916],{"class":84},[58,1938,1939],{"class":88},"gulp zip",[58,1941,1896],{"class":84},[58,1943,264],{"class":167},[58,1945,1946,1948,1951,1953,1955,1957,1960],{"class":60,"line":178},[58,1947,1905],{"class":1800},[58,1949,1950],{"class":1908},"deploy",[58,1952,1896],{"class":1800},[58,1954,273],{"class":167},[58,1956,1916],{"class":84},[58,1958,1959],{"class":88},"gulp deploy",[58,1961,1962],{"class":84},"\"\n",[58,1964,1965],{"class":60,"line":198},[58,1966,783],{"class":167},[58,1968,1969],{"class":60,"line":207},[58,1970,1884],{"class":432},[58,1972,1973],{"class":60,"line":238},[58,1974,1139],{"class":167},[30,1976,1977,1978,1981],{},"添加 ",[55,1979,1980],{},".gitlab-ci.yml"," 文件：",[48,1983,1987],{"className":1984,"code":1985,"language":1986,"meta":53,"style":53},"language-yaml shiki shiki-themes material-theme-lighter github-light github-dark","image: node:14-slim # 注意：不要用 alpine 的镜像，上传至 https 站点会有问题\n\nstages:\n  - deploy\n\ndeploy:\n  stage: deploy\n  script:\n    - yarn install\n    - yarn zip\n    - yarn deploy\n  only:\n    - tags\n  cache:\n    paths:\n      - node_modules\u002F\n","yaml",[55,1988,1989,2003,2007,2015,2022,2026,2032,2041,2048,2056,2063,2070,2077,2084,2091,2098],{"__ignoreMap":53},[58,1990,1991,1995,1997,2000],{"class":60,"line":61},[58,1992,1994],{"class":1993},"sQzsp","image",[58,1996,273],{"class":167},[58,1998,1999],{"class":88}," node:14-slim",[58,2001,2002],{"class":432}," # 注意：不要用 alpine 的镜像，上传至 https 站点会有问题\n",[58,2004,2005],{"class":60,"line":97},[58,2006,175],{"emptyLinePlaceholder":174},[58,2008,2009,2012],{"class":60,"line":120},[58,2010,2011],{"class":1993},"stages",[58,2013,2014],{"class":167},":\n",[58,2016,2017,2020],{"class":60,"line":143},[58,2018,2019],{"class":167},"  -",[58,2021,1849],{"class":88},[58,2023,2024],{"class":60,"line":171},[58,2025,175],{"emptyLinePlaceholder":174},[58,2027,2028,2030],{"class":60,"line":178},[58,2029,1950],{"class":1993},[58,2031,2014],{"class":167},[58,2033,2034,2037,2039],{"class":60,"line":198},[58,2035,2036],{"class":1993},"  stage",[58,2038,273],{"class":167},[58,2040,1849],{"class":88},[58,2042,2043,2046],{"class":60,"line":207},[58,2044,2045],{"class":1993},"  script",[58,2047,2014],{"class":167},[58,2049,2050,2053],{"class":60,"line":238},[58,2051,2052],{"class":167},"    -",[58,2054,2055],{"class":88}," yarn install\n",[58,2057,2058,2060],{"class":60,"line":258},[58,2059,2052],{"class":167},[58,2061,2062],{"class":88}," yarn zip\n",[58,2064,2065,2067],{"class":60,"line":267},[58,2066,2052],{"class":167},[58,2068,2069],{"class":88}," yarn deploy\n",[58,2071,2072,2075],{"class":60,"line":295},[58,2073,2074],{"class":1993},"  only",[58,2076,2014],{"class":167},[58,2078,2079,2081],{"class":60,"line":312},[58,2080,2052],{"class":167},[58,2082,2083],{"class":88}," tags\n",[58,2085,2086,2089],{"class":60,"line":320},[58,2087,2088],{"class":1993},"  cache",[58,2090,2014],{"class":167},[58,2092,2093,2096],{"class":60,"line":325},[58,2094,2095],{"class":1993},"    paths",[58,2097,2014],{"class":167},[58,2099,2100,2103],{"class":60,"line":348},[58,2101,2102],{"class":167},"      -",[58,2104,2105],{"class":88}," node_modules\u002F\n",[30,2107,2108,2109,2111,2112,2115,2116,2119],{},"注意，为了避免每次提交代码都部署，",[55,2110,1950],{}," 任务限制了只有打了 ",[55,2113,2114],{},"tag"," 的 ",[55,2117,2118],{},"commit"," 才会触发。",[30,2121,2122],{},"好了，更新代码，打个 tag 就会自动打包上传至 Ghost 后台了！",[2124,2125,2126],"style",{},"html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sGLFI, html code.shiki .sGLFI{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .skxfh, html code.shiki .skxfh{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sfo-9, html code.shiki .sfo-9{--shiki-light:#90A4AE;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sfCm-, html code.shiki .sfCm-{--shiki-light:#90A4AE;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s99_P, html code.shiki .s99_P{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit}html pre.shiki code .syTEX, html code.shiki .syTEX{--shiki-light:#FF5370;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sseR_, html code.shiki .sseR_{--shiki-light:#9C3EDA;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sQzsp, html code.shiki .sQzsp{--shiki-light:#E53935;--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":53,"searchDepth":97,"depth":97,"links":2128},[],null,"jpg","2022-05-24",false,"md",{},"\u002Fposts\u002F2022\u002Fuse-gitlab-to-deploy-ghost-theme-automatically",{"text":2137,"minutes":2138,"time":2139,"words":2140},"4 min read",3.575,214500,715,{"title":22,"description":53},{"loc":2135},"posts\u002F2022\u002F20220524.use-gitlab-to-deploy-ghost-theme-automatically",[2145,2146,2147,2148],"技术","Ghost","DevOps","博客","2cB9yXMzvXfyQ8XEXx9VDbtCvf4CKC-2FRBZ833gE-Q",[2151,2157],{"title":2152,"path":2153,"stem":2154,"date":2155,"description":2156,"children":-1},"关于人生的一些思考","\u002Fposts\u002F2022\u002Fthoughts-about-life","posts\u002F2022\u002F20220620.thoughts-about-life","2022-06-20","最近，老婆孩子回老家了，主要还是因为上海的疫情，幼儿园也不上学，各种兴趣班也都只能线上，索性直接回老家过暑假了，还能搞点兴趣班上一上。",{"title":2158,"path":2159,"stem":2160,"date":2161,"description":53,"children":-1},"回顾 2021，展望 2022","\u002Fposts\u002F2022\u002Freview-2021-and-look-forward-to-2022","posts\u002F2022\u002F20220119.review-2021-and-look-forward-to-2022","2022-01-19",1777580273987]