1 line
297 KiB
JSON
1 line
297 KiB
JSON
{"meta":{"version":1,"warehouse":"4.0.2"},"models":{"Asset":[{"_id":"themes/hexo-theme-cosy/source/css/0c63d269.css","path":"css/0c63d269.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/206.a3a4e130.css","path":"css/206.a3a4e130.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/21.88950121.css","path":"css/21.88950121.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/271.54fa1675.css","path":"css/271.54fa1675.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/2cd7dba2.css","path":"css/2cd7dba2.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/291.a8323266.css","path":"css/291.a8323266.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/2f1ea598.css","path":"css/2f1ea598.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/31d6cfe0.css","path":"css/31d6cfe0.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/3a4a90d1.css","path":"css/3a4a90d1.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/32ae9342.css","path":"css/32ae9342.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/3efc6cb5.css","path":"css/3efc6cb5.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/618.6513d67e.css","path":"css/618.6513d67e.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/429.fb1dabcb.css","path":"css/429.fb1dabcb.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/766.64ad3c35.css","path":"css/766.64ad3c35.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/945.fdf98cb0.css","path":"css/945.fdf98cb0.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/922.9efa0b6b.css","path":"css/922.9efa0b6b.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/aeb44e7a.css","path":"css/aeb44e7a.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/de5de8fb.css","path":"css/de5de8fb.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/4c3d0e88.css","path":"css/4c3d0e88.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/e01add4b.css","path":"css/e01add4b.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/f3729dde.css","path":"css/f3729dde.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/efca006a.css","path":"css/efca006a.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/ccbcde32.css","path":"css/ccbcde32.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/font/linear.woff2","path":"font/linear.woff2","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/font/motto.woff","path":"font/motto.woff","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/favicon.svg","path":"img/favicon.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon-arrow-left.svg","path":"img/icon-arrow-left.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon-book.svg","path":"img/icon-book.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon-click.svg","path":"img/icon-click.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon-date.svg","path":"img/icon-date.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon-link.svg","path":"img/icon-link.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon-layout.svg","path":"img/icon-layout.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon-sun.svg","path":"img/icon-sun.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon1.svg","path":"img/icon1.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon-moon.svg","path":"img/icon-moon.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon2.svg","path":"img/icon2.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/logo.png","path":"img/logo.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon3.svg","path":"img/icon3.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/07f44e09.js","path":"js/07f44e09.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/07f44e09.js.LICENSE.txt","path":"js/07f44e09.js.LICENSE.txt","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/1247bc3e.js","path":"js/1247bc3e.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/206.759361ed.js","path":"js/206.759361ed.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/21.282c05e7.js","path":"js/21.282c05e7.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/271.ee88a6de.js","path":"js/271.ee88a6de.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/291.4ac6984b.js","path":"js/291.4ac6984b.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/31d6cfe0.js","path":"js/31d6cfe0.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/3cf4fd98.js","path":"js/3cf4fd98.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/429.bc4769cb.js","path":"js/429.bc4769cb.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/430dbbd6.js","path":"js/430dbbd6.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/618.1a58fba9.js","path":"js/618.1a58fba9.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/766.9503a62c.js","path":"js/766.9503a62c.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/922.689e0633.js","path":"js/922.689e0633.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/85d1c72e.js","path":"js/85d1c72e.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/945.0313a94c.js","path":"js/945.0313a94c.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/ca6b30b5.js","path":"js/ca6b30b5.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/a02fa72b.js","path":"js/a02fa72b.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/f8b20eb9.js","path":"js/f8b20eb9.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/100.png","path":"img/qweather-color-icon/100.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/101.png","path":"img/qweather-color-icon/101.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/102.png","path":"img/qweather-color-icon/102.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/103.png","path":"img/qweather-color-icon/103.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/150.png","path":"img/qweather-color-icon/150.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/104.png","path":"img/qweather-color-icon/104.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/151.png","path":"img/qweather-color-icon/151.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/152.png","path":"img/qweather-color-icon/152.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/153.png","path":"img/qweather-color-icon/153.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/300.png","path":"img/qweather-color-icon/300.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/301.png","path":"img/qweather-color-icon/301.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/302.png","path":"img/qweather-color-icon/302.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/303.png","path":"img/qweather-color-icon/303.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/305.png","path":"img/qweather-color-icon/305.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/304.png","path":"img/qweather-color-icon/304.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/306.png","path":"img/qweather-color-icon/306.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/307.png","path":"img/qweather-color-icon/307.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/308.png","path":"img/qweather-color-icon/308.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/309.png","path":"img/qweather-color-icon/309.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/310.png","path":"img/qweather-color-icon/310.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/311.png","path":"img/qweather-color-icon/311.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/312.png","path":"img/qweather-color-icon/312.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/313.png","path":"img/qweather-color-icon/313.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/314.png","path":"img/qweather-color-icon/314.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/315.png","path":"img/qweather-color-icon/315.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/316.png","path":"img/qweather-color-icon/316.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/317.png","path":"img/qweather-color-icon/317.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/350.png","path":"img/qweather-color-icon/350.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/318.png","path":"img/qweather-color-icon/318.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/351.png","path":"img/qweather-color-icon/351.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/399.png","path":"img/qweather-color-icon/399.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/401.png","path":"img/qweather-color-icon/401.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/400.png","path":"img/qweather-color-icon/400.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/403.png","path":"img/qweather-color-icon/403.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/402.png","path":"img/qweather-color-icon/402.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/404.png","path":"img/qweather-color-icon/404.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/406.png","path":"img/qweather-color-icon/406.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/407.png","path":"img/qweather-color-icon/407.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/408.png","path":"img/qweather-color-icon/408.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/409.png","path":"img/qweather-color-icon/409.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/410.png","path":"img/qweather-color-icon/410.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/456.png","path":"img/qweather-color-icon/456.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/457.png","path":"img/qweather-color-icon/457.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/499.png","path":"img/qweather-color-icon/499.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/500.png","path":"img/qweather-color-icon/500.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/501.png","path":"img/qweather-color-icon/501.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/502.png","path":"img/qweather-color-icon/502.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/503.png","path":"img/qweather-color-icon/503.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/504.png","path":"img/qweather-color-icon/504.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/507.png","path":"img/qweather-color-icon/507.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/508.png","path":"img/qweather-color-icon/508.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/509.png","path":"img/qweather-color-icon/509.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/510.png","path":"img/qweather-color-icon/510.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/511.png","path":"img/qweather-color-icon/511.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/512.png","path":"img/qweather-color-icon/512.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/514.png","path":"img/qweather-color-icon/514.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/513.png","path":"img/qweather-color-icon/513.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/515.png","path":"img/qweather-color-icon/515.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/900.png","path":"img/qweather-color-icon/900.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/999.png","path":"img/qweather-color-icon/999.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/901.png","path":"img/qweather-color-icon/901.png","modified":1,"renderable":1},{"_id":"source/img/algolia-api-keys.png","path":"img/algolia-api-keys.png","modified":1,"renderable":0}],"Cache":[{"_id":"source/_posts/A Guide to Effective Dialogue.md","hash":"6b921148f345d387426eda1d8f8b2329d9b78194","modified":1698112058891},{"_id":"source/_posts/Cosy 入门.md","hash":"7be442a2f8cedca3f02fe02d0573de0a246d52f1","modified":1698033673108},{"_id":"source/_posts/Cosy-Starter-Guide.md","hash":"16b98500286f2aecd6408cf4e165712b3fad5a34","modified":1698033673108},{"_id":"source/_posts/Markdown Sample.md","hash":"aebe37c8f94a4f1275a5efda876e36ec4852122c","modified":1698033673108},{"_id":"source/_posts/front-end/verdaccio.md","hash":"50453d3e60c7e63e31bc9f3efcebc241d317fae0","modified":1697768855158},{"_id":"themes/hexo-theme-cosy/source/css/31d6cfe0.css","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1698112053538},{"_id":"themes/hexo-theme-cosy/source/js/31d6cfe0.js","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1698112053568},{"_id":"themes/hexo-theme-cosy/languages/ar.yml","hash":"de613e0512e106e67c39c5534ccfea29eb15f557","modified":1698112053515},{"_id":"themes/hexo-theme-cosy/languages/de.yml","hash":"20ccde52ba59700211177dbc6a0658489d3fabda","modified":1698112053516},{"_id":"themes/hexo-theme-cosy/_config.yml","hash":"410a5f27c5408aca6c29b36254a76eb28d24d4de","modified":1698112058891},{"_id":"themes/hexo-theme-cosy/languages/es.yml","hash":"3e47b0f87a02d7f8ece63becb37fcfbb1ed32b16","modified":1698112053516},{"_id":"themes/hexo-theme-cosy/languages/en.yml","hash":"aed30add7bc0e10b554ad474552a3fff3c4a5cad","modified":1698112053516},{"_id":"themes/hexo-theme-cosy/languages/fr.yml","hash":"125ed203d8ce117f61ab4e3e4ffca58cd7bb6c61","modified":1698112053517},{"_id":"themes/hexo-theme-cosy/languages/ja.yml","hash":"944eea06cacb1aeb58833eb273f32433d323768e","modified":1698112053517},{"_id":"themes/hexo-theme-cosy/languages/ko.yml","hash":"4cd415dee4bcdbdefd1b7df6caea76ccc258c49a","modified":1698112053517},{"_id":"themes/hexo-theme-cosy/languages/ru.yml","hash":"974811181b770e78e4571dfa87aed51fd3863043","modified":1698112053517},{"_id":"themes/hexo-theme-cosy/languages/zh-TW.yml","hash":"ad746b7bd795e81ed8f34e7fe05faf7e1cd999d7","modified":1698112053518},{"_id":"themes/hexo-theme-cosy/languages/zh-CN.yml","hash":"145d3317a11330c9c068c9b14ee39b82890c26ad","modified":1698112053518},{"_id":"themes/hexo-theme-cosy/layout/archive.ejs","hash":"b305028a324cdcb0b9c20a8caa61f525ca28eaaa","modified":1698112053523},{"_id":"themes/hexo-theme-cosy/layout/airplane.ejs","hash":"a4fd6b7757f0dd386bef78e57a42900ec2e16dd7","modified":1698112053522},{"_id":"themes/hexo-theme-cosy/layout/category.ejs","hash":"84675924fd28756777d3dd4e94976aed726ec5e9","modified":1698112053523},{"_id":"themes/hexo-theme-cosy/layout/breadcrumb.ejs","hash":"0f15549a94f639c832ad8a1967af00c66eefb620","modified":1698112053523},{"_id":"themes/hexo-theme-cosy/layout/layout.ejs","hash":"bbdc8a1018d9e6d1c9cd0feef47218e49bb6894b","modified":1698112053524},{"_id":"themes/hexo-theme-cosy/layout/index.ejs","hash":"55947f50f12e4137ddda3671a55205cf4318e39c","modified":1698112053523},{"_id":"themes/hexo-theme-cosy/layout/homebar.ejs","hash":"cedc0e3831187eb8a60dc5b72249bce2c14d95f0","modified":1698112053523},{"_id":"themes/hexo-theme-cosy/layout/postCopyright.ejs","hash":"227d9c0a8fb91905cc28c69fecf81e6f72826ff1","modified":1698112053524},{"_id":"themes/hexo-theme-cosy/layout/post.ejs","hash":"98fc72971079f64d1d28fe060065a4ac42fd818a","modified":1698112053524},{"_id":"themes/hexo-theme-cosy/layout/roadmap.ejs","hash":"8d002f955465706120ab6a43a87db6a56993e5be","modified":1698112053524},{"_id":"themes/hexo-theme-cosy/scripts/generate_excerpt.js","hash":"a7cfe46e7e389b1654c81f3e9a8a934dd80d735a","modified":1698112053529},{"_id":"themes/hexo-theme-cosy/scripts/mermaid_tag.js","hash":"bc74c79cf41709da1993597acaebae96d6b3761d","modified":1698112053530},{"_id":"themes/hexo-theme-cosy/layout/navigation.ejs","hash":"085f85db106880062689f0b7714c868e19baeb10","modified":1698112053524},{"_id":"themes/hexo-theme-cosy/scripts/sort_posts.js","hash":"5cedcd663fd7eb1b255360ea9eb6089fd55e959c","modified":1698112053530},{"_id":"themes/hexo-theme-cosy/layout/search.ejs","hash":"3cd6766a944c96c9d62d38c3aaa24bf2f12cc329","modified":1698112053524},{"_id":"themes/hexo-theme-cosy/scripts/postIcon.js","hash":"73362a6570b00613681425b59a30903be671cd91","modified":1698112053530},{"_id":"themes/hexo-theme-cosy/scripts/post_counter.js","hash":"62aaa594dafcffe5aa457628eaf183075cabe159","modified":1698112053530},{"_id":"themes/hexo-theme-cosy/source/css/0c63d269.css","hash":"6b9b9796cf8ff9349b724f4b789f1347eaa0d476","modified":1698112053537},{"_id":"themes/hexo-theme-cosy/source/css/271.54fa1675.css","hash":"845cb754fd4ea780279a16e01a345d55889866e2","modified":1698112053537},{"_id":"themes/hexo-theme-cosy/source/css/2cd7dba2.css","hash":"dbc4f3071866019f0faae76620928ddf2f6700e6","modified":1698112053538},{"_id":"themes/hexo-theme-cosy/source/css/206.a3a4e130.css","hash":"f8c04ec30e94eb972ff315b8c1eef655b9e8a03e","modified":1698112053537},{"_id":"themes/hexo-theme-cosy/layout/weather.ejs","hash":"e3f7c124b09821e2eb63850b16fd51cd43ea8614","modified":1698112053525},{"_id":"themes/hexo-theme-cosy/source/css/21.88950121.css","hash":"44c9b83ffe9151e2e233c2f55b6e89b30ea7c7bb","modified":1698112053537},{"_id":"themes/hexo-theme-cosy/source/css/291.a8323266.css","hash":"e18068692b42ef4b76adc55d5ddc9f2bb10203f4","modified":1698112053537},{"_id":"themes/hexo-theme-cosy/source/css/3a4a90d1.css","hash":"4ffc2c5e9f1afd4fa74d7d9b785e0697cd7fb770","modified":1698112053539},{"_id":"themes/hexo-theme-cosy/source/css/2f1ea598.css","hash":"ac520cdae0399c2b818dcac34c5ff58fd204d10f","modified":1698112053538},{"_id":"themes/hexo-theme-cosy/layout/welcome.ejs","hash":"54da2bc42aa6149b8900f25afc6033a20a034db2","modified":1698112053525},{"_id":"themes/hexo-theme-cosy/source/css/3efc6cb5.css","hash":"1f1958bfd921ac3eea83a1e14ed97e8e83b31fb6","modified":1698112053539},{"_id":"themes/hexo-theme-cosy/source/css/32ae9342.css","hash":"13860dfa3657005967610ec05d4dc75406a91a0c","modified":1698112053538},{"_id":"themes/hexo-theme-cosy/source/css/766.64ad3c35.css","hash":"8434994030b9b9d0fa3a82df079c860f49543b82","modified":1698112053540},{"_id":"themes/hexo-theme-cosy/source/css/618.6513d67e.css","hash":"660188677fab2c0946ac4b8ed81611ad5472feb8","modified":1698112053539},{"_id":"themes/hexo-theme-cosy/source/css/429.fb1dabcb.css","hash":"1f2b77bab319123d193042b9990056abe9f2fd73","modified":1698112053539},{"_id":"themes/hexo-theme-cosy/source/css/922.9efa0b6b.css","hash":"721bc1b89ae059267d9b4aa3cc37f5c1ff8f32c3","modified":1698112053540},{"_id":"themes/hexo-theme-cosy/source/css/de5de8fb.css","hash":"a05682caa4e0b8a106578468f795dad472ee75da","modified":1698112053541},{"_id":"themes/hexo-theme-cosy/source/css/aeb44e7a.css","hash":"95b181f50e6adb98be13bb60983edb155a83f6d7","modified":1698112053540},{"_id":"themes/hexo-theme-cosy/source/css/945.fdf98cb0.css","hash":"f227a8697bf14eb75ba63d14a0608db53c9a50a1","modified":1698112053540},{"_id":"themes/hexo-theme-cosy/source/css/4c3d0e88.css","hash":"c4a5bf3a1f7adf21c04d9950b02a67f516bbac9f","modified":1698112053539},{"_id":"themes/hexo-theme-cosy/source/css/e01add4b.css","hash":"5fc672a8fb8b65d60c087cc908d5170eaac56e0c","modified":1698112053541},{"_id":"themes/hexo-theme-cosy/source/css/f3729dde.css","hash":"2a7faa0c3816e3b653fb4540fa63504a26b2051f","modified":1698112053541},{"_id":"themes/hexo-theme-cosy/source/css/efca006a.css","hash":"97972d1b7ca177983b39a67e772736f661637468","modified":1698112053541},{"_id":"themes/hexo-theme-cosy/source/css/ccbcde32.css","hash":"3475deea0241c67fadc3de5149886e90af24f2e6","modified":1698112053541},{"_id":"themes/hexo-theme-cosy/source/font/linear.woff2","hash":"57cac19ad34a50d5a4da5e471e08174c950ce5fb","modified":1698112053542},{"_id":"themes/hexo-theme-cosy/source/font/motto.woff","hash":"755620f3bad3ebdf683c074043104d4c11f8d23e","modified":1698112053542},{"_id":"themes/hexo-theme-cosy/source/img/favicon.svg","hash":"6e88f8a231bb0a7ae4cc4598f85b6d346a286095","modified":1698112053543},{"_id":"themes/hexo-theme-cosy/source/img/icon-arrow-left.svg","hash":"a36362d2555e8b836fcec1f7eeeae4588a871bdd","modified":1698112053543},{"_id":"themes/hexo-theme-cosy/source/img/icon-book.svg","hash":"d5e4064468dde477bf9a630c3fababec41316708","modified":1698112053544},{"_id":"themes/hexo-theme-cosy/source/img/icon-date.svg","hash":"b391e34adafed83ef52d836fd6f81618494c4c6b","modified":1698112053544},{"_id":"themes/hexo-theme-cosy/source/img/icon-click.svg","hash":"b10df8b886a8b2d44293b26f42b440c9aedb66a7","modified":1698112053544},{"_id":"themes/hexo-theme-cosy/source/img/icon-link.svg","hash":"436b5ee7ef2d28766e86ac1e65a567d1e786c1b3","modified":1698112053545},{"_id":"themes/hexo-theme-cosy/source/img/icon-layout.svg","hash":"108ef43073a5b92552dc00744a9f11db8e5ac0a2","modified":1698112053544},{"_id":"themes/hexo-theme-cosy/source/img/icon-sun.svg","hash":"57a0ce52ecce7188eaac5e06eab54609a8e572c8","modified":1698112053545},{"_id":"themes/hexo-theme-cosy/source/img/icon1.svg","hash":"f15fbcecbaa00db99aeaca9807922514f6452d02","modified":1698112053545},{"_id":"themes/hexo-theme-cosy/source/img/icon-moon.svg","hash":"032be7ed3d2320f22069e2efb2fb7f60592d6212","modified":1698112053545},{"_id":"themes/hexo-theme-cosy/source/img/icon2.svg","hash":"cc598540651110d977afd26dc0a1f01bbc95bf21","modified":1698112053546},{"_id":"themes/hexo-theme-cosy/source/img/icon3.svg","hash":"a1a9dcee7703ec48f2d92b0d533b62fef16097fc","modified":1698112053546},{"_id":"themes/hexo-theme-cosy/source/js/07f44e09.js.LICENSE.txt","hash":"35ad54c8f1627db94ca60022d50f416d495b72c6","modified":1698112053566},{"_id":"themes/hexo-theme-cosy/source/js/1247bc3e.js","hash":"1d0335fdedecd72daa5eb2288a8891ab2e83e55d","modified":1698112053567},{"_id":"themes/hexo-theme-cosy/source/js/271.ee88a6de.js","hash":"2d93e1c6f51c16e6cc0c41740dc1de5a0c362926","modified":1698112053567},{"_id":"themes/hexo-theme-cosy/source/js/206.759361ed.js","hash":"129b5fd004afbbe4ab06cf6e944097b42c98655b","modified":1698112053567},{"_id":"themes/hexo-theme-cosy/source/js/291.4ac6984b.js","hash":"b5bb3c24cbcb7d09604c8c66c9d4470e6a2fd449","modified":1698112053568},{"_id":"themes/hexo-theme-cosy/source/js/3cf4fd98.js","hash":"0d51155f6dc08d1d8c693d210c1407b2e26b5685","modified":1698112053568},{"_id":"themes/hexo-theme-cosy/source/js/429.bc4769cb.js","hash":"926f0c003b8cfc0f4eb78ab6367aab9228d31abf","modified":1698112053569},{"_id":"themes/hexo-theme-cosy/source/js/430dbbd6.js","hash":"ff77ecc0d3b8bee105dabbaccefdb83b07a09e47","modified":1698112053569},{"_id":"themes/hexo-theme-cosy/source/js/766.9503a62c.js","hash":"9f2114b6ac69ab0a67b1c88c5f6c48ff244185f7","modified":1698112053569},{"_id":"themes/hexo-theme-cosy/source/js/21.282c05e7.js","hash":"78359415e9f39c9c2119551ac2a97ba9f15af294","modified":1698112053567},{"_id":"themes/hexo-theme-cosy/source/js/07f44e09.js","hash":"e8a21a4252ad34adc1a54066eab32a26a7313940","modified":1698112053566},{"_id":"themes/hexo-theme-cosy/source/js/618.1a58fba9.js","hash":"afbe73ca7b78196e48dd9147a12db960d17589ff","modified":1698112053569},{"_id":"themes/hexo-theme-cosy/source/js/922.689e0633.js","hash":"1757f732da655e7dc36fe4a23d29b72a549e9423","modified":1698112053570},{"_id":"themes/hexo-theme-cosy/source/js/945.0313a94c.js","hash":"ccc3bda115641d497837d4cf8e93f776f0e64c6d","modified":1698112053570},{"_id":"themes/hexo-theme-cosy/source/js/85d1c72e.js","hash":"8ec5c0c8f9dff40d1fc2d16de3baa51442e12be2","modified":1698112053570},{"_id":"themes/hexo-theme-cosy/source/js/ca6b30b5.js","hash":"481a8f20c3d4e565c1ea5dafe4218597d051a9fc","modified":1698112053571},{"_id":"themes/hexo-theme-cosy/source/js/a02fa72b.js","hash":"527060080189f03b7332259a579af89c8d1367a3","modified":1698112053571},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/100.png","hash":"ad42001979a0dbb8807c128b871dc28161b8c191","modified":1698112053547},{"_id":"themes/hexo-theme-cosy/source/js/f8b20eb9.js","hash":"86cff2cb169c614dedd464b373d94322328cb185","modified":1698112053571},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/101.png","hash":"890888efd8db7a3f29427e476ce3433f4a564321","modified":1698112053548},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/103.png","hash":"656d81bd50728c7ba62572e838db7c355d522e51","modified":1698112053548},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/150.png","hash":"572b4a6e56271b89208daa538f02416d50249347","modified":1698112053548},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/102.png","hash":"74d7cfa4f23850a456c16d0e0956264e920f7a85","modified":1698112053548},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/104.png","hash":"36add97ed90d57e691e6e15d3456898a42dccb16","modified":1698112053548},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/151.png","hash":"8041e428fc369be40f9e993f4f718ae99c7662fa","modified":1698112053549},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/152.png","hash":"3ec0a1ac063ae068cc9d728eef88a9a6d7859153","modified":1698112053549},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/300.png","hash":"bd67445ff764f3f1d4eeb81625372585bb537b07","modified":1698112053549},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/153.png","hash":"3eb50d325ec84e1248585d347471b1093a83909c","modified":1698112053549},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/301.png","hash":"cc616d4c7ae6abbe0338f418fe35acce93c46164","modified":1698112053550},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/303.png","hash":"453442f93e62ac98884aae173530f26272d97ad6","modified":1698112053550},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/305.png","hash":"618e18bf06b5d12d64269b30d6f044fc356d24b0","modified":1698112053551},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/304.png","hash":"3669eb04ee87dca604f70f7404c0ecb303d17af4","modified":1698112053551},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/302.png","hash":"371fa4d79b6a93573fde068f179829ed97c8f4f8","modified":1698112053550},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/306.png","hash":"69b55e71e8da4e0fe223ff76b9a68f98e4134b3d","modified":1698112053551},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/307.png","hash":"02a08e002d21a10e0854b1036556fb81b0308be3","modified":1698112053552},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/309.png","hash":"c5140be49b8936e5d30380f14f7dce49a7be7cb5","modified":1698112053552},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/308.png","hash":"ace460a40174aa90dde6c2ef71663f30cec24193","modified":1698112053552},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/310.png","hash":"9315203066fa97a7d10f2a6fb0fd3ce5b7805126","modified":1698112053553},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/311.png","hash":"ab5c5059f354da2f9525b30ee81312fbfa4749bf","modified":1698112053553},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/313.png","hash":"afa70386816623e847c09f51032212d2520d1740","modified":1698112053554},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/312.png","hash":"c672d7373fce89803b5e8d06420e158f11ea346f","modified":1698112053553},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/315.png","hash":"2100a23ee6d584227715164263c43875e8d8946c","modified":1698112053554},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/314.png","hash":"110f9fe81f80b8f372b7472fbcfd9c0071b33151","modified":1698112053554},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/317.png","hash":"7e60725abd3b91b9ba388ad9b9f642690c39ff9e","modified":1698112053555},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/316.png","hash":"4de1ac0254507c5509fc4d04e208fd81d2af7b34","modified":1698112053555},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/350.png","hash":"f29c1aa55c4afd3df17aef7885a35b0bd177d771","modified":1698112053556},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/318.png","hash":"7a042920165671cdbfef6c58596a80f9a1f6f016","modified":1698112053555},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/399.png","hash":"993ddcd386480d211ec9b2e56656d659bb6c453b","modified":1698112053556},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/351.png","hash":"3ab30470a65acb8fe879aa7adc9064284abd8407","modified":1698112053556},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/401.png","hash":"279c8bc00b4e57db9b1095df64044ec80b37edb0","modified":1698112053557},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/400.png","hash":"79444a48a0e416e4cac1eb319496f495091f4c86","modified":1698112053557},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/403.png","hash":"dfad1a525c4467c3e95e281befdf813e145620df","modified":1698112053557},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/402.png","hash":"033fc236885a2bf7007d97eb054b0c5885035be5","modified":1698112053557},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/406.png","hash":"b9cd0421518e0a76041285e5bf0c1666a93428a5","modified":1698112053558},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/404.png","hash":"112e73e641d1a30712993b5dca681a5e033831ee","modified":1698112053558},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/407.png","hash":"82223792a5e3e556148b4663f195ef22044c143a","modified":1698112053558},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/408.png","hash":"02b34a66020c9f3e5173702d30e5a7b69139bade","modified":1698112053558},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/410.png","hash":"9170b32d6b7f644ce49116f3e35d35558bae6536","modified":1698112053559},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/409.png","hash":"aed269911d0249a700b4f3890c424f00f4a27e1e","modified":1698112053559},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/457.png","hash":"5dffe7e9139bfb697b046c427b9ef0ed6ffa95c7","modified":1698112053560},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/456.png","hash":"dd16b957cc544730afab8d2712821dd6c77f5167","modified":1698112053559},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/500.png","hash":"ddb4712d8f19bb8c197e600000dd2d51049f970d","modified":1698112053560},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/499.png","hash":"2b51631144a7c0f813b6425d4daa30c4d4e8bd38","modified":1698112053560},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/502.png","hash":"4146081a2635ff88fa14e38ed8d360d3b4fa74dd","modified":1698112053561},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/501.png","hash":"ddb4712d8f19bb8c197e600000dd2d51049f970d","modified":1698112053561},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/504.png","hash":"defba93520719f72b217583062ccc79abd5b445e","modified":1698112053562},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/503.png","hash":"9415147c4bcebadd7f3089339064b8120c8d4089","modified":1698112053561},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/508.png","hash":"ae98a3217df26021ec2f667f099d27575c912bf4","modified":1698112053562},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/507.png","hash":"426d5a73a482ac5721e7da2141e4fe704f50b608","modified":1698112053562},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/510.png","hash":"524131e401d0b150dab2733af336f4649b8ade74","modified":1698112053563},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/509.png","hash":"3bc779bfbcab94a79c91b26288e2e7b67412d15e","modified":1698112053562},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/511.png","hash":"e2efe07a29446ebecd313ccd8a2c7d57a670f203","modified":1698112053563},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/512.png","hash":"64e11f225c35caa6ef2612d613026c52cfd3557e","modified":1698112053563},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/514.png","hash":"fdf992021ff20e1ffe1b19f0b918aa35204f22e7","modified":1698112053564},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/513.png","hash":"ceff3dfd109a990c9595276ad6b56061bb662e5e","modified":1698112053564},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/515.png","hash":"fdf992021ff20e1ffe1b19f0b918aa35204f22e7","modified":1698112053564},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/900.png","hash":"6eacf8df641c6096feb746c7544a825d3c65bf47","modified":1698112053565},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/999.png","hash":"74e4fa5bdd815d988b55525d4e7f6d40bf1080d4","modified":1698112053565},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/901.png","hash":"f6b3f1cd64e9c325e9dc3ab42469baa5c5119c2d","modified":1698112053565},{"_id":"themes/hexo-theme-cosy/source/img/logo.png","hash":"05730ab0dadd5036509f942834278eef683994dd","modified":1698112053546},{"_id":"source/img/algolia-api-keys.png","hash":"8b2f85a93b52f0590e9b8fe2d2405427c99e2280","modified":1697779286767},{"_id":"public/2023/10/24/A Guide to Effective Dialogue/index.html","hash":"50582bbd8a11afa92bc54b2259b8794825da9b44","modified":1698112071259},{"_id":"public/2023/10/23/Cosy 入门/index.html","hash":"19d5990abe833eeb23af045018c47abcad100e5c","modified":1698112071259},{"_id":"public/2023/10/23/Cosy-Starter-Guide/index.html","hash":"f7e8533053dba856e4abe14629c6ee205374c83c","modified":1698112071259},{"_id":"public/2023/10/23/Markdown Sample/index.html","hash":"3f56a2e847ea7c24da0be243eaad9f80eb841bac","modified":1698112071259},{"_id":"public/2023/10/20/front-end/verdaccio/index.html","hash":"25a9e63aa9e124cf79d9e0158e592f5acae31894","modified":1698112071259},{"_id":"public/archives/2023/10/index.html","hash":"4e1ecd24e84571b95cb051670420abbd8feaf6e6","modified":1698112071259},{"_id":"public/categories/EQ/index.html","hash":"eddc6f5b3cc629c75fcf098eae7fcb3da40f5923","modified":1698112071259},{"_id":"public/archives/2023/index.html","hash":"4e1ecd24e84571b95cb051670420abbd8feaf6e6","modified":1698112071259},{"_id":"public/categories/Hexo/index.html","hash":"d5437447e4cf6e65a2b53a267908d43e14df144c","modified":1698112071259},{"_id":"public/archives/index.html","hash":"4e1ecd24e84571b95cb051670420abbd8feaf6e6","modified":1698112071259},{"_id":"public/categories/Front-End/index.html","hash":"8ae85971375063c1fefc64829e21d475aaedafd1","modified":1698112071259},{"_id":"public/index.html","hash":"1db25b672ee165c7087e1b991e80232d25c84267","modified":1698112071259},{"_id":"public/img/icon-arrow-left.svg","hash":"a36362d2555e8b836fcec1f7eeeae4588a871bdd","modified":1698112071259},{"_id":"public/img/favicon.svg","hash":"6e88f8a231bb0a7ae4cc4598f85b6d346a286095","modified":1698112071259},{"_id":"public/font/linear.woff2","hash":"57cac19ad34a50d5a4da5e471e08174c950ce5fb","modified":1698112071259},{"_id":"public/font/motto.woff","hash":"755620f3bad3ebdf683c074043104d4c11f8d23e","modified":1698112071259},{"_id":"public/img/icon-click.svg","hash":"b10df8b886a8b2d44293b26f42b440c9aedb66a7","modified":1698112071259},{"_id":"public/img/icon-date.svg","hash":"b391e34adafed83ef52d836fd6f81618494c4c6b","modified":1698112071259},{"_id":"public/img/icon-book.svg","hash":"d5e4064468dde477bf9a630c3fababec41316708","modified":1698112071259},{"_id":"public/img/icon-link.svg","hash":"436b5ee7ef2d28766e86ac1e65a567d1e786c1b3","modified":1698112071259},{"_id":"public/img/icon-sun.svg","hash":"57a0ce52ecce7188eaac5e06eab54609a8e572c8","modified":1698112071259},{"_id":"public/img/icon-layout.svg","hash":"108ef43073a5b92552dc00744a9f11db8e5ac0a2","modified":1698112071259},{"_id":"public/img/icon1.svg","hash":"f15fbcecbaa00db99aeaca9807922514f6452d02","modified":1698112071259},{"_id":"public/img/icon-moon.svg","hash":"032be7ed3d2320f22069e2efb2fb7f60592d6212","modified":1698112071259},{"_id":"public/img/icon2.svg","hash":"cc598540651110d977afd26dc0a1f01bbc95bf21","modified":1698112071259},{"_id":"public/img/icon3.svg","hash":"a1a9dcee7703ec48f2d92b0d533b62fef16097fc","modified":1698112071259},{"_id":"public/js/07f44e09.js.LICENSE.txt","hash":"35ad54c8f1627db94ca60022d50f416d495b72c6","modified":1698112071259},{"_id":"public/img/qweather-color-icon/100.png","hash":"ad42001979a0dbb8807c128b871dc28161b8c191","modified":1698112071259},{"_id":"public/img/qweather-color-icon/101.png","hash":"890888efd8db7a3f29427e476ce3433f4a564321","modified":1698112071259},{"_id":"public/img/qweather-color-icon/104.png","hash":"36add97ed90d57e691e6e15d3456898a42dccb16","modified":1698112071259},{"_id":"public/img/qweather-color-icon/103.png","hash":"656d81bd50728c7ba62572e838db7c355d522e51","modified":1698112071259},{"_id":"public/img/qweather-color-icon/102.png","hash":"74d7cfa4f23850a456c16d0e0956264e920f7a85","modified":1698112071259},{"_id":"public/img/qweather-color-icon/150.png","hash":"572b4a6e56271b89208daa538f02416d50249347","modified":1698112071259},{"_id":"public/img/qweather-color-icon/151.png","hash":"8041e428fc369be40f9e993f4f718ae99c7662fa","modified":1698112071259},{"_id":"public/img/qweather-color-icon/152.png","hash":"3ec0a1ac063ae068cc9d728eef88a9a6d7859153","modified":1698112071259},{"_id":"public/img/qweather-color-icon/153.png","hash":"3eb50d325ec84e1248585d347471b1093a83909c","modified":1698112071259},{"_id":"public/img/qweather-color-icon/302.png","hash":"371fa4d79b6a93573fde068f179829ed97c8f4f8","modified":1698112071259},{"_id":"public/img/qweather-color-icon/301.png","hash":"cc616d4c7ae6abbe0338f418fe35acce93c46164","modified":1698112071259},{"_id":"public/img/qweather-color-icon/300.png","hash":"bd67445ff764f3f1d4eeb81625372585bb537b07","modified":1698112071259},{"_id":"public/img/qweather-color-icon/304.png","hash":"3669eb04ee87dca604f70f7404c0ecb303d17af4","modified":1698112071259},{"_id":"public/img/qweather-color-icon/303.png","hash":"453442f93e62ac98884aae173530f26272d97ad6","modified":1698112071259},{"_id":"public/img/qweather-color-icon/306.png","hash":"69b55e71e8da4e0fe223ff76b9a68f98e4134b3d","modified":1698112071259},{"_id":"public/img/qweather-color-icon/305.png","hash":"618e18bf06b5d12d64269b30d6f044fc356d24b0","modified":1698112071259},{"_id":"public/img/qweather-color-icon/308.png","hash":"ace460a40174aa90dde6c2ef71663f30cec24193","modified":1698112071259},{"_id":"public/img/qweather-color-icon/311.png","hash":"ab5c5059f354da2f9525b30ee81312fbfa4749bf","modified":1698112071259},{"_id":"public/img/qweather-color-icon/307.png","hash":"02a08e002d21a10e0854b1036556fb81b0308be3","modified":1698112071259},{"_id":"public/img/qweather-color-icon/313.png","hash":"afa70386816623e847c09f51032212d2520d1740","modified":1698112071259},{"_id":"public/img/qweather-color-icon/309.png","hash":"c5140be49b8936e5d30380f14f7dce49a7be7cb5","modified":1698112071259},{"_id":"public/img/qweather-color-icon/314.png","hash":"110f9fe81f80b8f372b7472fbcfd9c0071b33151","modified":1698112071259},{"_id":"public/img/qweather-color-icon/310.png","hash":"9315203066fa97a7d10f2a6fb0fd3ce5b7805126","modified":1698112071259},{"_id":"public/img/qweather-color-icon/312.png","hash":"c672d7373fce89803b5e8d06420e158f11ea346f","modified":1698112071259},{"_id":"public/img/qweather-color-icon/316.png","hash":"4de1ac0254507c5509fc4d04e208fd81d2af7b34","modified":1698112071259},{"_id":"public/img/qweather-color-icon/315.png","hash":"2100a23ee6d584227715164263c43875e8d8946c","modified":1698112071259},{"_id":"public/img/qweather-color-icon/351.png","hash":"3ab30470a65acb8fe879aa7adc9064284abd8407","modified":1698112071259},{"_id":"public/img/qweather-color-icon/399.png","hash":"993ddcd386480d211ec9b2e56656d659bb6c453b","modified":1698112071259},{"_id":"public/img/qweather-color-icon/318.png","hash":"7a042920165671cdbfef6c58596a80f9a1f6f016","modified":1698112071259},{"_id":"public/img/qweather-color-icon/317.png","hash":"7e60725abd3b91b9ba388ad9b9f642690c39ff9e","modified":1698112071259},{"_id":"public/img/qweather-color-icon/401.png","hash":"279c8bc00b4e57db9b1095df64044ec80b37edb0","modified":1698112071259},{"_id":"public/img/qweather-color-icon/403.png","hash":"dfad1a525c4467c3e95e281befdf813e145620df","modified":1698112071259},{"_id":"public/img/qweather-color-icon/402.png","hash":"033fc236885a2bf7007d97eb054b0c5885035be5","modified":1698112071259},{"_id":"public/img/qweather-color-icon/404.png","hash":"112e73e641d1a30712993b5dca681a5e033831ee","modified":1698112071259},{"_id":"public/img/qweather-color-icon/406.png","hash":"b9cd0421518e0a76041285e5bf0c1666a93428a5","modified":1698112071259},{"_id":"public/img/qweather-color-icon/350.png","hash":"f29c1aa55c4afd3df17aef7885a35b0bd177d771","modified":1698112071259},{"_id":"public/img/qweather-color-icon/400.png","hash":"79444a48a0e416e4cac1eb319496f495091f4c86","modified":1698112071259},{"_id":"public/img/qweather-color-icon/407.png","hash":"82223792a5e3e556148b4663f195ef22044c143a","modified":1698112071259},{"_id":"public/img/qweather-color-icon/409.png","hash":"aed269911d0249a700b4f3890c424f00f4a27e1e","modified":1698112071259},{"_id":"public/img/qweather-color-icon/408.png","hash":"02b34a66020c9f3e5173702d30e5a7b69139bade","modified":1698112071259},{"_id":"public/img/qweather-color-icon/410.png","hash":"9170b32d6b7f644ce49116f3e35d35558bae6536","modified":1698112071259},{"_id":"public/img/qweather-color-icon/499.png","hash":"2b51631144a7c0f813b6425d4daa30c4d4e8bd38","modified":1698112071259},{"_id":"public/img/qweather-color-icon/500.png","hash":"ddb4712d8f19bb8c197e600000dd2d51049f970d","modified":1698112071259},{"_id":"public/img/qweather-color-icon/456.png","hash":"dd16b957cc544730afab8d2712821dd6c77f5167","modified":1698112071259},{"_id":"public/img/qweather-color-icon/457.png","hash":"5dffe7e9139bfb697b046c427b9ef0ed6ffa95c7","modified":1698112071259},{"_id":"public/img/qweather-color-icon/501.png","hash":"ddb4712d8f19bb8c197e600000dd2d51049f970d","modified":1698112071259},{"_id":"public/img/qweather-color-icon/502.png","hash":"4146081a2635ff88fa14e38ed8d360d3b4fa74dd","modified":1698112071259},{"_id":"public/img/qweather-color-icon/507.png","hash":"426d5a73a482ac5721e7da2141e4fe704f50b608","modified":1698112071259},{"_id":"public/img/qweather-color-icon/504.png","hash":"defba93520719f72b217583062ccc79abd5b445e","modified":1698112071259},{"_id":"public/img/qweather-color-icon/503.png","hash":"9415147c4bcebadd7f3089339064b8120c8d4089","modified":1698112071259},{"_id":"public/img/qweather-color-icon/509.png","hash":"3bc779bfbcab94a79c91b26288e2e7b67412d15e","modified":1698112071259},{"_id":"public/img/qweather-color-icon/508.png","hash":"ae98a3217df26021ec2f667f099d27575c912bf4","modified":1698112071259},{"_id":"public/img/qweather-color-icon/510.png","hash":"524131e401d0b150dab2733af336f4649b8ade74","modified":1698112071259},{"_id":"public/img/qweather-color-icon/512.png","hash":"64e11f225c35caa6ef2612d613026c52cfd3557e","modified":1698112071259},{"_id":"public/img/qweather-color-icon/511.png","hash":"e2efe07a29446ebecd313ccd8a2c7d57a670f203","modified":1698112071259},{"_id":"public/img/qweather-color-icon/513.png","hash":"ceff3dfd109a990c9595276ad6b56061bb662e5e","modified":1698112071259},{"_id":"public/img/qweather-color-icon/514.png","hash":"fdf992021ff20e1ffe1b19f0b918aa35204f22e7","modified":1698112071259},{"_id":"public/img/qweather-color-icon/900.png","hash":"6eacf8df641c6096feb746c7544a825d3c65bf47","modified":1698112071259},{"_id":"public/img/qweather-color-icon/515.png","hash":"fdf992021ff20e1ffe1b19f0b918aa35204f22e7","modified":1698112071259},{"_id":"public/img/qweather-color-icon/999.png","hash":"74e4fa5bdd815d988b55525d4e7f6d40bf1080d4","modified":1698112071259},{"_id":"public/img/qweather-color-icon/901.png","hash":"f6b3f1cd64e9c325e9dc3ab42469baa5c5119c2d","modified":1698112071259},{"_id":"public/css/271.54fa1675.css","hash":"845cb754fd4ea780279a16e01a345d55889866e2","modified":1698112071259},{"_id":"public/css/206.a3a4e130.css","hash":"f8c04ec30e94eb972ff315b8c1eef655b9e8a03e","modified":1698112071259},{"_id":"public/css/2cd7dba2.css","hash":"dbc4f3071866019f0faae76620928ddf2f6700e6","modified":1698112071259},{"_id":"public/css/0c63d269.css","hash":"6b9b9796cf8ff9349b724f4b789f1347eaa0d476","modified":1698112071259},{"_id":"public/css/21.88950121.css","hash":"44c9b83ffe9151e2e233c2f55b6e89b30ea7c7bb","modified":1698112071259},{"_id":"public/css/2f1ea598.css","hash":"ac520cdae0399c2b818dcac34c5ff58fd204d10f","modified":1698112071259},{"_id":"public/css/3a4a90d1.css","hash":"4ffc2c5e9f1afd4fa74d7d9b785e0697cd7fb770","modified":1698112071259},{"_id":"public/css/291.a8323266.css","hash":"e18068692b42ef4b76adc55d5ddc9f2bb10203f4","modified":1698112071259},{"_id":"public/css/32ae9342.css","hash":"13860dfa3657005967610ec05d4dc75406a91a0c","modified":1698112071259},{"_id":"public/css/3efc6cb5.css","hash":"1f1958bfd921ac3eea83a1e14ed97e8e83b31fb6","modified":1698112071259},{"_id":"public/css/31d6cfe0.css","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1698112071259},{"_id":"public/css/618.6513d67e.css","hash":"660188677fab2c0946ac4b8ed81611ad5472feb8","modified":1698112071259},{"_id":"public/css/766.64ad3c35.css","hash":"8434994030b9b9d0fa3a82df079c860f49543b82","modified":1698112071259},{"_id":"public/css/429.fb1dabcb.css","hash":"1f2b77bab319123d193042b9990056abe9f2fd73","modified":1698112071259},{"_id":"public/css/922.9efa0b6b.css","hash":"721bc1b89ae059267d9b4aa3cc37f5c1ff8f32c3","modified":1698112071259},{"_id":"public/css/aeb44e7a.css","hash":"95b181f50e6adb98be13bb60983edb155a83f6d7","modified":1698112071259},{"_id":"public/css/e01add4b.css","hash":"5fc672a8fb8b65d60c087cc908d5170eaac56e0c","modified":1698112071259},{"_id":"public/css/945.fdf98cb0.css","hash":"f227a8697bf14eb75ba63d14a0608db53c9a50a1","modified":1698112071259},{"_id":"public/css/de5de8fb.css","hash":"a05682caa4e0b8a106578468f795dad472ee75da","modified":1698112071259},{"_id":"public/css/4c3d0e88.css","hash":"c4a5bf3a1f7adf21c04d9950b02a67f516bbac9f","modified":1698112071259},{"_id":"public/css/ccbcde32.css","hash":"3475deea0241c67fadc3de5149886e90af24f2e6","modified":1698112071259},{"_id":"public/css/efca006a.css","hash":"97972d1b7ca177983b39a67e772736f661637468","modified":1698112071259},{"_id":"public/css/f3729dde.css","hash":"2a7faa0c3816e3b653fb4540fa63504a26b2051f","modified":1698112071259},{"_id":"public/js/206.759361ed.js","hash":"129b5fd004afbbe4ab06cf6e944097b42c98655b","modified":1698112071259},{"_id":"public/js/271.ee88a6de.js","hash":"2d93e1c6f51c16e6cc0c41740dc1de5a0c362926","modified":1698112071259},{"_id":"public/js/31d6cfe0.js","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1698112071259},{"_id":"public/js/1247bc3e.js","hash":"1d0335fdedecd72daa5eb2288a8891ab2e83e55d","modified":1698112071259},{"_id":"public/js/21.282c05e7.js","hash":"78359415e9f39c9c2119551ac2a97ba9f15af294","modified":1698112071259},{"_id":"public/js/291.4ac6984b.js","hash":"b5bb3c24cbcb7d09604c8c66c9d4470e6a2fd449","modified":1698112071259},{"_id":"public/js/429.bc4769cb.js","hash":"926f0c003b8cfc0f4eb78ab6367aab9228d31abf","modified":1698112071259},{"_id":"public/js/3cf4fd98.js","hash":"0d51155f6dc08d1d8c693d210c1407b2e26b5685","modified":1698112071259},{"_id":"public/js/618.1a58fba9.js","hash":"afbe73ca7b78196e48dd9147a12db960d17589ff","modified":1698112071259},{"_id":"public/js/430dbbd6.js","hash":"ff77ecc0d3b8bee105dabbaccefdb83b07a09e47","modified":1698112071259},{"_id":"public/js/85d1c72e.js","hash":"8ec5c0c8f9dff40d1fc2d16de3baa51442e12be2","modified":1698112071259},{"_id":"public/js/766.9503a62c.js","hash":"9f2114b6ac69ab0a67b1c88c5f6c48ff244185f7","modified":1698112071259},{"_id":"public/js/922.689e0633.js","hash":"1757f732da655e7dc36fe4a23d29b72a549e9423","modified":1698112071259},{"_id":"public/js/945.0313a94c.js","hash":"ccc3bda115641d497837d4cf8e93f776f0e64c6d","modified":1698112071259},{"_id":"public/js/ca6b30b5.js","hash":"481a8f20c3d4e565c1ea5dafe4218597d051a9fc","modified":1698112071259},{"_id":"public/js/a02fa72b.js","hash":"527060080189f03b7332259a579af89c8d1367a3","modified":1698112071259},{"_id":"public/js/f8b20eb9.js","hash":"86cff2cb169c614dedd464b373d94322328cb185","modified":1698112071259},{"_id":"public/js/07f44e09.js","hash":"e8a21a4252ad34adc1a54066eab32a26a7313940","modified":1698112071259},{"_id":"public/img/logo.png","hash":"05730ab0dadd5036509f942834278eef683994dd","modified":1698112071259},{"_id":"public/img/algolia-api-keys.png","hash":"8b2f85a93b52f0590e9b8fe2d2405427c99e2280","modified":1698112071259}],"Category":[{"name":"EQ","_id":"clo3o301e0002ewz3cbc54wpl"},{"name":"Hexo","_id":"clo3o301f0005ewz3g3oi2zcx"},{"name":"Front-End","_id":"clo3o301i000dewz3dxzmaw36"}],"Data":[],"Page":[],"Post":[{"title":"有效对话指南","top":0,"status":"done","_content":"\n卡耐基说过:要说服别人同意你的观点,你就要让他觉得这是他自己的观点。也就是说,本质上没有人真正被别人说服,听或者不听都是他们自己的主动选择\n\n# 目的\n\n沟通目的无非两个:\n\n- 让对方认同我们的观点\n- 或者按我们说的做\n\n# 搞定情绪\n\n大多数人的立场和行为,是由情绪决定的,对方不喜欢你,你再怎么努力也很难说服他,只有他认可你这个人你的话他才会听。所以动之以理之前要先小之以轻,你把他情绪搞定了,沟通也就成功了一半\n\n## 夸 - 细节\n\n不吝赞美,就一个字“夸”,具体怎么夸呢?\n\n细节就是不要太笼统:\n\n- 😭 你穿的真好看 \n- 😊 今天的上衣显得你很白,太美了\n\n## 夸 - 对比\n\n- 😭 你今天穿的真好看\n- 😊 你今天穿的真好看,一般人可传不出这种气质\n\n## 我能理解你,换我也生气\n\n接纳对方的负面情绪,把双方情绪拉回到安全范围内。\n\n## 肢体同步\n\n如果你的肢体动作跟对方同步,它会产生一种被共情的感觉\n\n- 对方说的火热,身体前倾,伺机凑近\n- 思考一到两秒钟再反馈,这个简单的停顿\n\n# 只陈述不评论\n\n事实不会引起争议\n\n比如:孩子考试没及格是事实,说他笨死了就是评论了。\n\n再比如:你这周上班迟到两次,这是事实,说你经常迟到就是评论了。\n\n## 评论副词\n\n尽量规避一些跟评论相关的糊的频率副词,比如\n- 笨\n- 懒\n- 坏\n- 总是\n- 永远\n- 每次\n\n# 保持开放性\n\n还拿上面的例子,这些话对方只能回答好或者不好,然后结束沟通\n\n- 孩子没及格,老爸说下次必须及格。\n- 你上班迟到,老板说再迟到扣薪水。\n\n如果换成开放式沟通:\n\n- 老爸说咱们聊聊哪些题没有搞清楚\n- 老板说生活上是不是遇到了什么问题,没着我可以帮你\n\n# 反馈事实\n\n这些话对方不仅听着舒服,而且能给你反馈事实。具体怎么开放呢?咱们只需要记住两个关键词\n\n- 问题开放:不要让对方只能回答是或否,例如:像愿闻其详、展开说说、欢迎补充之类\n- 让出话语权:真正的沟通高手,是让对方觉得自己很牛,主导聊天的往往是能提出问题的人,或者让别人多说的人\n\n","source":"_posts/A Guide to Effective Dialogue.md","raw":"---\ntitle: 有效对话指南\ntop: 0\ncategories:\n - EQ\nstatus: done\n---\n\n卡耐基说过:要说服别人同意你的观点,你就要让他觉得这是他自己的观点。也就是说,本质上没有人真正被别人说服,听或者不听都是他们自己的主动选择\n\n# 目的\n\n沟通目的无非两个:\n\n- 让对方认同我们的观点\n- 或者按我们说的做\n\n# 搞定情绪\n\n大多数人的立场和行为,是由情绪决定的,对方不喜欢你,你再怎么努力也很难说服他,只有他认可你这个人你的话他才会听。所以动之以理之前要先小之以轻,你把他情绪搞定了,沟通也就成功了一半\n\n## 夸 - 细节\n\n不吝赞美,就一个字“夸”,具体怎么夸呢?\n\n细节就是不要太笼统:\n\n- 😭 你穿的真好看 \n- 😊 今天的上衣显得你很白,太美了\n\n## 夸 - 对比\n\n- 😭 你今天穿的真好看\n- 😊 你今天穿的真好看,一般人可传不出这种气质\n\n## 我能理解你,换我也生气\n\n接纳对方的负面情绪,把双方情绪拉回到安全范围内。\n\n## 肢体同步\n\n如果你的肢体动作跟对方同步,它会产生一种被共情的感觉\n\n- 对方说的火热,身体前倾,伺机凑近\n- 思考一到两秒钟再反馈,这个简单的停顿\n\n# 只陈述不评论\n\n事实不会引起争议\n\n比如:孩子考试没及格是事实,说他笨死了就是评论了。\n\n再比如:你这周上班迟到两次,这是事实,说你经常迟到就是评论了。\n\n## 评论副词\n\n尽量规避一些跟评论相关的糊的频率副词,比如\n- 笨\n- 懒\n- 坏\n- 总是\n- 永远\n- 每次\n\n# 保持开放性\n\n还拿上面的例子,这些话对方只能回答好或者不好,然后结束沟通\n\n- 孩子没及格,老爸说下次必须及格。\n- 你上班迟到,老板说再迟到扣薪水。\n\n如果换成开放式沟通:\n\n- 老爸说咱们聊聊哪些题没有搞清楚\n- 老板说生活上是不是遇到了什么问题,没着我可以帮你\n\n# 反馈事实\n\n这些话对方不仅听着舒服,而且能给你反馈事实。具体怎么开放呢?咱们只需要记住两个关键词\n\n- 问题开放:不要让对方只能回答是或否,例如:像愿闻其详、展开说说、欢迎补充之类\n- 让出话语权:真正的沟通高手,是让对方觉得自己很牛,主导聊天的往往是能提出问题的人,或者让别人多说的人\n\n","slug":"A Guide to Effective Dialogue","published":1,"date":"2023-10-24T01:47:38.891Z","updated":"2023-10-24T01:47:38.891Z","comments":1,"layout":"post","photos":[],"link":"","_id":"clo3o301a0000ewz3545x3sx7","content":"<p>卡耐基说过:要说服别人同意你的观点,你就要让他觉得这是他自己的观点。也就是说,本质上没有人真正被别人说服,听或者不听都是他们自己的主动选择</p>\n<h1 id=\"目的\"><a href=\"#目的\" class=\"headerlink\" title=\"目的\"></a>目的</h1><p>沟通目的无非两个:</p>\n<ul>\n<li>让对方认同我们的观点</li>\n<li>或者按我们说的做</li>\n</ul>\n<h1 id=\"搞定情绪\"><a href=\"#搞定情绪\" class=\"headerlink\" title=\"搞定情绪\"></a>搞定情绪</h1><p>大多数人的立场和行为,是由情绪决定的,对方不喜欢你,你再怎么努力也很难说服他,只有他认可你这个人你的话他才会听。所以动之以理之前要先小之以轻,你把他情绪搞定了,沟通也就成功了一半</p>\n<h2 id=\"夸-细节\"><a href=\"#夸-细节\" class=\"headerlink\" title=\"夸 - 细节\"></a>夸 - 细节</h2><p>不吝赞美,就一个字“夸”,具体怎么夸呢?</p>\n<p>细节就是不要太笼统:</p>\n<ul>\n<li>😭 你穿的真好看 </li>\n<li>😊 今天的上衣显得你很白,太美了</li>\n</ul>\n<h2 id=\"夸-对比\"><a href=\"#夸-对比\" class=\"headerlink\" title=\"夸 - 对比\"></a>夸 - 对比</h2><ul>\n<li>😭 你今天穿的真好看</li>\n<li>😊 你今天穿的真好看,一般人可传不出这种气质</li>\n</ul>\n<h2 id=\"我能理解你,换我也生气\"><a href=\"#我能理解你,换我也生气\" class=\"headerlink\" title=\"我能理解你,换我也生气\"></a>我能理解你,换我也生气</h2><p>接纳对方的负面情绪,把双方情绪拉回到安全范围内。</p>\n<h2 id=\"肢体同步\"><a href=\"#肢体同步\" class=\"headerlink\" title=\"肢体同步\"></a>肢体同步</h2><p>如果你的肢体动作跟对方同步,它会产生一种被共情的感觉</p>\n<ul>\n<li>对方说的火热,身体前倾,伺机凑近</li>\n<li>思考一到两秒钟再反馈,这个简单的停顿</li>\n</ul>\n<h1 id=\"只陈述不评论\"><a href=\"#只陈述不评论\" class=\"headerlink\" title=\"只陈述不评论\"></a>只陈述不评论</h1><p>事实不会引起争议</p>\n<p>比如:孩子考试没及格是事实,说他笨死了就是评论了。</p>\n<p>再比如:你这周上班迟到两次,这是事实,说你经常迟到就是评论了。</p>\n<h2 id=\"评论副词\"><a href=\"#评论副词\" class=\"headerlink\" title=\"评论副词\"></a>评论副词</h2><p>尽量规避一些跟评论相关的糊的频率副词,比如</p>\n<ul>\n<li>笨</li>\n<li>懒</li>\n<li>坏</li>\n<li>总是</li>\n<li>永远</li>\n<li>每次</li>\n</ul>\n<h1 id=\"保持开放性\"><a href=\"#保持开放性\" class=\"headerlink\" title=\"保持开放性\"></a>保持开放性</h1><p>还拿上面的例子,这些话对方只能回答好或者不好,然后结束沟通</p>\n<ul>\n<li>孩子没及格,老爸说下次必须及格。</li>\n<li>你上班迟到,老板说再迟到扣薪水。</li>\n</ul>\n<p>如果换成开放式沟通:</p>\n<ul>\n<li>老爸说咱们聊聊哪些题没有搞清楚</li>\n<li>老板说生活上是不是遇到了什么问题,没着我可以帮你</li>\n</ul>\n<h1 id=\"反馈事实\"><a href=\"#反馈事实\" class=\"headerlink\" title=\"反馈事实\"></a>反馈事实</h1><p>这些话对方不仅听着舒服,而且能给你反馈事实。具体怎么开放呢?咱们只需要记住两个关键词</p>\n<ul>\n<li>问题开放:不要让对方只能回答是或否,例如:像愿闻其详、展开说说、欢迎补充之类</li>\n<li>让出话语权:真正的沟通高手,是让对方觉得自己很牛,主导聊天的往往是能提出问题的人,或者让别人多说的人</li>\n</ul>\n","site":{"data":{}},"excerpt":"","more":"<p>卡耐基说过:要说服别人同意你的观点,你就要让他觉得这是他自己的观点。也就是说,本质上没有人真正被别人说服,听或者不听都是他们自己的主动选择</p>\n<h1 id=\"目的\"><a href=\"#目的\" class=\"headerlink\" title=\"目的\"></a>目的</h1><p>沟通目的无非两个:</p>\n<ul>\n<li>让对方认同我们的观点</li>\n<li>或者按我们说的做</li>\n</ul>\n<h1 id=\"搞定情绪\"><a href=\"#搞定情绪\" class=\"headerlink\" title=\"搞定情绪\"></a>搞定情绪</h1><p>大多数人的立场和行为,是由情绪决定的,对方不喜欢你,你再怎么努力也很难说服他,只有他认可你这个人你的话他才会听。所以动之以理之前要先小之以轻,你把他情绪搞定了,沟通也就成功了一半</p>\n<h2 id=\"夸-细节\"><a href=\"#夸-细节\" class=\"headerlink\" title=\"夸 - 细节\"></a>夸 - 细节</h2><p>不吝赞美,就一个字“夸”,具体怎么夸呢?</p>\n<p>细节就是不要太笼统:</p>\n<ul>\n<li>😭 你穿的真好看 </li>\n<li>😊 今天的上衣显得你很白,太美了</li>\n</ul>\n<h2 id=\"夸-对比\"><a href=\"#夸-对比\" class=\"headerlink\" title=\"夸 - 对比\"></a>夸 - 对比</h2><ul>\n<li>😭 你今天穿的真好看</li>\n<li>😊 你今天穿的真好看,一般人可传不出这种气质</li>\n</ul>\n<h2 id=\"我能理解你,换我也生气\"><a href=\"#我能理解你,换我也生气\" class=\"headerlink\" title=\"我能理解你,换我也生气\"></a>我能理解你,换我也生气</h2><p>接纳对方的负面情绪,把双方情绪拉回到安全范围内。</p>\n<h2 id=\"肢体同步\"><a href=\"#肢体同步\" class=\"headerlink\" title=\"肢体同步\"></a>肢体同步</h2><p>如果你的肢体动作跟对方同步,它会产生一种被共情的感觉</p>\n<ul>\n<li>对方说的火热,身体前倾,伺机凑近</li>\n<li>思考一到两秒钟再反馈,这个简单的停顿</li>\n</ul>\n<h1 id=\"只陈述不评论\"><a href=\"#只陈述不评论\" class=\"headerlink\" title=\"只陈述不评论\"></a>只陈述不评论</h1><p>事实不会引起争议</p>\n<p>比如:孩子考试没及格是事实,说他笨死了就是评论了。</p>\n<p>再比如:你这周上班迟到两次,这是事实,说你经常迟到就是评论了。</p>\n<h2 id=\"评论副词\"><a href=\"#评论副词\" class=\"headerlink\" title=\"评论副词\"></a>评论副词</h2><p>尽量规避一些跟评论相关的糊的频率副词,比如</p>\n<ul>\n<li>笨</li>\n<li>懒</li>\n<li>坏</li>\n<li>总是</li>\n<li>永远</li>\n<li>每次</li>\n</ul>\n<h1 id=\"保持开放性\"><a href=\"#保持开放性\" class=\"headerlink\" title=\"保持开放性\"></a>保持开放性</h1><p>还拿上面的例子,这些话对方只能回答好或者不好,然后结束沟通</p>\n<ul>\n<li>孩子没及格,老爸说下次必须及格。</li>\n<li>你上班迟到,老板说再迟到扣薪水。</li>\n</ul>\n<p>如果换成开放式沟通:</p>\n<ul>\n<li>老爸说咱们聊聊哪些题没有搞清楚</li>\n<li>老板说生活上是不是遇到了什么问题,没着我可以帮你</li>\n</ul>\n<h1 id=\"反馈事实\"><a href=\"#反馈事实\" class=\"headerlink\" title=\"反馈事实\"></a>反馈事实</h1><p>这些话对方不仅听着舒服,而且能给你反馈事实。具体怎么开放呢?咱们只需要记住两个关键词</p>\n<ul>\n<li>问题开放:不要让对方只能回答是或否,例如:像愿闻其详、展开说说、欢迎补充之类</li>\n<li>让出话语权:真正的沟通高手,是让对方觉得自己很牛,主导聊天的往往是能提出问题的人,或者让别人多说的人</li>\n</ul>\n"},{"title":"Cosy 入门","top":2,"status":"doing","_content":"\n# Hexo 安装主题\n\n`Hexo` 主题的安装方式非常简单,只需将主题 `Hexo-theme-cosy` 复制目录的 `themes` 目录下,然后在 `Hexo` 的 `_config.yml` 中修改下主题配置即可\n\n```yml\n# 找到 theme 配置项\ntheme: Hexo-theme-cosy\n```\n\n## 获取 Cosy\n\n- 进入 [Cosy 代码仓库](https://github.com/17px/hexo-theme-cosy/tree/main),了解最新的主题开发进度\n- 在 [发布页面](https://github.com/17px/hexo-theme-cosy/releases) 下载 `hexo-theme-cosy.zip`\n- 解压至站点的 `themes` 目录下\n- 在 Hexo 的 `_config.yml` 中启用\n\n# hexo配置\n\n在 `Hexo` 的 `_config.yml` 中调整\n\n## 基础配置\n\n```yml\n# 网页标题\ntitle: 17px blog\n# 侧边栏顶部显示\nsubtitle: \"Mozzie\"\n# 用于SEO的html元描述\ndescription: \"\"\n# 用于SEO的html关键字\nkeywords:\n# 文章版权声明显示作者名称\nauthor: Mozzie\n\n# 在此处设置您的网站url\nurl: https://mozzie.cn\n```\n\n## 语言\n\n你可以在 `hexo-theme-cosy/languages` 中找到不同的语言文件,如果想切换语言,在配置文件中,填入 `yml` 的文件名\n\n```yml\nlanguage: en\n```\n\n## 文章语法高亮\n\n关闭hexo默认的highlight.js语法高亮\n\n```yml\nhighlight:\n enable: false\n line_number: true\n auto_detect: false\n tab_replace: \"\"\n wrap: true\n hljs: false\n\nprismjs:\n enable: true\n preprocess: true\n line_number: true\n line_threshold: 0\n tab_replace: \"\"\n```\n\n# Cosy 主题配置\n\n下面的配置基于 `Hexo-theme-cosy` 下的 `_config.yml` \n\n## 文章分类图标\n\n按照顺序,依次设置 `svg` 图标,可以在 [xicon](https://www.xicons.org/) 方面的获取丰富的图标\n\n```yml\npostCategoryIcons:\n - <svg>...</svg>\n - <svg>...</svg>\n - <svg>...</svg>\n```\n\n## 网站图标 favicon\n\n- 支持 `svg`\n- 支持 `图片url`,如:`/img/favicon.png`\n\n```yml\nfavicon: ''\n```\n\n## ICP备案号\n\n😁 如不需要备案号,可直接删除\n\n```yml\nicp: 苏ICP备xxxxxxx号-x\n```\n\n## 首页底部文字\n\n😁 如不需要,可直接删除,或者改为 `false` \n\n```yml\nmotto: false\n```\n\n## 文章版权申明\n\n默认开启,当 `enable: false`,默认关闭\n\n```yml\npostCopyright:\n enable: true\n license: CC BY-NC-SA 4.0\n license_url: https://creativecommons.org/licenses/by-nc-sa/4.0/\n```\n\n## katex 数学公式\n\n可自行配置 `cdn`\n\n```yml\nkatex:\n enable: true\n jsCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.js\n cssCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css\n```\n\n## mermaid 流程图\n\n在撰写时,请使用 `{% mermaid %}` 和 `{% endmermaid %}` 包裹\n\n```markdown\n{% mermaid %}\ngraph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n{% endmermaid %}\n```\n\n相应配置如下\n\n```yml\nmermaid:\n enable: true\n cdn: //cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.min.js\n```\n\n## valine 文章评论\n\n首先需要注册 `LeanCloud` 国际区用户,创建数据库\n\n请根据相关地区法规,酌情\n\n```yml\nvaline:\n enable: true\n # 替换\n appId: appId\n # 替换\n appKey: appKey\n avatar: monsterid\n cdn: //unpkg.com/valine@latest/dist/Valine.min.js\n # 替换\n serverURLs: //xxxxxxxx.api.lncldglobal.com\n```\n\n# algolia搜索\n\n博客自带的本地搜索,基于前端开发,存在或多或少的问题,建议换成 `algolia`,免费账户 总共有 `10,000` 条记录,每月有 `100,000` 的操作数\n\n## 注册 & 获取 Key\n\n1. 创建一个新的 `Index`,例如 `hex-blog`\n\n2. 复制并保存:\n - Application ID\n - Search-Only API Key\n - Admin API Key\n - Usage API Key\n\n![API Keys](/img/algolia-api-keys.png)\n\n3. 替换配置\n\n在 `Hexo` 的 `_config.yml` 中加入\n\n```yml\nalgolia:\n # 替换\n appId: Application ID\n # 替换\n apiKey: Usage API Key\n # 请勿泄露,用于上报,替换\n adminApiKey: Admin API Key\n # 替换\n SearchOnlyAPIKey: Search-Only API Key\n chunkSize: 5000\n # 替换\n indexName: hex-blog\n fields:\n - content:strip\n - categories\n - date\n - permalink\n - slug\n - tags\n - title\n```\n\n## 安装 hexo-algoliasearch\n\n这是 Hexo 博客帖子索引插件,自动化提交索引到 Algolia\n\n> 如出遇到问题,可阅读 [hexo-algoliasearch 仓库](https://www.npmjs.com/package/hexo-algoliasearch) 最新说明\n\n安装命令:\n\n```bash\nnpm install hexo-algoliasearch --save\n```\n\n## 使用 algolia\n\n在每次博客发布之前,进行索引上传的操作,命令通常如下\n\n```bash\nhexo clean\nhexo generate\nhexo algolia\n``` \n\n\n# 🇨🇳 和风天气 Widget\n\nCosy 主要针对国内用户,在首页集成了和风天气的卡片,通过 [和风天气开发服务](https://dev.qweather.com/docs/start/) 注册\n\n注册完成后,在配置中填入你的 `appKey` 和 `cityCode(城市代码)`\n\n```yml\nweather:\n enable: true\n # 替换\n cityCode: cityCode\n appKey: appKey\n```\n\n其中 `cityCode` 可以在 [官方的地区列表仓库](https://github.com/qwd/LocationList) 中的 `China-City-List-latest.csv` 找到你所在城市的 `cityCode`\n\n# 前置元数据\n\n在 Hexo 的 Markdown 文件中,一个典型的 YAML 格式的 `Front Matter` 可能会是这样的:\n\n```markdown\n---\ntitle: 我的文章标题\ncategories:\n- javascript\ntags: \n- 编程\n- JavaScript\n---\n```\n\n## top\n\n实现文章置顶的功能,给定一个数值,可以进行排序,设定了 `top` 元数据的文章,会在分类列表中,使用 📌 标记\n\n例如有三篇文章:\n\n- 文章1\n\n```markdown\n---\ntitle: 文章1\ntop: 0\ncategories:\n- javascript\ntags: \n- 编程\n- JavaScript\n---\n```\n\n- 文章2\n\n```markdown\n---\ntitle: 文章2\ntop: 1\ncategories:\n- javascript\ntags: \n- 编程\n- JavaScript\n---\n```\n\n- 文章3\n\n```markdown\n---\ntitle: 文章3\ncategories:\n- javascript\ntags: \n- 编程\n- JavaScript\n---\n```\n\n那么在 `javascript` 分类下,排序的顺序依次为:`文章1 > 文章2 > 文章3`\n\n## status\n\n用于区分文章的状态,同时利用文章分类列表的`筛选`,进行快速筛选,Cosy 主题内置了 4 种状态\n\n- done:完成\n- doing:进行中\n- todo:待办\n- other:废弃\n\n例如:\n\n```markdown\n---\ntitle: 文章1\ncategories:\n- javascript\nstatus: done\n---\n```\n\n\n\n","source":"_posts/Cosy 入门.md","raw":"---\ntitle: Cosy 入门\ntop: 2\ncategories:\n - Hexo\nstatus: doing\n---\n\n# Hexo 安装主题\n\n`Hexo` 主题的安装方式非常简单,只需将主题 `Hexo-theme-cosy` 复制目录的 `themes` 目录下,然后在 `Hexo` 的 `_config.yml` 中修改下主题配置即可\n\n```yml\n# 找到 theme 配置项\ntheme: Hexo-theme-cosy\n```\n\n## 获取 Cosy\n\n- 进入 [Cosy 代码仓库](https://github.com/17px/hexo-theme-cosy/tree/main),了解最新的主题开发进度\n- 在 [发布页面](https://github.com/17px/hexo-theme-cosy/releases) 下载 `hexo-theme-cosy.zip`\n- 解压至站点的 `themes` 目录下\n- 在 Hexo 的 `_config.yml` 中启用\n\n# hexo配置\n\n在 `Hexo` 的 `_config.yml` 中调整\n\n## 基础配置\n\n```yml\n# 网页标题\ntitle: 17px blog\n# 侧边栏顶部显示\nsubtitle: \"Mozzie\"\n# 用于SEO的html元描述\ndescription: \"\"\n# 用于SEO的html关键字\nkeywords:\n# 文章版权声明显示作者名称\nauthor: Mozzie\n\n# 在此处设置您的网站url\nurl: https://mozzie.cn\n```\n\n## 语言\n\n你可以在 `hexo-theme-cosy/languages` 中找到不同的语言文件,如果想切换语言,在配置文件中,填入 `yml` 的文件名\n\n```yml\nlanguage: en\n```\n\n## 文章语法高亮\n\n关闭hexo默认的highlight.js语法高亮\n\n```yml\nhighlight:\n enable: false\n line_number: true\n auto_detect: false\n tab_replace: \"\"\n wrap: true\n hljs: false\n\nprismjs:\n enable: true\n preprocess: true\n line_number: true\n line_threshold: 0\n tab_replace: \"\"\n```\n\n# Cosy 主题配置\n\n下面的配置基于 `Hexo-theme-cosy` 下的 `_config.yml` \n\n## 文章分类图标\n\n按照顺序,依次设置 `svg` 图标,可以在 [xicon](https://www.xicons.org/) 方面的获取丰富的图标\n\n```yml\npostCategoryIcons:\n - <svg>...</svg>\n - <svg>...</svg>\n - <svg>...</svg>\n```\n\n## 网站图标 favicon\n\n- 支持 `svg`\n- 支持 `图片url`,如:`/img/favicon.png`\n\n```yml\nfavicon: ''\n```\n\n## ICP备案号\n\n😁 如不需要备案号,可直接删除\n\n```yml\nicp: 苏ICP备xxxxxxx号-x\n```\n\n## 首页底部文字\n\n😁 如不需要,可直接删除,或者改为 `false` \n\n```yml\nmotto: false\n```\n\n## 文章版权申明\n\n默认开启,当 `enable: false`,默认关闭\n\n```yml\npostCopyright:\n enable: true\n license: CC BY-NC-SA 4.0\n license_url: https://creativecommons.org/licenses/by-nc-sa/4.0/\n```\n\n## katex 数学公式\n\n可自行配置 `cdn`\n\n```yml\nkatex:\n enable: true\n jsCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.js\n cssCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css\n```\n\n## mermaid 流程图\n\n在撰写时,请使用 `{% mermaid %}` 和 `{% endmermaid %}` 包裹\n\n```markdown\n{% mermaid %}\ngraph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n{% endmermaid %}\n```\n\n相应配置如下\n\n```yml\nmermaid:\n enable: true\n cdn: //cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.min.js\n```\n\n## valine 文章评论\n\n首先需要注册 `LeanCloud` 国际区用户,创建数据库\n\n请根据相关地区法规,酌情\n\n```yml\nvaline:\n enable: true\n # 替换\n appId: appId\n # 替换\n appKey: appKey\n avatar: monsterid\n cdn: //unpkg.com/valine@latest/dist/Valine.min.js\n # 替换\n serverURLs: //xxxxxxxx.api.lncldglobal.com\n```\n\n# algolia搜索\n\n博客自带的本地搜索,基于前端开发,存在或多或少的问题,建议换成 `algolia`,免费账户 总共有 `10,000` 条记录,每月有 `100,000` 的操作数\n\n## 注册 & 获取 Key\n\n1. 创建一个新的 `Index`,例如 `hex-blog`\n\n2. 复制并保存:\n - Application ID\n - Search-Only API Key\n - Admin API Key\n - Usage API Key\n\n![API Keys](/img/algolia-api-keys.png)\n\n3. 替换配置\n\n在 `Hexo` 的 `_config.yml` 中加入\n\n```yml\nalgolia:\n # 替换\n appId: Application ID\n # 替换\n apiKey: Usage API Key\n # 请勿泄露,用于上报,替换\n adminApiKey: Admin API Key\n # 替换\n SearchOnlyAPIKey: Search-Only API Key\n chunkSize: 5000\n # 替换\n indexName: hex-blog\n fields:\n - content:strip\n - categories\n - date\n - permalink\n - slug\n - tags\n - title\n```\n\n## 安装 hexo-algoliasearch\n\n这是 Hexo 博客帖子索引插件,自动化提交索引到 Algolia\n\n> 如出遇到问题,可阅读 [hexo-algoliasearch 仓库](https://www.npmjs.com/package/hexo-algoliasearch) 最新说明\n\n安装命令:\n\n```bash\nnpm install hexo-algoliasearch --save\n```\n\n## 使用 algolia\n\n在每次博客发布之前,进行索引上传的操作,命令通常如下\n\n```bash\nhexo clean\nhexo generate\nhexo algolia\n``` \n\n\n# 🇨🇳 和风天气 Widget\n\nCosy 主要针对国内用户,在首页集成了和风天气的卡片,通过 [和风天气开发服务](https://dev.qweather.com/docs/start/) 注册\n\n注册完成后,在配置中填入你的 `appKey` 和 `cityCode(城市代码)`\n\n```yml\nweather:\n enable: true\n # 替换\n cityCode: cityCode\n appKey: appKey\n```\n\n其中 `cityCode` 可以在 [官方的地区列表仓库](https://github.com/qwd/LocationList) 中的 `China-City-List-latest.csv` 找到你所在城市的 `cityCode`\n\n# 前置元数据\n\n在 Hexo 的 Markdown 文件中,一个典型的 YAML 格式的 `Front Matter` 可能会是这样的:\n\n```markdown\n---\ntitle: 我的文章标题\ncategories:\n- javascript\ntags: \n- 编程\n- JavaScript\n---\n```\n\n## top\n\n实现文章置顶的功能,给定一个数值,可以进行排序,设定了 `top` 元数据的文章,会在分类列表中,使用 📌 标记\n\n例如有三篇文章:\n\n- 文章1\n\n```markdown\n---\ntitle: 文章1\ntop: 0\ncategories:\n- javascript\ntags: \n- 编程\n- JavaScript\n---\n```\n\n- 文章2\n\n```markdown\n---\ntitle: 文章2\ntop: 1\ncategories:\n- javascript\ntags: \n- 编程\n- JavaScript\n---\n```\n\n- 文章3\n\n```markdown\n---\ntitle: 文章3\ncategories:\n- javascript\ntags: \n- 编程\n- JavaScript\n---\n```\n\n那么在 `javascript` 分类下,排序的顺序依次为:`文章1 > 文章2 > 文章3`\n\n## status\n\n用于区分文章的状态,同时利用文章分类列表的`筛选`,进行快速筛选,Cosy 主题内置了 4 种状态\n\n- done:完成\n- doing:进行中\n- todo:待办\n- other:废弃\n\n例如:\n\n```markdown\n---\ntitle: 文章1\ncategories:\n- javascript\nstatus: done\n---\n```\n\n\n\n","slug":"Cosy 入门","published":1,"date":"2023-10-23T04:01:13.108Z","updated":"2023-10-23T04:01:13.108Z","comments":1,"layout":"post","photos":[],"link":"","_id":"clo3o301c0001ewz35dp2ea3j","content":"<h1 id=\"Hexo-安装主题\"><a href=\"#Hexo-安装主题\" class=\"headerlink\" title=\"Hexo 安装主题\"></a>Hexo 安装主题</h1><p><code>Hexo</code> 主题的安装方式非常简单,只需将主题 <code>Hexo-theme-cosy</code> 复制目录的 <code>themes</code> 目录下,然后在 <code>Hexo</code> 的 <code>_config.yml</code> 中修改下主题配置即可</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># 找到 theme 配置项</span>\n<span class=\"token key atrule\">theme</span><span class=\"token punctuation\">:</span> Hexo<span class=\"token punctuation\">-</span>theme<span class=\"token punctuation\">-</span>cosy<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span></span></code></pre>\n\n<h2 id=\"获取-Cosy\"><a href=\"#获取-Cosy\" class=\"headerlink\" title=\"获取 Cosy\"></a>获取 Cosy</h2><ul>\n<li>进入 <a href=\"https://github.com/17px/hexo-theme-cosy/tree/main\">Cosy 代码仓库</a>,了解最新的主题开发进度</li>\n<li>在 <a href=\"https://github.com/17px/hexo-theme-cosy/releases\">发布页面</a> 下载 <code>hexo-theme-cosy.zip</code></li>\n<li>解压至站点的 <code>themes</code> 目录下</li>\n<li>在 Hexo 的 <code>_config.yml</code> 中启用</li>\n</ul>\n<h1 id=\"hexo配置\"><a href=\"#hexo配置\" class=\"headerlink\" title=\"hexo配置\"></a>hexo配置</h1><p>在 <code>Hexo</code> 的 <code>_config.yml</code> 中调整</p>\n<h2 id=\"基础配置\"><a href=\"#基础配置\" class=\"headerlink\" title=\"基础配置\"></a>基础配置</h2><pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># 网页标题</span>\n<span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 17px blog\n<span class=\"token comment\"># 侧边栏顶部显示</span>\n<span class=\"token key atrule\">subtitle</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Mozzie\"</span>\n<span class=\"token comment\"># 用于SEO的html元描述</span>\n<span class=\"token key atrule\">description</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span>\n<span class=\"token comment\"># 用于SEO的html关键字</span>\n<span class=\"token key atrule\">keywords</span><span class=\"token punctuation\">:</span>\n<span class=\"token comment\"># 文章版权声明显示作者名称</span>\n<span class=\"token key atrule\">author</span><span class=\"token punctuation\">:</span> Mozzie\n\n<span class=\"token comment\"># 在此处设置您的网站url</span>\n<span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//mozzie.cn<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"语言\"><a href=\"#语言\" class=\"headerlink\" title=\"语言\"></a>语言</h2><p>你可以在 <code>hexo-theme-cosy/languages</code> 中找到不同的语言文件,如果想切换语言,在配置文件中,填入 <code>yml</code> 的文件名</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">language</span><span class=\"token punctuation\">:</span> en<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"文章语法高亮\"><a href=\"#文章语法高亮\" class=\"headerlink\" title=\"文章语法高亮\"></a>文章语法高亮</h2><p>关闭hexo默认的highlight.js语法高亮</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">highlight</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n <span class=\"token key atrule\">line_number</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">auto_detect</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n <span class=\"token key atrule\">tab_replace</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span>\n <span class=\"token key atrule\">wrap</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">hljs</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n\n<span class=\"token key atrule\">prismjs</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">preprocess</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">line_number</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">line_threshold</span><span class=\"token punctuation\">:</span> <span class=\"token number\">0</span>\n <span class=\"token key atrule\">tab_replace</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"Cosy-主题配置\"><a href=\"#Cosy-主题配置\" class=\"headerlink\" title=\"Cosy 主题配置\"></a>Cosy 主题配置</h1><p>下面的配置基于 <code>Hexo-theme-cosy</code> 下的 <code>_config.yml</code> </p>\n<h2 id=\"文章分类图标\"><a href=\"#文章分类图标\" class=\"headerlink\" title=\"文章分类图标\"></a>文章分类图标</h2><p>按照顺序,依次设置 <code>svg</code> 图标,可以在 <a href=\"https://www.xicons.org/\">xicon</a> 方面的获取丰富的图标</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">postCategoryIcons</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"网站图标-favicon\"><a href=\"#网站图标-favicon\" class=\"headerlink\" title=\"网站图标 favicon\"></a>网站图标 favicon</h2><ul>\n<li>支持 <code>svg</code></li>\n<li>支持 <code>图片url</code>,如:<code>/img/favicon.png</code></li>\n</ul>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">favicon</span><span class=\"token punctuation\">:</span> <span class=\"token string\">''</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"ICP备案号\"><a href=\"#ICP备案号\" class=\"headerlink\" title=\"ICP备案号\"></a>ICP备案号</h2><p>😁 如不需要备案号,可直接删除</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">icp</span><span class=\"token punctuation\">:</span> 苏ICP备xxxxxxx号<span class=\"token punctuation\">-</span>x<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"首页底部文字\"><a href=\"#首页底部文字\" class=\"headerlink\" title=\"首页底部文字\"></a>首页底部文字</h2><p>😁 如不需要,可直接删除,或者改为 <code>false</code> </p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">motto</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"文章版权申明\"><a href=\"#文章版权申明\" class=\"headerlink\" title=\"文章版权申明\"></a>文章版权申明</h2><p>默认开启,当 <code>enable: false</code>,默认关闭</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">postCopyright</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">license</span><span class=\"token punctuation\">:</span> CC BY<span class=\"token punctuation\">-</span>NC<span class=\"token punctuation\">-</span>SA 4.0\n <span class=\"token key atrule\">license_url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//creativecommons.org/licenses/by<span class=\"token punctuation\">-</span>nc<span class=\"token punctuation\">-</span>sa/4.0/<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"katex-数学公式\"><a href=\"#katex-数学公式\" class=\"headerlink\" title=\"katex 数学公式\"></a>katex 数学公式</h2><p>可自行配置 <code>cdn</code></p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">katex</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">jsCdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.js\n <span class=\"token key atrule\">cssCdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"mermaid-流程图\"><a href=\"#mermaid-流程图\" class=\"headerlink\" title=\"mermaid 流程图\"></a>mermaid 流程图</h2><p>在撰写时,请使用 <code>{% mermaid %}` 和 `{% endmermaid %}</code> 包裹</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\">{% mermaid %}\ngraph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n{% endmermaid %}<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>相应配置如下</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">mermaid</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">cdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.min.js<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"valine-文章评论\"><a href=\"#valine-文章评论\" class=\"headerlink\" title=\"valine 文章评论\"></a>valine 文章评论</h2><p>首先需要注册 <code>LeanCloud</code> 国际区用户,创建数据库</p>\n<p>请根据相关地区法规,酌情</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">valine</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">appId</span><span class=\"token punctuation\">:</span> appId\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">appKey</span><span class=\"token punctuation\">:</span> appKey\n <span class=\"token key atrule\">avatar</span><span class=\"token punctuation\">:</span> monsterid\n <span class=\"token key atrule\">cdn</span><span class=\"token punctuation\">:</span> //unpkg.com/valine@latest/dist/Valine.min.js\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">serverURLs</span><span class=\"token punctuation\">:</span> //xxxxxxxx.api.lncldglobal.com<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"algolia搜索\"><a href=\"#algolia搜索\" class=\"headerlink\" title=\"algolia搜索\"></a>algolia搜索</h1><p>博客自带的本地搜索,基于前端开发,存在或多或少的问题,建议换成 <code>algolia</code>,免费账户 总共有 <code>10,000</code> 条记录,每月有 <code>100,000</code> 的操作数</p>\n<h2 id=\"注册-amp-获取-Key\"><a href=\"#注册-amp-获取-Key\" class=\"headerlink\" title=\"注册 & 获取 Key\"></a>注册 & 获取 Key</h2><ol>\n<li><p>创建一个新的 <code>Index</code>,例如 <code>hex-blog</code></p>\n</li>\n<li><p>复制并保存:</p>\n</li>\n</ol>\n<ul>\n<li>Application ID</li>\n<li>Search-Only API Key</li>\n<li>Admin API Key</li>\n<li>Usage API Key</li>\n</ul>\n<p><img src=\"/img/algolia-api-keys.png\" alt=\"API Keys\"></p>\n<ol start=\"3\">\n<li>替换配置</li>\n</ol>\n<p>在 <code>Hexo</code> 的 <code>_config.yml</code> 中加入</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">algolia</span><span class=\"token punctuation\">:</span>\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">appId</span><span class=\"token punctuation\">:</span> Application ID\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">apiKey</span><span class=\"token punctuation\">:</span> Usage API Key\n <span class=\"token comment\"># 请勿泄露,用于上报,替换</span>\n <span class=\"token key atrule\">adminApiKey</span><span class=\"token punctuation\">:</span> Admin API Key\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">SearchOnlyAPIKey</span><span class=\"token punctuation\">:</span> Search<span class=\"token punctuation\">-</span>Only API Key\n <span class=\"token key atrule\">chunkSize</span><span class=\"token punctuation\">:</span> <span class=\"token number\">5000</span>\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">indexName</span><span class=\"token punctuation\">:</span> hex<span class=\"token punctuation\">-</span>blog\n <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> content<span class=\"token punctuation\">:</span>strip\n <span class=\"token punctuation\">-</span> categories\n <span class=\"token punctuation\">-</span> date\n <span class=\"token punctuation\">-</span> permalink\n <span class=\"token punctuation\">-</span> slug\n <span class=\"token punctuation\">-</span> tags\n <span class=\"token punctuation\">-</span> title<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"安装-hexo-algoliasearch\"><a href=\"#安装-hexo-algoliasearch\" class=\"headerlink\" title=\"安装 hexo-algoliasearch\"></a>安装 hexo-algoliasearch</h2><p>这是 Hexo 博客帖子索引插件,自动化提交索引到 Algolia</p>\n<blockquote>\n<p>如出遇到问题,可阅读 <a href=\"https://www.npmjs.com/package/hexo-algoliasearch\">hexo-algoliasearch 仓库</a> 最新说明</p>\n</blockquote>\n<p>安装命令:</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token function\">npm</span> <span class=\"token function\">install</span> hexo-algoliasearch <span class=\"token parameter variable\">--save</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"使用-algolia\"><a href=\"#使用-algolia\" class=\"headerlink\" title=\"使用 algolia\"></a>使用 algolia</h2><p>在每次博客发布之前,进行索引上传的操作,命令通常如下</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">hexo clean\nhexo generate\nhexo algolia<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span></span></code></pre>\n\n\n<h1 id=\"🇨🇳-和风天气-Widget\"><a href=\"#🇨🇳-和风天气-Widget\" class=\"headerlink\" title=\"🇨🇳 和风天气 Widget\"></a>🇨🇳 和风天气 Widget</h1><p>Cosy 主要针对国内用户,在首页集成了和风天气的卡片,通过 <a href=\"https://dev.qweather.com/docs/start/\">和风天气开发服务</a> 注册</p>\n<p>注册完成后,在配置中填入你的 <code>appKey</code> 和 <code>cityCode(城市代码)</code></p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">weather</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">cityCode</span><span class=\"token punctuation\">:</span> cityCode\n <span class=\"token key atrule\">appKey</span><span class=\"token punctuation\">:</span> appKey<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>其中 <code>cityCode</code> 可以在 <a href=\"https://github.com/qwd/LocationList\">官方的地区列表仓库</a> 中的 <code>China-City-List-latest.csv</code> 找到你所在城市的 <code>cityCode</code></p>\n<h1 id=\"前置元数据\"><a href=\"#前置元数据\" class=\"headerlink\" title=\"前置元数据\"></a>前置元数据</h1><p>在 Hexo 的 Markdown 文件中,一个典型的 YAML 格式的 <code>Front Matter</code> 可能会是这样的:</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 我的文章标题\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">tags</span><span class=\"token punctuation\">:</span> \n<span class=\"token punctuation\">-</span> 编程\n<span class=\"token punctuation\">-</span> JavaScript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"top\"><a href=\"#top\" class=\"headerlink\" title=\"top\"></a>top</h2><p>实现文章置顶的功能,给定一个数值,可以进行排序,设定了 <code>top</code> 元数据的文章,会在分类列表中,使用 📌 标记</p>\n<p>例如有三篇文章:</p>\n<ul>\n<li>文章1</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 文章1\n<span class=\"token key atrule\">top</span><span class=\"token punctuation\">:</span> <span class=\"token number\">0</span>\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">tags</span><span class=\"token punctuation\">:</span> \n<span class=\"token punctuation\">-</span> 编程\n<span class=\"token punctuation\">-</span> JavaScript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<ul>\n<li>文章2</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 文章2\n<span class=\"token key atrule\">top</span><span class=\"token punctuation\">:</span> <span class=\"token number\">1</span>\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">tags</span><span class=\"token punctuation\">:</span> \n<span class=\"token punctuation\">-</span> 编程\n<span class=\"token punctuation\">-</span> JavaScript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<ul>\n<li>文章3</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 文章3\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">tags</span><span class=\"token punctuation\">:</span> \n<span class=\"token punctuation\">-</span> 编程\n<span class=\"token punctuation\">-</span> JavaScript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>那么在 <code>javascript</code> 分类下,排序的顺序依次为:<code>文章1 > 文章2 > 文章3</code></p>\n<h2 id=\"status\"><a href=\"#status\" class=\"headerlink\" title=\"status\"></a>status</h2><p>用于区分文章的状态,同时利用文章分类列表的<code>筛选</code>,进行快速筛选,Cosy 主题内置了 4 种状态</p>\n<ul>\n<li>done:完成</li>\n<li>doing:进行中</li>\n<li>todo:待办</li>\n<li>other:废弃</li>\n</ul>\n<p>例如:</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 文章1\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">status</span><span class=\"token punctuation\">:</span> done</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n\n\n","site":{"data":{}},"excerpt":"","more":"<h1 id=\"Hexo-安装主题\"><a href=\"#Hexo-安装主题\" class=\"headerlink\" title=\"Hexo 安装主题\"></a>Hexo 安装主题</h1><p><code>Hexo</code> 主题的安装方式非常简单,只需将主题 <code>Hexo-theme-cosy</code> 复制目录的 <code>themes</code> 目录下,然后在 <code>Hexo</code> 的 <code>_config.yml</code> 中修改下主题配置即可</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># 找到 theme 配置项</span>\n<span class=\"token key atrule\">theme</span><span class=\"token punctuation\">:</span> Hexo<span class=\"token punctuation\">-</span>theme<span class=\"token punctuation\">-</span>cosy<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span></span></code></pre>\n\n<h2 id=\"获取-Cosy\"><a href=\"#获取-Cosy\" class=\"headerlink\" title=\"获取 Cosy\"></a>获取 Cosy</h2><ul>\n<li>进入 <a href=\"https://github.com/17px/hexo-theme-cosy/tree/main\">Cosy 代码仓库</a>,了解最新的主题开发进度</li>\n<li>在 <a href=\"https://github.com/17px/hexo-theme-cosy/releases\">发布页面</a> 下载 <code>hexo-theme-cosy.zip</code></li>\n<li>解压至站点的 <code>themes</code> 目录下</li>\n<li>在 Hexo 的 <code>_config.yml</code> 中启用</li>\n</ul>\n<h1 id=\"hexo配置\"><a href=\"#hexo配置\" class=\"headerlink\" title=\"hexo配置\"></a>hexo配置</h1><p>在 <code>Hexo</code> 的 <code>_config.yml</code> 中调整</p>\n<h2 id=\"基础配置\"><a href=\"#基础配置\" class=\"headerlink\" title=\"基础配置\"></a>基础配置</h2><pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># 网页标题</span>\n<span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 17px blog\n<span class=\"token comment\"># 侧边栏顶部显示</span>\n<span class=\"token key atrule\">subtitle</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Mozzie\"</span>\n<span class=\"token comment\"># 用于SEO的html元描述</span>\n<span class=\"token key atrule\">description</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span>\n<span class=\"token comment\"># 用于SEO的html关键字</span>\n<span class=\"token key atrule\">keywords</span><span class=\"token punctuation\">:</span>\n<span class=\"token comment\"># 文章版权声明显示作者名称</span>\n<span class=\"token key atrule\">author</span><span class=\"token punctuation\">:</span> Mozzie\n\n<span class=\"token comment\"># 在此处设置您的网站url</span>\n<span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//mozzie.cn<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"语言\"><a href=\"#语言\" class=\"headerlink\" title=\"语言\"></a>语言</h2><p>你可以在 <code>hexo-theme-cosy/languages</code> 中找到不同的语言文件,如果想切换语言,在配置文件中,填入 <code>yml</code> 的文件名</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">language</span><span class=\"token punctuation\">:</span> en<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"文章语法高亮\"><a href=\"#文章语法高亮\" class=\"headerlink\" title=\"文章语法高亮\"></a>文章语法高亮</h2><p>关闭hexo默认的highlight.js语法高亮</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">highlight</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n <span class=\"token key atrule\">line_number</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">auto_detect</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n <span class=\"token key atrule\">tab_replace</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span>\n <span class=\"token key atrule\">wrap</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">hljs</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n\n<span class=\"token key atrule\">prismjs</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">preprocess</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">line_number</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">line_threshold</span><span class=\"token punctuation\">:</span> <span class=\"token number\">0</span>\n <span class=\"token key atrule\">tab_replace</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"Cosy-主题配置\"><a href=\"#Cosy-主题配置\" class=\"headerlink\" title=\"Cosy 主题配置\"></a>Cosy 主题配置</h1><p>下面的配置基于 <code>Hexo-theme-cosy</code> 下的 <code>_config.yml</code> </p>\n<h2 id=\"文章分类图标\"><a href=\"#文章分类图标\" class=\"headerlink\" title=\"文章分类图标\"></a>文章分类图标</h2><p>按照顺序,依次设置 <code>svg</code> 图标,可以在 <a href=\"https://www.xicons.org/\">xicon</a> 方面的获取丰富的图标</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">postCategoryIcons</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"网站图标-favicon\"><a href=\"#网站图标-favicon\" class=\"headerlink\" title=\"网站图标 favicon\"></a>网站图标 favicon</h2><ul>\n<li>支持 <code>svg</code></li>\n<li>支持 <code>图片url</code>,如:<code>/img/favicon.png</code></li>\n</ul>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">favicon</span><span class=\"token punctuation\">:</span> <span class=\"token string\">''</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"ICP备案号\"><a href=\"#ICP备案号\" class=\"headerlink\" title=\"ICP备案号\"></a>ICP备案号</h2><p>😁 如不需要备案号,可直接删除</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">icp</span><span class=\"token punctuation\">:</span> 苏ICP备xxxxxxx号<span class=\"token punctuation\">-</span>x<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"首页底部文字\"><a href=\"#首页底部文字\" class=\"headerlink\" title=\"首页底部文字\"></a>首页底部文字</h2><p>😁 如不需要,可直接删除,或者改为 <code>false</code> </p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">motto</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"文章版权申明\"><a href=\"#文章版权申明\" class=\"headerlink\" title=\"文章版权申明\"></a>文章版权申明</h2><p>默认开启,当 <code>enable: false</code>,默认关闭</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">postCopyright</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">license</span><span class=\"token punctuation\">:</span> CC BY<span class=\"token punctuation\">-</span>NC<span class=\"token punctuation\">-</span>SA 4.0\n <span class=\"token key atrule\">license_url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//creativecommons.org/licenses/by<span class=\"token punctuation\">-</span>nc<span class=\"token punctuation\">-</span>sa/4.0/<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"katex-数学公式\"><a href=\"#katex-数学公式\" class=\"headerlink\" title=\"katex 数学公式\"></a>katex 数学公式</h2><p>可自行配置 <code>cdn</code></p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">katex</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">jsCdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.js\n <span class=\"token key atrule\">cssCdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"mermaid-流程图\"><a href=\"#mermaid-流程图\" class=\"headerlink\" title=\"mermaid 流程图\"></a>mermaid 流程图</h2><p>在撰写时,请使用 <code>{% mermaid %}` 和 `{% endmermaid %}</code> 包裹</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\">{% mermaid %}\ngraph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n{% endmermaid %}<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>相应配置如下</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">mermaid</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">cdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.min.js<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"valine-文章评论\"><a href=\"#valine-文章评论\" class=\"headerlink\" title=\"valine 文章评论\"></a>valine 文章评论</h2><p>首先需要注册 <code>LeanCloud</code> 国际区用户,创建数据库</p>\n<p>请根据相关地区法规,酌情</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">valine</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">appId</span><span class=\"token punctuation\">:</span> appId\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">appKey</span><span class=\"token punctuation\">:</span> appKey\n <span class=\"token key atrule\">avatar</span><span class=\"token punctuation\">:</span> monsterid\n <span class=\"token key atrule\">cdn</span><span class=\"token punctuation\">:</span> //unpkg.com/valine@latest/dist/Valine.min.js\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">serverURLs</span><span class=\"token punctuation\">:</span> //xxxxxxxx.api.lncldglobal.com<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"algolia搜索\"><a href=\"#algolia搜索\" class=\"headerlink\" title=\"algolia搜索\"></a>algolia搜索</h1><p>博客自带的本地搜索,基于前端开发,存在或多或少的问题,建议换成 <code>algolia</code>,免费账户 总共有 <code>10,000</code> 条记录,每月有 <code>100,000</code> 的操作数</p>\n<h2 id=\"注册-amp-获取-Key\"><a href=\"#注册-amp-获取-Key\" class=\"headerlink\" title=\"注册 & 获取 Key\"></a>注册 & 获取 Key</h2><ol>\n<li><p>创建一个新的 <code>Index</code>,例如 <code>hex-blog</code></p>\n</li>\n<li><p>复制并保存:</p>\n</li>\n</ol>\n<ul>\n<li>Application ID</li>\n<li>Search-Only API Key</li>\n<li>Admin API Key</li>\n<li>Usage API Key</li>\n</ul>\n<p><img src=\"/img/algolia-api-keys.png\" alt=\"API Keys\"></p>\n<ol start=\"3\">\n<li>替换配置</li>\n</ol>\n<p>在 <code>Hexo</code> 的 <code>_config.yml</code> 中加入</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">algolia</span><span class=\"token punctuation\">:</span>\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">appId</span><span class=\"token punctuation\">:</span> Application ID\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">apiKey</span><span class=\"token punctuation\">:</span> Usage API Key\n <span class=\"token comment\"># 请勿泄露,用于上报,替换</span>\n <span class=\"token key atrule\">adminApiKey</span><span class=\"token punctuation\">:</span> Admin API Key\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">SearchOnlyAPIKey</span><span class=\"token punctuation\">:</span> Search<span class=\"token punctuation\">-</span>Only API Key\n <span class=\"token key atrule\">chunkSize</span><span class=\"token punctuation\">:</span> <span class=\"token number\">5000</span>\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">indexName</span><span class=\"token punctuation\">:</span> hex<span class=\"token punctuation\">-</span>blog\n <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> content<span class=\"token punctuation\">:</span>strip\n <span class=\"token punctuation\">-</span> categories\n <span class=\"token punctuation\">-</span> date\n <span class=\"token punctuation\">-</span> permalink\n <span class=\"token punctuation\">-</span> slug\n <span class=\"token punctuation\">-</span> tags\n <span class=\"token punctuation\">-</span> title<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"安装-hexo-algoliasearch\"><a href=\"#安装-hexo-algoliasearch\" class=\"headerlink\" title=\"安装 hexo-algoliasearch\"></a>安装 hexo-algoliasearch</h2><p>这是 Hexo 博客帖子索引插件,自动化提交索引到 Algolia</p>\n<blockquote>\n<p>如出遇到问题,可阅读 <a href=\"https://www.npmjs.com/package/hexo-algoliasearch\">hexo-algoliasearch 仓库</a> 最新说明</p>\n</blockquote>\n<p>安装命令:</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token function\">npm</span> <span class=\"token function\">install</span> hexo-algoliasearch <span class=\"token parameter variable\">--save</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"使用-algolia\"><a href=\"#使用-algolia\" class=\"headerlink\" title=\"使用 algolia\"></a>使用 algolia</h2><p>在每次博客发布之前,进行索引上传的操作,命令通常如下</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">hexo clean\nhexo generate\nhexo algolia<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span></span></code></pre>\n\n\n<h1 id=\"🇨🇳-和风天气-Widget\"><a href=\"#🇨🇳-和风天气-Widget\" class=\"headerlink\" title=\"🇨🇳 和风天气 Widget\"></a>🇨🇳 和风天气 Widget</h1><p>Cosy 主要针对国内用户,在首页集成了和风天气的卡片,通过 <a href=\"https://dev.qweather.com/docs/start/\">和风天气开发服务</a> 注册</p>\n<p>注册完成后,在配置中填入你的 <code>appKey</code> 和 <code>cityCode(城市代码)</code></p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">weather</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">cityCode</span><span class=\"token punctuation\">:</span> cityCode\n <span class=\"token key atrule\">appKey</span><span class=\"token punctuation\">:</span> appKey<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>其中 <code>cityCode</code> 可以在 <a href=\"https://github.com/qwd/LocationList\">官方的地区列表仓库</a> 中的 <code>China-City-List-latest.csv</code> 找到你所在城市的 <code>cityCode</code></p>\n<h1 id=\"前置元数据\"><a href=\"#前置元数据\" class=\"headerlink\" title=\"前置元数据\"></a>前置元数据</h1><p>在 Hexo 的 Markdown 文件中,一个典型的 YAML 格式的 <code>Front Matter</code> 可能会是这样的:</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 我的文章标题\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">tags</span><span class=\"token punctuation\">:</span> \n<span class=\"token punctuation\">-</span> 编程\n<span class=\"token punctuation\">-</span> JavaScript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"top\"><a href=\"#top\" class=\"headerlink\" title=\"top\"></a>top</h2><p>实现文章置顶的功能,给定一个数值,可以进行排序,设定了 <code>top</code> 元数据的文章,会在分类列表中,使用 📌 标记</p>\n<p>例如有三篇文章:</p>\n<ul>\n<li>文章1</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 文章1\n<span class=\"token key atrule\">top</span><span class=\"token punctuation\">:</span> <span class=\"token number\">0</span>\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">tags</span><span class=\"token punctuation\">:</span> \n<span class=\"token punctuation\">-</span> 编程\n<span class=\"token punctuation\">-</span> JavaScript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<ul>\n<li>文章2</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 文章2\n<span class=\"token key atrule\">top</span><span class=\"token punctuation\">:</span> <span class=\"token number\">1</span>\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">tags</span><span class=\"token punctuation\">:</span> \n<span class=\"token punctuation\">-</span> 编程\n<span class=\"token punctuation\">-</span> JavaScript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<ul>\n<li>文章3</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 文章3\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">tags</span><span class=\"token punctuation\">:</span> \n<span class=\"token punctuation\">-</span> 编程\n<span class=\"token punctuation\">-</span> JavaScript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>那么在 <code>javascript</code> 分类下,排序的顺序依次为:<code>文章1 > 文章2 > 文章3</code></p>\n<h2 id=\"status\"><a href=\"#status\" class=\"headerlink\" title=\"status\"></a>status</h2><p>用于区分文章的状态,同时利用文章分类列表的<code>筛选</code>,进行快速筛选,Cosy 主题内置了 4 种状态</p>\n<ul>\n<li>done:完成</li>\n<li>doing:进行中</li>\n<li>todo:待办</li>\n<li>other:废弃</li>\n</ul>\n<p>例如:</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 文章1\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">status</span><span class=\"token punctuation\">:</span> done</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n\n\n"},{"title":"Cosy Starter Guide","top":1,"status":"doing","_content":"\n[🇨🇳 中文文档](https://mozzie.cn/2023/10/20/Cosy%20%E5%85%A5%E9%97%A8/)\n\n\n# Hexo Installation\n\nInstalling a `Hexo` theme is straightforward. Simply copy the `Hexo-theme-cosy` directory to the `themes` directory, and then modify the theme configuration in `Hexo`'s `_config.yml`.\n\n\n```yml\n# Locate the theme setting\ntheme: hexo-theme-cosy\n```\n\n## Acquiring Cosy\n\n- Visit [Cosy's code repository](https://github.com/17px/hexo-theme-cosy/tree/main) to stay updated on the latest theme developments.\n- Download `hexo-theme-cosy.zip` from the [releases page](https://github.com/17px/hexo-theme-cosy/releases).\n- Extract it into your site's `themes` directory.\n- Enable it in Hexo's `_config.yml`.\n\n# Hexo Configuration\n\nAdjust settings in `Hexo`'s `_config.yml`.\n\n## Basic Configuration\n\n```yml\n# Website title\ntitle: 17px blog\n# Sidebar header\nsubtitle: \"Mozzie\"\n# HTML meta description for SEO\ndescription: \"\"\n# HTML meta keywords for SEO\nkeywords:\n# Copyright text displaying author's name\nauthor: Mozzie\n\n# Set your website URL here\nurl: https://mozzie.cn\n```\n\n## Language Switch\n\nYou can find different language files in `hex theme liner/languages`. If you want to switch languages, fill in the file name of `yml` in the `_config.yml` file\n\n```yml\nlanguage: en\n```\n\n## Code Highlighting\n\nDisable Hexo's default highlight.js syntax highlighting.\n\n```yml\nhighlight:\n enable: false\n line_number: true\n auto_detect: false\n tab_replace: \"\"\n wrap: true\n hljs: false\n\nprismjs:\n enable: true\n preprocess: true\n line_number: true\n line_threshold: 0\n tab_replace: \"\"\n```\n\n# Cosy Theme Configuration\n\n💡 The following settings are based on the `_config.yml` under `hexo-theme-cosy`.\n\n## Post Category Icons\n\nIn sequence, set the `svg` icons. You can get a wide variety of icons at [xicon](https://www.xicons.org/).\n\n```yml\npostCategoryIcons:\n - <svg>...</svg>\n - <svg>...</svg>\n - <svg>...</svg>\n```\n\n## Website Favicon\n\n- Supports `svg`\n- Supports `image URL`, e.g., `/img/favicon.png`\n\n```yml\nfavicon: ''\n```\n\n## ICP Number 🇨🇳\n\n😁 If not required, can be directly deleted.\n\n```yml\nicp: 苏ICP备xxxxxxx号-x\n```\n\n## Footer Text on Homepage 🇨🇳\n\n😁 If not required, can be directly deleted or set to `false`.\n\n```yml\nmotto: false\n```\n\n## Post Copyright Statement\n\nEnabled by default. When `enable: false`, it is disabled by default.\n\n```yml\npostCopyright:\n enable: true\n license: CC BY-NC-SA 4.0\n license_url: https://creativecommons.org/licenses/by-nc-sa/4.0/\n```\n\n## Katex Mathematical Formulas\n\nYou can configure the CDN yourself.\n\n```yml\nkatex:\n enable: true\n jsCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.js\n cssCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css\n```\n\n## Mermaid Flowcharts\n\nTo draft flowchart syntax, use `{% mermaid %}` and `{% endmermaid %}` as wrappers.\n\n```markdown\n{% mermaid %}\ngraph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n{% endmermaid %}\n```\n\nCorresponding configurations are as follows:\n\n```yml\nmermaid:\n enable: true\n cdn: //cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.min.js\n```\n\n## Valine Comments\n\nFirst, register as a `LeanCloud` international user and create a database.\n\nPlease proceed in accordance with relevant regional regulations.\n\n```yml\nvaline:\n enable: true\n # 替换\n appId: appId\n # 替换\n appKey: appKey\n avatar: monsterid\n cdn: //unpkg.com/valine@latest/dist/Valine.min.js\n # 替换\n serverURLs: //xxxxxxxx.api.lncldglobal.com\n```\n\n# Algolia Search\n\nThe blog comes with built-in local search, based on frontend development, which may have some issues. It's recommended to switch to `Algolia`. The free account has a total of 10,000 records and 100,000 operations per month.\n\n## Register & Acquire Key\n\n1. Create a new `Index`, for example, `hex-blog`\n\n2. Copy and save:\n - Application ID\n - Search-Only API Key\n - Admin API Key\n - Usage API Key\n\n![API Keys](/img/algolia-api-keys.png)\n\n3. Replace configurations\n\nAdd the following to Hexo's `_config.yml`\n\n```yml\nalgolia:\n # Replace\n appId: Application ID\n # Replace\n apiKey: Usage API Key\n # Do not disclose, used for reporting, replace\n adminApiKey: Admin API Key\n # Replace\n SearchOnlyAPIKey: Search-Only API Key\n chunkSize: 5000\n # Replace\n indexName: hex-blog\n fields:\n - content:strip\n - categories\n - date\n - permalink\n - slug\n - tags\n - title\n```\n\n## Install hexo-algoliasearch\n\nThis is a Hexo blog post index plugin that automates the submission of indexes to Algolia.\n\n> If you encounter any problems, you can read the [hexo-algoliasearch repository](https://www.npmjs.com/package/hexo-algoliasearch) for the latest instructions.\n\nInstallation command:\n\n```bash\nnpm install hexo-algoliasearch --save\n```\n\n## Using Algolia\n\nBefore publishing each blog post, carry out index uploading operations. The usual commands are as follows:\n\n```bash\nhexo clean\nhexo generate\nhexo algolia\n``` \n\n\n# QWeather Widget 🇨🇳\n\nCosy mainly targets domestic users and integrates QWeather cards on the homepage. Register via [QWeather Developer Service](https://dev.qweather.com/docs/start/).\n\nAfter registering, fill in your `appKey` and `cityCode` in the configuration.\n\n```yml\nweather:\n enable: true\n # Replace\n cityCode: cityCode\n appKey: appKey\n```\n\nYou can find your city's `cityCode` in the official region list repository's `China-City-List-latest.csv`.\n\n\n# Front Matter\n\nIn Hexo's Markdown files, a typical YAML-formatted `Front Matter` might look like this:\n\n\n```markdown\n---\ntitle: My Article Title\ncategories:\n- javascript\ntags: \n- Programming\n- JavaScript\n---\n```\n\n## top\n\nTo pin an article to the top, assign a numerical value to the `top` metadata. Articles with a specified `top` value will be marked with a 📌 icon in the category list.\n\nFor example, if there are three articles:\n\n- Article 1\n\n```markdown\n---\ntitle: Article 1\ntop: 0\ncategories:\n - javascript\n---\n```\n\n- Article 2\n\n```markdown\n---\ntitle: Article 2\ntop: 1\ncategories:\n - javascript\n---\n```\n\n- Article 3\n\n```markdown\n---\ntitle: Article 3\ncategories:\n - javascript\n---\n```\n\nThen, under the `javascript` category, the sort order will be: `Article 1 > Article 2 > Article 3`.\n\n## status\n\nThis is used to differentiate the status of articles and can be quickly `filtered` using the category list. The Cosy theme comes with 4 built-in statuses:\n\n- done: Completed\n- doing: In Progress\n- todo: To Do\n- other: Abandoned\n\nFor example:\n\n```markdown\n---\ntitle: Article 1\ncategories:\n- javascript\nstatus: done\n---\n```\n\n\n\n","source":"_posts/Cosy-Starter-Guide.md","raw":"---\ntitle: Cosy Starter Guide\ntop: 1\ncategories:\n - Hexo\nstatus: doing\n---\n\n[🇨🇳 中文文档](https://mozzie.cn/2023/10/20/Cosy%20%E5%85%A5%E9%97%A8/)\n\n\n# Hexo Installation\n\nInstalling a `Hexo` theme is straightforward. Simply copy the `Hexo-theme-cosy` directory to the `themes` directory, and then modify the theme configuration in `Hexo`'s `_config.yml`.\n\n\n```yml\n# Locate the theme setting\ntheme: hexo-theme-cosy\n```\n\n## Acquiring Cosy\n\n- Visit [Cosy's code repository](https://github.com/17px/hexo-theme-cosy/tree/main) to stay updated on the latest theme developments.\n- Download `hexo-theme-cosy.zip` from the [releases page](https://github.com/17px/hexo-theme-cosy/releases).\n- Extract it into your site's `themes` directory.\n- Enable it in Hexo's `_config.yml`.\n\n# Hexo Configuration\n\nAdjust settings in `Hexo`'s `_config.yml`.\n\n## Basic Configuration\n\n```yml\n# Website title\ntitle: 17px blog\n# Sidebar header\nsubtitle: \"Mozzie\"\n# HTML meta description for SEO\ndescription: \"\"\n# HTML meta keywords for SEO\nkeywords:\n# Copyright text displaying author's name\nauthor: Mozzie\n\n# Set your website URL here\nurl: https://mozzie.cn\n```\n\n## Language Switch\n\nYou can find different language files in `hex theme liner/languages`. If you want to switch languages, fill in the file name of `yml` in the `_config.yml` file\n\n```yml\nlanguage: en\n```\n\n## Code Highlighting\n\nDisable Hexo's default highlight.js syntax highlighting.\n\n```yml\nhighlight:\n enable: false\n line_number: true\n auto_detect: false\n tab_replace: \"\"\n wrap: true\n hljs: false\n\nprismjs:\n enable: true\n preprocess: true\n line_number: true\n line_threshold: 0\n tab_replace: \"\"\n```\n\n# Cosy Theme Configuration\n\n💡 The following settings are based on the `_config.yml` under `hexo-theme-cosy`.\n\n## Post Category Icons\n\nIn sequence, set the `svg` icons. You can get a wide variety of icons at [xicon](https://www.xicons.org/).\n\n```yml\npostCategoryIcons:\n - <svg>...</svg>\n - <svg>...</svg>\n - <svg>...</svg>\n```\n\n## Website Favicon\n\n- Supports `svg`\n- Supports `image URL`, e.g., `/img/favicon.png`\n\n```yml\nfavicon: ''\n```\n\n## ICP Number 🇨🇳\n\n😁 If not required, can be directly deleted.\n\n```yml\nicp: 苏ICP备xxxxxxx号-x\n```\n\n## Footer Text on Homepage 🇨🇳\n\n😁 If not required, can be directly deleted or set to `false`.\n\n```yml\nmotto: false\n```\n\n## Post Copyright Statement\n\nEnabled by default. When `enable: false`, it is disabled by default.\n\n```yml\npostCopyright:\n enable: true\n license: CC BY-NC-SA 4.0\n license_url: https://creativecommons.org/licenses/by-nc-sa/4.0/\n```\n\n## Katex Mathematical Formulas\n\nYou can configure the CDN yourself.\n\n```yml\nkatex:\n enable: true\n jsCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.js\n cssCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css\n```\n\n## Mermaid Flowcharts\n\nTo draft flowchart syntax, use `{% mermaid %}` and `{% endmermaid %}` as wrappers.\n\n```markdown\n{% mermaid %}\ngraph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n{% endmermaid %}\n```\n\nCorresponding configurations are as follows:\n\n```yml\nmermaid:\n enable: true\n cdn: //cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.min.js\n```\n\n## Valine Comments\n\nFirst, register as a `LeanCloud` international user and create a database.\n\nPlease proceed in accordance with relevant regional regulations.\n\n```yml\nvaline:\n enable: true\n # 替换\n appId: appId\n # 替换\n appKey: appKey\n avatar: monsterid\n cdn: //unpkg.com/valine@latest/dist/Valine.min.js\n # 替换\n serverURLs: //xxxxxxxx.api.lncldglobal.com\n```\n\n# Algolia Search\n\nThe blog comes with built-in local search, based on frontend development, which may have some issues. It's recommended to switch to `Algolia`. The free account has a total of 10,000 records and 100,000 operations per month.\n\n## Register & Acquire Key\n\n1. Create a new `Index`, for example, `hex-blog`\n\n2. Copy and save:\n - Application ID\n - Search-Only API Key\n - Admin API Key\n - Usage API Key\n\n![API Keys](/img/algolia-api-keys.png)\n\n3. Replace configurations\n\nAdd the following to Hexo's `_config.yml`\n\n```yml\nalgolia:\n # Replace\n appId: Application ID\n # Replace\n apiKey: Usage API Key\n # Do not disclose, used for reporting, replace\n adminApiKey: Admin API Key\n # Replace\n SearchOnlyAPIKey: Search-Only API Key\n chunkSize: 5000\n # Replace\n indexName: hex-blog\n fields:\n - content:strip\n - categories\n - date\n - permalink\n - slug\n - tags\n - title\n```\n\n## Install hexo-algoliasearch\n\nThis is a Hexo blog post index plugin that automates the submission of indexes to Algolia.\n\n> If you encounter any problems, you can read the [hexo-algoliasearch repository](https://www.npmjs.com/package/hexo-algoliasearch) for the latest instructions.\n\nInstallation command:\n\n```bash\nnpm install hexo-algoliasearch --save\n```\n\n## Using Algolia\n\nBefore publishing each blog post, carry out index uploading operations. The usual commands are as follows:\n\n```bash\nhexo clean\nhexo generate\nhexo algolia\n``` \n\n\n# QWeather Widget 🇨🇳\n\nCosy mainly targets domestic users and integrates QWeather cards on the homepage. Register via [QWeather Developer Service](https://dev.qweather.com/docs/start/).\n\nAfter registering, fill in your `appKey` and `cityCode` in the configuration.\n\n```yml\nweather:\n enable: true\n # Replace\n cityCode: cityCode\n appKey: appKey\n```\n\nYou can find your city's `cityCode` in the official region list repository's `China-City-List-latest.csv`.\n\n\n# Front Matter\n\nIn Hexo's Markdown files, a typical YAML-formatted `Front Matter` might look like this:\n\n\n```markdown\n---\ntitle: My Article Title\ncategories:\n- javascript\ntags: \n- Programming\n- JavaScript\n---\n```\n\n## top\n\nTo pin an article to the top, assign a numerical value to the `top` metadata. Articles with a specified `top` value will be marked with a 📌 icon in the category list.\n\nFor example, if there are three articles:\n\n- Article 1\n\n```markdown\n---\ntitle: Article 1\ntop: 0\ncategories:\n - javascript\n---\n```\n\n- Article 2\n\n```markdown\n---\ntitle: Article 2\ntop: 1\ncategories:\n - javascript\n---\n```\n\n- Article 3\n\n```markdown\n---\ntitle: Article 3\ncategories:\n - javascript\n---\n```\n\nThen, under the `javascript` category, the sort order will be: `Article 1 > Article 2 > Article 3`.\n\n## status\n\nThis is used to differentiate the status of articles and can be quickly `filtered` using the category list. The Cosy theme comes with 4 built-in statuses:\n\n- done: Completed\n- doing: In Progress\n- todo: To Do\n- other: Abandoned\n\nFor example:\n\n```markdown\n---\ntitle: Article 1\ncategories:\n- javascript\nstatus: done\n---\n```\n\n\n\n","slug":"Cosy-Starter-Guide","published":1,"date":"2023-10-23T04:01:13.108Z","updated":"2023-10-23T04:01:13.108Z","comments":1,"layout":"post","photos":[],"link":"","_id":"clo3o301e0003ewz3bovi2tjw","content":"<p><a href=\"https://mozzie.cn/2023/10/20/Cosy%20%E5%85%A5%E9%97%A8/\">🇨🇳 中文文档</a></p>\n<h1 id=\"Hexo-Installation\"><a href=\"#Hexo-Installation\" class=\"headerlink\" title=\"Hexo Installation\"></a>Hexo Installation</h1><p>Installing a <code>Hexo</code> theme is straightforward. Simply copy the <code>Hexo-theme-cosy</code> directory to the <code>themes</code> directory, and then modify the theme configuration in <code>Hexo</code>‘s <code>_config.yml</code>.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># Locate the theme setting</span>\n<span class=\"token key atrule\">theme</span><span class=\"token punctuation\">:</span> hexo<span class=\"token punctuation\">-</span>theme<span class=\"token punctuation\">-</span>cosy<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span></span></code></pre>\n\n<h2 id=\"Acquiring-Cosy\"><a href=\"#Acquiring-Cosy\" class=\"headerlink\" title=\"Acquiring Cosy\"></a>Acquiring Cosy</h2><ul>\n<li>Visit <a href=\"https://github.com/17px/hexo-theme-cosy/tree/main\">Cosy’s code repository</a> to stay updated on the latest theme developments.</li>\n<li>Download <code>hexo-theme-cosy.zip</code> from the <a href=\"https://github.com/17px/hexo-theme-cosy/releases\">releases page</a>.</li>\n<li>Extract it into your site’s <code>themes</code> directory.</li>\n<li>Enable it in Hexo’s <code>_config.yml</code>.</li>\n</ul>\n<h1 id=\"Hexo-Configuration\"><a href=\"#Hexo-Configuration\" class=\"headerlink\" title=\"Hexo Configuration\"></a>Hexo Configuration</h1><p>Adjust settings in <code>Hexo</code>‘s <code>_config.yml</code>.</p>\n<h2 id=\"Basic-Configuration\"><a href=\"#Basic-Configuration\" class=\"headerlink\" title=\"Basic Configuration\"></a>Basic Configuration</h2><pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># Website title</span>\n<span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 17px blog\n<span class=\"token comment\"># Sidebar header</span>\n<span class=\"token key atrule\">subtitle</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Mozzie\"</span>\n<span class=\"token comment\"># HTML meta description for SEO</span>\n<span class=\"token key atrule\">description</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span>\n<span class=\"token comment\"># HTML meta keywords for SEO</span>\n<span class=\"token key atrule\">keywords</span><span class=\"token punctuation\">:</span>\n<span class=\"token comment\"># Copyright text displaying author's name</span>\n<span class=\"token key atrule\">author</span><span class=\"token punctuation\">:</span> Mozzie\n\n<span class=\"token comment\"># Set your website URL here</span>\n<span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//mozzie.cn<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Language-Switch\"><a href=\"#Language-Switch\" class=\"headerlink\" title=\"Language Switch\"></a>Language Switch</h2><p>You can find different language files in <code>hex theme liner/languages</code>. If you want to switch languages, fill in the file name of <code>yml</code> in the <code>_config.yml</code> file</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">language</span><span class=\"token punctuation\">:</span> en<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"Code-Highlighting\"><a href=\"#Code-Highlighting\" class=\"headerlink\" title=\"Code Highlighting\"></a>Code Highlighting</h2><p>Disable Hexo’s default highlight.js syntax highlighting.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">highlight</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n <span class=\"token key atrule\">line_number</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">auto_detect</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n <span class=\"token key atrule\">tab_replace</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span>\n <span class=\"token key atrule\">wrap</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">hljs</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n\n<span class=\"token key atrule\">prismjs</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">preprocess</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">line_number</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">line_threshold</span><span class=\"token punctuation\">:</span> <span class=\"token number\">0</span>\n <span class=\"token key atrule\">tab_replace</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"Cosy-Theme-Configuration\"><a href=\"#Cosy-Theme-Configuration\" class=\"headerlink\" title=\"Cosy Theme Configuration\"></a>Cosy Theme Configuration</h1><p>💡 The following settings are based on the <code>_config.yml</code> under <code>hexo-theme-cosy</code>.</p>\n<h2 id=\"Post-Category-Icons\"><a href=\"#Post-Category-Icons\" class=\"headerlink\" title=\"Post Category Icons\"></a>Post Category Icons</h2><p>In sequence, set the <code>svg</code> icons. You can get a wide variety of icons at <a href=\"https://www.xicons.org/\">xicon</a>.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">postCategoryIcons</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Website-Favicon\"><a href=\"#Website-Favicon\" class=\"headerlink\" title=\"Website Favicon\"></a>Website Favicon</h2><ul>\n<li>Supports <code>svg</code></li>\n<li>Supports <code>image URL</code>, e.g., <code>/img/favicon.png</code></li>\n</ul>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">favicon</span><span class=\"token punctuation\">:</span> <span class=\"token string\">''</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"ICP-Number-🇨🇳\"><a href=\"#ICP-Number-🇨🇳\" class=\"headerlink\" title=\"ICP Number 🇨🇳\"></a>ICP Number 🇨🇳</h2><p>😁 If not required, can be directly deleted.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">icp</span><span class=\"token punctuation\">:</span> 苏ICP备xxxxxxx号<span class=\"token punctuation\">-</span>x<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"Footer-Text-on-Homepage-🇨🇳\"><a href=\"#Footer-Text-on-Homepage-🇨🇳\" class=\"headerlink\" title=\"Footer Text on Homepage 🇨🇳\"></a>Footer Text on Homepage 🇨🇳</h2><p>😁 If not required, can be directly deleted or set to <code>false</code>.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">motto</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"Post-Copyright-Statement\"><a href=\"#Post-Copyright-Statement\" class=\"headerlink\" title=\"Post Copyright Statement\"></a>Post Copyright Statement</h2><p>Enabled by default. When <code>enable: false</code>, it is disabled by default.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">postCopyright</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">license</span><span class=\"token punctuation\">:</span> CC BY<span class=\"token punctuation\">-</span>NC<span class=\"token punctuation\">-</span>SA 4.0\n <span class=\"token key atrule\">license_url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//creativecommons.org/licenses/by<span class=\"token punctuation\">-</span>nc<span class=\"token punctuation\">-</span>sa/4.0/<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Katex-Mathematical-Formulas\"><a href=\"#Katex-Mathematical-Formulas\" class=\"headerlink\" title=\"Katex Mathematical Formulas\"></a>Katex Mathematical Formulas</h2><p>You can configure the CDN yourself.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">katex</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">jsCdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.js\n <span class=\"token key atrule\">cssCdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Mermaid-Flowcharts\"><a href=\"#Mermaid-Flowcharts\" class=\"headerlink\" title=\"Mermaid Flowcharts\"></a>Mermaid Flowcharts</h2><p>To draft flowchart syntax, use <code>{% mermaid %}` and `{% endmermaid %}</code> as wrappers.</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\">{% mermaid %}\ngraph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n{% endmermaid %}<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>Corresponding configurations are as follows:</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">mermaid</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">cdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.min.js<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Valine-Comments\"><a href=\"#Valine-Comments\" class=\"headerlink\" title=\"Valine Comments\"></a>Valine Comments</h2><p>First, register as a <code>LeanCloud</code> international user and create a database.</p>\n<p>Please proceed in accordance with relevant regional regulations.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">valine</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">appId</span><span class=\"token punctuation\">:</span> appId\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">appKey</span><span class=\"token punctuation\">:</span> appKey\n <span class=\"token key atrule\">avatar</span><span class=\"token punctuation\">:</span> monsterid\n <span class=\"token key atrule\">cdn</span><span class=\"token punctuation\">:</span> //unpkg.com/valine@latest/dist/Valine.min.js\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">serverURLs</span><span class=\"token punctuation\">:</span> //xxxxxxxx.api.lncldglobal.com<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"Algolia-Search\"><a href=\"#Algolia-Search\" class=\"headerlink\" title=\"Algolia Search\"></a>Algolia Search</h1><p>The blog comes with built-in local search, based on frontend development, which may have some issues. It’s recommended to switch to <code>Algolia</code>. The free account has a total of 10,000 records and 100,000 operations per month.</p>\n<h2 id=\"Register-amp-Acquire-Key\"><a href=\"#Register-amp-Acquire-Key\" class=\"headerlink\" title=\"Register & Acquire Key\"></a>Register & Acquire Key</h2><ol>\n<li><p>Create a new <code>Index</code>, for example, <code>hex-blog</code></p>\n</li>\n<li><p>Copy and save:</p>\n</li>\n</ol>\n<ul>\n<li>Application ID</li>\n<li>Search-Only API Key</li>\n<li>Admin API Key</li>\n<li>Usage API Key</li>\n</ul>\n<p><img src=\"/img/algolia-api-keys.png\" alt=\"API Keys\"></p>\n<ol start=\"3\">\n<li>Replace configurations</li>\n</ol>\n<p>Add the following to Hexo’s <code>_config.yml</code></p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">algolia</span><span class=\"token punctuation\">:</span>\n <span class=\"token comment\"># Replace</span>\n <span class=\"token key atrule\">appId</span><span class=\"token punctuation\">:</span> Application ID\n <span class=\"token comment\"># Replace</span>\n <span class=\"token key atrule\">apiKey</span><span class=\"token punctuation\">:</span> Usage API Key\n <span class=\"token comment\"># Do not disclose, used for reporting, replace</span>\n <span class=\"token key atrule\">adminApiKey</span><span class=\"token punctuation\">:</span> Admin API Key\n <span class=\"token comment\"># Replace</span>\n <span class=\"token key atrule\">SearchOnlyAPIKey</span><span class=\"token punctuation\">:</span> Search<span class=\"token punctuation\">-</span>Only API Key\n <span class=\"token key atrule\">chunkSize</span><span class=\"token punctuation\">:</span> <span class=\"token number\">5000</span>\n <span class=\"token comment\"># Replace</span>\n <span class=\"token key atrule\">indexName</span><span class=\"token punctuation\">:</span> hex<span class=\"token punctuation\">-</span>blog\n <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> content<span class=\"token punctuation\">:</span>strip\n <span class=\"token punctuation\">-</span> categories\n <span class=\"token punctuation\">-</span> date\n <span class=\"token punctuation\">-</span> permalink\n <span class=\"token punctuation\">-</span> slug\n <span class=\"token punctuation\">-</span> tags\n <span class=\"token punctuation\">-</span> title<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Install-hexo-algoliasearch\"><a href=\"#Install-hexo-algoliasearch\" class=\"headerlink\" title=\"Install hexo-algoliasearch\"></a>Install hexo-algoliasearch</h2><p>This is a Hexo blog post index plugin that automates the submission of indexes to Algolia.</p>\n<blockquote>\n<p>If you encounter any problems, you can read the <a href=\"https://www.npmjs.com/package/hexo-algoliasearch\">hexo-algoliasearch repository</a> for the latest instructions.</p>\n</blockquote>\n<p>Installation command:</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token function\">npm</span> <span class=\"token function\">install</span> hexo-algoliasearch <span class=\"token parameter variable\">--save</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"Using-Algolia\"><a href=\"#Using-Algolia\" class=\"headerlink\" title=\"Using Algolia\"></a>Using Algolia</h2><p>Before publishing each blog post, carry out index uploading operations. The usual commands are as follows:</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">hexo clean\nhexo generate\nhexo algolia<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span></span></code></pre>\n\n\n<h1 id=\"QWeather-Widget-🇨🇳\"><a href=\"#QWeather-Widget-🇨🇳\" class=\"headerlink\" title=\"QWeather Widget 🇨🇳\"></a>QWeather Widget 🇨🇳</h1><p>Cosy mainly targets domestic users and integrates QWeather cards on the homepage. Register via <a href=\"https://dev.qweather.com/docs/start/\">QWeather Developer Service</a>.</p>\n<p>After registering, fill in your <code>appKey</code> and <code>cityCode</code> in the configuration.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">weather</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token comment\"># Replace</span>\n <span class=\"token key atrule\">cityCode</span><span class=\"token punctuation\">:</span> cityCode\n <span class=\"token key atrule\">appKey</span><span class=\"token punctuation\">:</span> appKey<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>You can find your city’s <code>cityCode</code> in the official region list repository’s <code>China-City-List-latest.csv</code>.</p>\n<h1 id=\"Front-Matter\"><a href=\"#Front-Matter\" class=\"headerlink\" title=\"Front Matter\"></a>Front Matter</h1><p>In Hexo’s Markdown files, a typical YAML-formatted <code>Front Matter</code> might look like this:</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> My Article Title\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">tags</span><span class=\"token punctuation\">:</span> \n<span class=\"token punctuation\">-</span> Programming\n<span class=\"token punctuation\">-</span> JavaScript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"top\"><a href=\"#top\" class=\"headerlink\" title=\"top\"></a>top</h2><p>To pin an article to the top, assign a numerical value to the <code>top</code> metadata. Articles with a specified <code>top</code> value will be marked with a 📌 icon in the category list.</p>\n<p>For example, if there are three articles:</p>\n<ul>\n<li>Article 1</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Article 1\n<span class=\"token key atrule\">top</span><span class=\"token punctuation\">:</span> <span class=\"token number\">0</span>\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> javascript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<ul>\n<li>Article 2</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Article 2\n<span class=\"token key atrule\">top</span><span class=\"token punctuation\">:</span> <span class=\"token number\">1</span>\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> javascript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<ul>\n<li>Article 3</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Article 3\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> javascript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>Then, under the <code>javascript</code> category, the sort order will be: <code>Article 1 > Article 2 > Article 3</code>.</p>\n<h2 id=\"status\"><a href=\"#status\" class=\"headerlink\" title=\"status\"></a>status</h2><p>This is used to differentiate the status of articles and can be quickly <code>filtered</code> using the category list. The Cosy theme comes with 4 built-in statuses:</p>\n<ul>\n<li>done: Completed</li>\n<li>doing: In Progress</li>\n<li>todo: To Do</li>\n<li>other: Abandoned</li>\n</ul>\n<p>For example:</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Article 1\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">status</span><span class=\"token punctuation\">:</span> done</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n\n\n","site":{"data":{}},"excerpt":"","more":"<p><a href=\"https://mozzie.cn/2023/10/20/Cosy%20%E5%85%A5%E9%97%A8/\">🇨🇳 中文文档</a></p>\n<h1 id=\"Hexo-Installation\"><a href=\"#Hexo-Installation\" class=\"headerlink\" title=\"Hexo Installation\"></a>Hexo Installation</h1><p>Installing a <code>Hexo</code> theme is straightforward. Simply copy the <code>Hexo-theme-cosy</code> directory to the <code>themes</code> directory, and then modify the theme configuration in <code>Hexo</code>‘s <code>_config.yml</code>.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># Locate the theme setting</span>\n<span class=\"token key atrule\">theme</span><span class=\"token punctuation\">:</span> hexo<span class=\"token punctuation\">-</span>theme<span class=\"token punctuation\">-</span>cosy<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span></span></code></pre>\n\n<h2 id=\"Acquiring-Cosy\"><a href=\"#Acquiring-Cosy\" class=\"headerlink\" title=\"Acquiring Cosy\"></a>Acquiring Cosy</h2><ul>\n<li>Visit <a href=\"https://github.com/17px/hexo-theme-cosy/tree/main\">Cosy’s code repository</a> to stay updated on the latest theme developments.</li>\n<li>Download <code>hexo-theme-cosy.zip</code> from the <a href=\"https://github.com/17px/hexo-theme-cosy/releases\">releases page</a>.</li>\n<li>Extract it into your site’s <code>themes</code> directory.</li>\n<li>Enable it in Hexo’s <code>_config.yml</code>.</li>\n</ul>\n<h1 id=\"Hexo-Configuration\"><a href=\"#Hexo-Configuration\" class=\"headerlink\" title=\"Hexo Configuration\"></a>Hexo Configuration</h1><p>Adjust settings in <code>Hexo</code>‘s <code>_config.yml</code>.</p>\n<h2 id=\"Basic-Configuration\"><a href=\"#Basic-Configuration\" class=\"headerlink\" title=\"Basic Configuration\"></a>Basic Configuration</h2><pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># Website title</span>\n<span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 17px blog\n<span class=\"token comment\"># Sidebar header</span>\n<span class=\"token key atrule\">subtitle</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Mozzie\"</span>\n<span class=\"token comment\"># HTML meta description for SEO</span>\n<span class=\"token key atrule\">description</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span>\n<span class=\"token comment\"># HTML meta keywords for SEO</span>\n<span class=\"token key atrule\">keywords</span><span class=\"token punctuation\">:</span>\n<span class=\"token comment\"># Copyright text displaying author's name</span>\n<span class=\"token key atrule\">author</span><span class=\"token punctuation\">:</span> Mozzie\n\n<span class=\"token comment\"># Set your website URL here</span>\n<span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//mozzie.cn<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Language-Switch\"><a href=\"#Language-Switch\" class=\"headerlink\" title=\"Language Switch\"></a>Language Switch</h2><p>You can find different language files in <code>hex theme liner/languages</code>. If you want to switch languages, fill in the file name of <code>yml</code> in the <code>_config.yml</code> file</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">language</span><span class=\"token punctuation\">:</span> en<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"Code-Highlighting\"><a href=\"#Code-Highlighting\" class=\"headerlink\" title=\"Code Highlighting\"></a>Code Highlighting</h2><p>Disable Hexo’s default highlight.js syntax highlighting.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">highlight</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n <span class=\"token key atrule\">line_number</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">auto_detect</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n <span class=\"token key atrule\">tab_replace</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span>\n <span class=\"token key atrule\">wrap</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">hljs</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n\n<span class=\"token key atrule\">prismjs</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">preprocess</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">line_number</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">line_threshold</span><span class=\"token punctuation\">:</span> <span class=\"token number\">0</span>\n <span class=\"token key atrule\">tab_replace</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"Cosy-Theme-Configuration\"><a href=\"#Cosy-Theme-Configuration\" class=\"headerlink\" title=\"Cosy Theme Configuration\"></a>Cosy Theme Configuration</h1><p>💡 The following settings are based on the <code>_config.yml</code> under <code>hexo-theme-cosy</code>.</p>\n<h2 id=\"Post-Category-Icons\"><a href=\"#Post-Category-Icons\" class=\"headerlink\" title=\"Post Category Icons\"></a>Post Category Icons</h2><p>In sequence, set the <code>svg</code> icons. You can get a wide variety of icons at <a href=\"https://www.xicons.org/\">xicon</a>.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">postCategoryIcons</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Website-Favicon\"><a href=\"#Website-Favicon\" class=\"headerlink\" title=\"Website Favicon\"></a>Website Favicon</h2><ul>\n<li>Supports <code>svg</code></li>\n<li>Supports <code>image URL</code>, e.g., <code>/img/favicon.png</code></li>\n</ul>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">favicon</span><span class=\"token punctuation\">:</span> <span class=\"token string\">''</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"ICP-Number-🇨🇳\"><a href=\"#ICP-Number-🇨🇳\" class=\"headerlink\" title=\"ICP Number 🇨🇳\"></a>ICP Number 🇨🇳</h2><p>😁 If not required, can be directly deleted.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">icp</span><span class=\"token punctuation\">:</span> 苏ICP备xxxxxxx号<span class=\"token punctuation\">-</span>x<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"Footer-Text-on-Homepage-🇨🇳\"><a href=\"#Footer-Text-on-Homepage-🇨🇳\" class=\"headerlink\" title=\"Footer Text on Homepage 🇨🇳\"></a>Footer Text on Homepage 🇨🇳</h2><p>😁 If not required, can be directly deleted or set to <code>false</code>.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">motto</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"Post-Copyright-Statement\"><a href=\"#Post-Copyright-Statement\" class=\"headerlink\" title=\"Post Copyright Statement\"></a>Post Copyright Statement</h2><p>Enabled by default. When <code>enable: false</code>, it is disabled by default.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">postCopyright</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">license</span><span class=\"token punctuation\">:</span> CC BY<span class=\"token punctuation\">-</span>NC<span class=\"token punctuation\">-</span>SA 4.0\n <span class=\"token key atrule\">license_url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//creativecommons.org/licenses/by<span class=\"token punctuation\">-</span>nc<span class=\"token punctuation\">-</span>sa/4.0/<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Katex-Mathematical-Formulas\"><a href=\"#Katex-Mathematical-Formulas\" class=\"headerlink\" title=\"Katex Mathematical Formulas\"></a>Katex Mathematical Formulas</h2><p>You can configure the CDN yourself.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">katex</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">jsCdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.js\n <span class=\"token key atrule\">cssCdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Mermaid-Flowcharts\"><a href=\"#Mermaid-Flowcharts\" class=\"headerlink\" title=\"Mermaid Flowcharts\"></a>Mermaid Flowcharts</h2><p>To draft flowchart syntax, use <code>{% mermaid %}` and `{% endmermaid %}</code> as wrappers.</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\">{% mermaid %}\ngraph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n{% endmermaid %}<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>Corresponding configurations are as follows:</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">mermaid</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">cdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.min.js<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Valine-Comments\"><a href=\"#Valine-Comments\" class=\"headerlink\" title=\"Valine Comments\"></a>Valine Comments</h2><p>First, register as a <code>LeanCloud</code> international user and create a database.</p>\n<p>Please proceed in accordance with relevant regional regulations.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">valine</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">appId</span><span class=\"token punctuation\">:</span> appId\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">appKey</span><span class=\"token punctuation\">:</span> appKey\n <span class=\"token key atrule\">avatar</span><span class=\"token punctuation\">:</span> monsterid\n <span class=\"token key atrule\">cdn</span><span class=\"token punctuation\">:</span> //unpkg.com/valine@latest/dist/Valine.min.js\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">serverURLs</span><span class=\"token punctuation\">:</span> //xxxxxxxx.api.lncldglobal.com<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"Algolia-Search\"><a href=\"#Algolia-Search\" class=\"headerlink\" title=\"Algolia Search\"></a>Algolia Search</h1><p>The blog comes with built-in local search, based on frontend development, which may have some issues. It’s recommended to switch to <code>Algolia</code>. The free account has a total of 10,000 records and 100,000 operations per month.</p>\n<h2 id=\"Register-amp-Acquire-Key\"><a href=\"#Register-amp-Acquire-Key\" class=\"headerlink\" title=\"Register & Acquire Key\"></a>Register & Acquire Key</h2><ol>\n<li><p>Create a new <code>Index</code>, for example, <code>hex-blog</code></p>\n</li>\n<li><p>Copy and save:</p>\n</li>\n</ol>\n<ul>\n<li>Application ID</li>\n<li>Search-Only API Key</li>\n<li>Admin API Key</li>\n<li>Usage API Key</li>\n</ul>\n<p><img src=\"/img/algolia-api-keys.png\" alt=\"API Keys\"></p>\n<ol start=\"3\">\n<li>Replace configurations</li>\n</ol>\n<p>Add the following to Hexo’s <code>_config.yml</code></p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">algolia</span><span class=\"token punctuation\">:</span>\n <span class=\"token comment\"># Replace</span>\n <span class=\"token key atrule\">appId</span><span class=\"token punctuation\">:</span> Application ID\n <span class=\"token comment\"># Replace</span>\n <span class=\"token key atrule\">apiKey</span><span class=\"token punctuation\">:</span> Usage API Key\n <span class=\"token comment\"># Do not disclose, used for reporting, replace</span>\n <span class=\"token key atrule\">adminApiKey</span><span class=\"token punctuation\">:</span> Admin API Key\n <span class=\"token comment\"># Replace</span>\n <span class=\"token key atrule\">SearchOnlyAPIKey</span><span class=\"token punctuation\">:</span> Search<span class=\"token punctuation\">-</span>Only API Key\n <span class=\"token key atrule\">chunkSize</span><span class=\"token punctuation\">:</span> <span class=\"token number\">5000</span>\n <span class=\"token comment\"># Replace</span>\n <span class=\"token key atrule\">indexName</span><span class=\"token punctuation\">:</span> hex<span class=\"token punctuation\">-</span>blog\n <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> content<span class=\"token punctuation\">:</span>strip\n <span class=\"token punctuation\">-</span> categories\n <span class=\"token punctuation\">-</span> date\n <span class=\"token punctuation\">-</span> permalink\n <span class=\"token punctuation\">-</span> slug\n <span class=\"token punctuation\">-</span> tags\n <span class=\"token punctuation\">-</span> title<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Install-hexo-algoliasearch\"><a href=\"#Install-hexo-algoliasearch\" class=\"headerlink\" title=\"Install hexo-algoliasearch\"></a>Install hexo-algoliasearch</h2><p>This is a Hexo blog post index plugin that automates the submission of indexes to Algolia.</p>\n<blockquote>\n<p>If you encounter any problems, you can read the <a href=\"https://www.npmjs.com/package/hexo-algoliasearch\">hexo-algoliasearch repository</a> for the latest instructions.</p>\n</blockquote>\n<p>Installation command:</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token function\">npm</span> <span class=\"token function\">install</span> hexo-algoliasearch <span class=\"token parameter variable\">--save</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"Using-Algolia\"><a href=\"#Using-Algolia\" class=\"headerlink\" title=\"Using Algolia\"></a>Using Algolia</h2><p>Before publishing each blog post, carry out index uploading operations. The usual commands are as follows:</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">hexo clean\nhexo generate\nhexo algolia<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span></span></code></pre>\n\n\n<h1 id=\"QWeather-Widget-🇨🇳\"><a href=\"#QWeather-Widget-🇨🇳\" class=\"headerlink\" title=\"QWeather Widget 🇨🇳\"></a>QWeather Widget 🇨🇳</h1><p>Cosy mainly targets domestic users and integrates QWeather cards on the homepage. Register via <a href=\"https://dev.qweather.com/docs/start/\">QWeather Developer Service</a>.</p>\n<p>After registering, fill in your <code>appKey</code> and <code>cityCode</code> in the configuration.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">weather</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token comment\"># Replace</span>\n <span class=\"token key atrule\">cityCode</span><span class=\"token punctuation\">:</span> cityCode\n <span class=\"token key atrule\">appKey</span><span class=\"token punctuation\">:</span> appKey<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>You can find your city’s <code>cityCode</code> in the official region list repository’s <code>China-City-List-latest.csv</code>.</p>\n<h1 id=\"Front-Matter\"><a href=\"#Front-Matter\" class=\"headerlink\" title=\"Front Matter\"></a>Front Matter</h1><p>In Hexo’s Markdown files, a typical YAML-formatted <code>Front Matter</code> might look like this:</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> My Article Title\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">tags</span><span class=\"token punctuation\">:</span> \n<span class=\"token punctuation\">-</span> Programming\n<span class=\"token punctuation\">-</span> JavaScript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"top\"><a href=\"#top\" class=\"headerlink\" title=\"top\"></a>top</h2><p>To pin an article to the top, assign a numerical value to the <code>top</code> metadata. Articles with a specified <code>top</code> value will be marked with a 📌 icon in the category list.</p>\n<p>For example, if there are three articles:</p>\n<ul>\n<li>Article 1</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Article 1\n<span class=\"token key atrule\">top</span><span class=\"token punctuation\">:</span> <span class=\"token number\">0</span>\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> javascript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<ul>\n<li>Article 2</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Article 2\n<span class=\"token key atrule\">top</span><span class=\"token punctuation\">:</span> <span class=\"token number\">1</span>\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> javascript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<ul>\n<li>Article 3</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Article 3\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> javascript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>Then, under the <code>javascript</code> category, the sort order will be: <code>Article 1 > Article 2 > Article 3</code>.</p>\n<h2 id=\"status\"><a href=\"#status\" class=\"headerlink\" title=\"status\"></a>status</h2><p>This is used to differentiate the status of articles and can be quickly <code>filtered</code> using the category list. The Cosy theme comes with 4 built-in statuses:</p>\n<ul>\n<li>done: Completed</li>\n<li>doing: In Progress</li>\n<li>todo: To Do</li>\n<li>other: Abandoned</li>\n</ul>\n<p>For example:</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Article 1\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">status</span><span class=\"token punctuation\">:</span> done</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n\n\n"},{"title":"Markdown Sample","description":"A very simple way to add structured data to a page.","status":"done","top":0,"keywords":"Markdown, 代码高亮 (Codes), 引用 (Blockquotes), 列表 (Lists), 图片 (Images), 表格 (Tables), Emoji, TeX(KaTeX), 流程图 (mermaid)","_content":"\n# Linear Markdown Sample\n\n![markdown](https://pandao.github.io/editor.md/images/logos/editormd-logo-180x180.png)\n\n\n# Heading 1 link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n## Heading 2 link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n### Heading 3 link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n#### Heading 4 link [Heading link](https://github.com/pandao/editor.md \"Heading link\") Heading link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n##### Heading 5 link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n###### Heading 6 link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n\n\n\n# 字符效果和横线等\n \n----\n\n~~删除线~~ <s>删除线(开启识别HTML标签时)</s>\n*斜体字* _斜体字_\n**粗体** __粗体__\n***粗斜体*** ___粗斜体___\n\n上标:X<sub>2</sub>,下标:O<sup>2</sup>\n\n**缩写(同HTML的abbr标签)**\n\n> 即更长的单词或短语的缩写形式,前提是开启识别HTML标签时,已默认开启\n\nThe <abbr title=\"Hyper Text Markup Language\">HTML</abbr> specification is maintained by the <abbr title=\"World Wide Web Consortium\">W3C</abbr>.\n\n# 引用 Blockquotes\n\n> 引用文本 Blockquotes\n\n引用的行内混合 Blockquotes\n \n> 引用:如果想要插入空白换行`即<br />标签`,在插入处先键入两个以上的空格然后回车即可,[普通链接](http://localhost/)。\n\n# 锚点与链接 Links\n\n[普通链接](http://localhost/)\n\n[普通链接带标题](http://localhost/ \"普通链接带标题\")\n\n直接链接:<https://github.com>\n\nhttps://baidu.com\n\n[锚点链接][anchor-id] \n\n[anchor-id]: http://www.this-anchor-link.com/\n\n[mailto:test.test@gmail.com](mailto:test.test@gmail.com)\n\nGFM a-tail link [@pandao](https://my.oschina.net/u/3691274) 邮箱地址自动链接 test.test@gmail.com www@vip.qq.com\n\n> @pandao\n\n# 多语言代码高亮 Codes\n\n## 行内代码 Inline code\n\n执行命令:`npm install marked`\n\n## JS代码 \n\n```javascript\nfunction test() {\n\tconsole.log(\"Hello world!\");\n}\n \n(function(){\n var box = function() {\n return box.fn.init();\n };\n\n box.prototype = box.fn = {\n init : function(){\n console.log('box.init()');\n\n\t\t\treturn this;\n },\n\n\t\tadd : function(str) {\n\t\t\talert(\"add\", str);\n\n\t\t\treturn this;\n\t\t},\n\n\t\tremove : function(str) {\n\t\t\talert(\"remove\", str);\n\n\t\t\treturn this;\n\t\t}\n };\n \n box.fn.init.prototype = box.fn;\n \n window.box =box;\n})();\n\nvar testBox = box();\ntestBox.add(\"jQuery\").remove(\"jQuery\");\n```\n\n## HTML 代码 HTML codes\n\n```html\n<!DOCTYPE html>\n<html>\n <head>\n <mate charest=\"utf-8\" />\n <meta name=\"keywords\" content=\"Editor.md, Markdown, Editor\" />\n <title>Hello world!</title>\n <style type=\"text/css\">\n body{font-size:14px;color:#444;font-family: \"Microsoft Yahei\", Tahoma, \"Hiragino Sans GB\", Arial;background:#fff;}\n ul{list-style: none;}\n img{border:none;vertical-align: middle;}\n </style>\n </head>\n <body>\n <h1 class=\"text-xxl\">Hello world!</h1>\n <p class=\"text-green\">Plain text</p>\n </body>\n</html>\n```\n\n# 图片 Images\n\nImage:\n\n![](https://pandao.github.io/editor.md/examples/images/4.jpg)\n\n> Follow your heart.\n\n![](https://pandao.github.io/editor.md/examples/images/8.jpg)\n\n> 图为:厦门白城沙滩\n\n图片加链接 (Image + Link):\n\n[![](https://pandao.github.io/editor.md/examples/images/7.jpg)](https://pandao.github.io/editor.md/images/7.jpg \"李健首张专辑《似水流年》封面\")\n\n> 图为:李健首张专辑《似水流年》封面\n \n----\n\n# 列表 Lists\n\n## 无序列表(减号)Unordered Lists (-)\n \n- 列表一\n- 列表二\n- 列表三\n \n## 无序列表(星号)Unordered Lists (*)\n\n* 列表一\n* 列表二\n* 列表三\n\n## 无序列表(加号和嵌套)Unordered Lists (+)\n \n+ 列表一\n+ 列表二\n + 列表二-1\n + 列表二-2\n + 列表二-3\n+ 列表三\n * 列表一\n * 列表二\n * 列表三\n\n## 有序列表 Ordered Lists (-)\n \n1. 第一行\n2. 第二行\n3. 第三行\n\n## GFM task list\n\n- [x] GFM task list 1\n- [x] GFM task list 2\n- [ ] GFM task list 3\n - [ ] GFM task list 3-1\n - [ ] GFM task list 3-2\n - [ ] GFM task list 3-3\n- [ ] GFM task list 4\n - [ ] GFM task list 4-1\n - [ ] GFM task list 4-2\n \n----\n \n# 绘制表格 Tables\n\n| 项目 | 价格 | 数量 |\n| ------ | ----: | :---: |\n| 计算机 | $1600 | 5 |\n| 手机 | $12 | 12 |\n| 管线 | $1 | 234 |\n \n| First Header | Second Header |\n| ------------ | ------------- |\n| Content Cell | Content Cell |\n| Content Cell | Content Cell |\n\n| First Header | Second Header |\n| ------------ | ------------- |\n| Content Cell | Content Cell |\n| Content Cell | Content Cell |\n\n| Function name | Description |\n| ------------- | -------------------------- |\n| `help()` | Display the help window. |\n| `destroy()` | **Destroy your computer!** |\n\n| Left-Aligned | Center Aligned | Right Aligned |\n| :------------ | :-------------: | ------------: |\n| col 3 is | some wordy text | $1600 |\n| col 2 is | centered | $12 |\n| zebra stripes | are neat | $1 |\n\n| Item | Value |\n| -------- | ----: |\n| Computer | $1600 |\n| Phone | $12 |\n| Pipe | $1 |\n \n# 科学公式 TeX(KaTeX)\n\n$$E=mc^2$$\n\n$$x > y$$\n\n$$\\(\\sqrt{3x-1}+(1+x)^2\\)$$\n \n$$\\sin(\\alpha)^{\\theta}=\\sum_{i=0}^{n}(x^i + \\cos(f))$$\n\n\n# 绘制流程图 mermaid\n\n{% mermaid %}\ngraph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n{% endmermaid %}\n\n \n \nEnd","source":"_posts/Markdown Sample.md","raw":"---\ntitle: Markdown Sample\ndescription: A very simple way to add structured data to a page.\nstatus: done\ntop: 0\ncategories: \n- Hexo\nkeywords: \"Markdown, 代码高亮 (Codes), 引用 (Blockquotes), 列表 (Lists), 图片 (Images), 表格 (Tables), Emoji, TeX(KaTeX), 流程图 (mermaid)\"\n---\n\n# Linear Markdown Sample\n\n![markdown](https://pandao.github.io/editor.md/images/logos/editormd-logo-180x180.png)\n\n\n# Heading 1 link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n## Heading 2 link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n### Heading 3 link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n#### Heading 4 link [Heading link](https://github.com/pandao/editor.md \"Heading link\") Heading link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n##### Heading 5 link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n###### Heading 6 link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n\n\n\n# 字符效果和横线等\n \n----\n\n~~删除线~~ <s>删除线(开启识别HTML标签时)</s>\n*斜体字* _斜体字_\n**粗体** __粗体__\n***粗斜体*** ___粗斜体___\n\n上标:X<sub>2</sub>,下标:O<sup>2</sup>\n\n**缩写(同HTML的abbr标签)**\n\n> 即更长的单词或短语的缩写形式,前提是开启识别HTML标签时,已默认开启\n\nThe <abbr title=\"Hyper Text Markup Language\">HTML</abbr> specification is maintained by the <abbr title=\"World Wide Web Consortium\">W3C</abbr>.\n\n# 引用 Blockquotes\n\n> 引用文本 Blockquotes\n\n引用的行内混合 Blockquotes\n \n> 引用:如果想要插入空白换行`即<br />标签`,在插入处先键入两个以上的空格然后回车即可,[普通链接](http://localhost/)。\n\n# 锚点与链接 Links\n\n[普通链接](http://localhost/)\n\n[普通链接带标题](http://localhost/ \"普通链接带标题\")\n\n直接链接:<https://github.com>\n\nhttps://baidu.com\n\n[锚点链接][anchor-id] \n\n[anchor-id]: http://www.this-anchor-link.com/\n\n[mailto:test.test@gmail.com](mailto:test.test@gmail.com)\n\nGFM a-tail link [@pandao](https://my.oschina.net/u/3691274) 邮箱地址自动链接 test.test@gmail.com www@vip.qq.com\n\n> @pandao\n\n# 多语言代码高亮 Codes\n\n## 行内代码 Inline code\n\n执行命令:`npm install marked`\n\n## JS代码 \n\n```javascript\nfunction test() {\n\tconsole.log(\"Hello world!\");\n}\n \n(function(){\n var box = function() {\n return box.fn.init();\n };\n\n box.prototype = box.fn = {\n init : function(){\n console.log('box.init()');\n\n\t\t\treturn this;\n },\n\n\t\tadd : function(str) {\n\t\t\talert(\"add\", str);\n\n\t\t\treturn this;\n\t\t},\n\n\t\tremove : function(str) {\n\t\t\talert(\"remove\", str);\n\n\t\t\treturn this;\n\t\t}\n };\n \n box.fn.init.prototype = box.fn;\n \n window.box =box;\n})();\n\nvar testBox = box();\ntestBox.add(\"jQuery\").remove(\"jQuery\");\n```\n\n## HTML 代码 HTML codes\n\n```html\n<!DOCTYPE html>\n<html>\n <head>\n <mate charest=\"utf-8\" />\n <meta name=\"keywords\" content=\"Editor.md, Markdown, Editor\" />\n <title>Hello world!</title>\n <style type=\"text/css\">\n body{font-size:14px;color:#444;font-family: \"Microsoft Yahei\", Tahoma, \"Hiragino Sans GB\", Arial;background:#fff;}\n ul{list-style: none;}\n img{border:none;vertical-align: middle;}\n </style>\n </head>\n <body>\n <h1 class=\"text-xxl\">Hello world!</h1>\n <p class=\"text-green\">Plain text</p>\n </body>\n</html>\n```\n\n# 图片 Images\n\nImage:\n\n![](https://pandao.github.io/editor.md/examples/images/4.jpg)\n\n> Follow your heart.\n\n![](https://pandao.github.io/editor.md/examples/images/8.jpg)\n\n> 图为:厦门白城沙滩\n\n图片加链接 (Image + Link):\n\n[![](https://pandao.github.io/editor.md/examples/images/7.jpg)](https://pandao.github.io/editor.md/images/7.jpg \"李健首张专辑《似水流年》封面\")\n\n> 图为:李健首张专辑《似水流年》封面\n \n----\n\n# 列表 Lists\n\n## 无序列表(减号)Unordered Lists (-)\n \n- 列表一\n- 列表二\n- 列表三\n \n## 无序列表(星号)Unordered Lists (*)\n\n* 列表一\n* 列表二\n* 列表三\n\n## 无序列表(加号和嵌套)Unordered Lists (+)\n \n+ 列表一\n+ 列表二\n + 列表二-1\n + 列表二-2\n + 列表二-3\n+ 列表三\n * 列表一\n * 列表二\n * 列表三\n\n## 有序列表 Ordered Lists (-)\n \n1. 第一行\n2. 第二行\n3. 第三行\n\n## GFM task list\n\n- [x] GFM task list 1\n- [x] GFM task list 2\n- [ ] GFM task list 3\n - [ ] GFM task list 3-1\n - [ ] GFM task list 3-2\n - [ ] GFM task list 3-3\n- [ ] GFM task list 4\n - [ ] GFM task list 4-1\n - [ ] GFM task list 4-2\n \n----\n \n# 绘制表格 Tables\n\n| 项目 | 价格 | 数量 |\n| ------ | ----: | :---: |\n| 计算机 | $1600 | 5 |\n| 手机 | $12 | 12 |\n| 管线 | $1 | 234 |\n \n| First Header | Second Header |\n| ------------ | ------------- |\n| Content Cell | Content Cell |\n| Content Cell | Content Cell |\n\n| First Header | Second Header |\n| ------------ | ------------- |\n| Content Cell | Content Cell |\n| Content Cell | Content Cell |\n\n| Function name | Description |\n| ------------- | -------------------------- |\n| `help()` | Display the help window. |\n| `destroy()` | **Destroy your computer!** |\n\n| Left-Aligned | Center Aligned | Right Aligned |\n| :------------ | :-------------: | ------------: |\n| col 3 is | some wordy text | $1600 |\n| col 2 is | centered | $12 |\n| zebra stripes | are neat | $1 |\n\n| Item | Value |\n| -------- | ----: |\n| Computer | $1600 |\n| Phone | $12 |\n| Pipe | $1 |\n \n# 科学公式 TeX(KaTeX)\n\n$$E=mc^2$$\n\n$$x > y$$\n\n$$\\(\\sqrt{3x-1}+(1+x)^2\\)$$\n \n$$\\sin(\\alpha)^{\\theta}=\\sum_{i=0}^{n}(x^i + \\cos(f))$$\n\n\n# 绘制流程图 mermaid\n\n{% mermaid %}\ngraph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n{% endmermaid %}\n\n \n \nEnd","slug":"Markdown Sample","published":1,"date":"2023-10-23T04:01:13.108Z","updated":"2023-10-23T04:01:13.108Z","comments":1,"layout":"post","photos":[],"link":"","_id":"clo3o301f0004ewz39ypv9p98","content":"<h1 id=\"Linear-Markdown-Sample\"><a href=\"#Linear-Markdown-Sample\" class=\"headerlink\" title=\"Linear Markdown Sample\"></a>Linear Markdown Sample</h1><p><img src=\"https://pandao.github.io/editor.md/images/logos/editormd-logo-180x180.png\" alt=\"markdown\"></p>\n<h1 id=\"Heading-1-link-Heading-link\"><a href=\"#Heading-1-link-Heading-link\" class=\"headerlink\" title=\"Heading 1 link Heading link\"></a>Heading 1 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h1><h2 id=\"Heading-2-link-Heading-link\"><a href=\"#Heading-2-link-Heading-link\" class=\"headerlink\" title=\"Heading 2 link Heading link\"></a>Heading 2 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h2><h3 id=\"Heading-3-link-Heading-link\"><a href=\"#Heading-3-link-Heading-link\" class=\"headerlink\" title=\"Heading 3 link Heading link\"></a>Heading 3 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h3><h4 id=\"Heading-4-link-Heading-link-Heading-link-Heading-link\"><a href=\"#Heading-4-link-Heading-link-Heading-link-Heading-link\" class=\"headerlink\" title=\"Heading 4 link Heading link Heading link Heading link\"></a>Heading 4 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a> Heading link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h4><h5 id=\"Heading-5-link-Heading-link\"><a href=\"#Heading-5-link-Heading-link\" class=\"headerlink\" title=\"Heading 5 link Heading link\"></a>Heading 5 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h5><h6 id=\"Heading-6-link-Heading-link\"><a href=\"#Heading-6-link-Heading-link\" class=\"headerlink\" title=\"Heading 6 link Heading link\"></a>Heading 6 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h6><h1 id=\"字符效果和横线等\"><a href=\"#字符效果和横线等\" class=\"headerlink\" title=\"字符效果和横线等\"></a>字符效果和横线等</h1><hr>\n<p><del>删除线</del> <s>删除线(开启识别HTML标签时)</s><br><em>斜体字</em> <em>斜体字</em><br><strong>粗体</strong> <strong>粗体</strong><br><em><strong>粗斜体</strong></em> <em><strong>粗斜体</strong></em></p>\n<p>上标:X<sub>2</sub>,下标:O<sup>2</sup></p>\n<p><strong>缩写(同HTML的abbr标签)</strong></p>\n<blockquote>\n<p>即更长的单词或短语的缩写形式,前提是开启识别HTML标签时,已默认开启</p>\n</blockquote>\n<p>The <abbr title=\"Hyper Text Markup Language\">HTML</abbr> specification is maintained by the <abbr title=\"World Wide Web Consortium\">W3C</abbr>.</p>\n<h1 id=\"引用-Blockquotes\"><a href=\"#引用-Blockquotes\" class=\"headerlink\" title=\"引用 Blockquotes\"></a>引用 Blockquotes</h1><blockquote>\n<p>引用文本 Blockquotes</p>\n</blockquote>\n<p>引用的行内混合 Blockquotes</p>\n<blockquote>\n<p>引用:如果想要插入空白换行<code>即<br />标签</code>,在插入处先键入两个以上的空格然后回车即可,<a href=\"http://localhost/\">普通链接</a>。</p>\n</blockquote>\n<h1 id=\"锚点与链接-Links\"><a href=\"#锚点与链接-Links\" class=\"headerlink\" title=\"锚点与链接 Links\"></a>锚点与链接 Links</h1><p><a href=\"http://localhost/\">普通链接</a></p>\n<p><a href=\"http://localhost/\" title=\"普通链接带标题\">普通链接带标题</a></p>\n<p>直接链接:<a href=\"https://github.com/\">https://github.com</a></p>\n<p><a href=\"https://baidu.com/\">https://baidu.com</a></p>\n<p><a href=\"http://www.this-anchor-link.com/\">锚点链接</a> </p>\n<p><a href=\"mailto:test.test@gmail.com\">mailto:test.test@gmail.com</a></p>\n<p>GFM a-tail link <a href=\"https://my.oschina.net/u/3691274\">@pandao</a> 邮箱地址自动链接 <a href=\"mailto:test.test@gmail.com\">test.test@gmail.com</a> <a href=\"mailto:www@vip.qq.com\">www@vip.qq.com</a></p>\n<blockquote>\n<p>@pandao</p>\n</blockquote>\n<h1 id=\"多语言代码高亮-Codes\"><a href=\"#多语言代码高亮-Codes\" class=\"headerlink\" title=\"多语言代码高亮 Codes\"></a>多语言代码高亮 Codes</h1><h2 id=\"行内代码-Inline-code\"><a href=\"#行内代码-Inline-code\" class=\"headerlink\" title=\"行内代码 Inline code\"></a>行内代码 Inline code</h2><p>执行命令:<code>npm install marked</code></p>\n<h2 id=\"JS代码\"><a href=\"#JS代码\" class=\"headerlink\" title=\"JS代码\"></a>JS代码</h2><pre class=\"line-numbers language-javascript\" data-language=\"javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">function</span> <span class=\"token function\">test</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\tconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Hello world!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n \n<span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">var</span> <span class=\"token function-variable function\">box</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">return</span> box<span class=\"token punctuation\">.</span>fn<span class=\"token punctuation\">.</span><span class=\"token function\">init</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\n box<span class=\"token punctuation\">.</span>prototype <span class=\"token operator\">=</span> box<span class=\"token punctuation\">.</span>fn <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n <span class=\"token function-variable function\">init</span> <span class=\"token operator\">:</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">'box.init()'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t\t<span class=\"token keyword\">return</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n\n\t\t<span class=\"token function-variable function\">add</span> <span class=\"token operator\">:</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">str</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\t<span class=\"token function\">alert</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"add\"</span><span class=\"token punctuation\">,</span> str<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t\t<span class=\"token keyword\">return</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n\n\t\t<span class=\"token function-variable function\">remove</span> <span class=\"token operator\">:</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">str</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\t<span class=\"token function\">alert</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"remove\"</span><span class=\"token punctuation\">,</span> str<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t\t<span class=\"token keyword\">return</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n \n box<span class=\"token punctuation\">.</span>fn<span class=\"token punctuation\">.</span>init<span class=\"token punctuation\">.</span>prototype <span class=\"token operator\">=</span> box<span class=\"token punctuation\">.</span>fn<span class=\"token punctuation\">;</span>\n \n window<span class=\"token punctuation\">.</span>box <span class=\"token operator\">=</span>box<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">var</span> testBox <span class=\"token operator\">=</span> <span class=\"token function\">box</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\ntestBox<span class=\"token punctuation\">.</span><span class=\"token function\">add</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"jQuery\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">remove</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"jQuery\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"HTML-代码-HTML-codes\"><a href=\"#HTML-代码-HTML-codes\" class=\"headerlink\" title=\"HTML 代码 HTML codes\"></a>HTML 代码 HTML codes</h2><pre class=\"line-numbers language-markup\" data-language=\"markup\"><code class=\"language-markup\"><span class=\"token doctype\"><span class=\"token punctuation\"><!</span><span class=\"token doctype-tag\">DOCTYPE</span> <span class=\"token name\">html</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>html</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>head</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>mate</span> <span class=\"token attr-name\">charest</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>utf-8<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>meta</span> <span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>keywords<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">content</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>Editor.md, Markdown, Editor<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>title</span><span class=\"token punctuation\">></span></span>Hello world!<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>title</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>style</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text/css<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token style\"><span class=\"token language-css\">\n <span class=\"token selector\">body</span><span class=\"token punctuation\">{</span><span class=\"token property\">font-size</span><span class=\"token punctuation\">:</span>14px<span class=\"token punctuation\">;</span><span class=\"token property\">color</span><span class=\"token punctuation\">:</span>#444<span class=\"token punctuation\">;</span><span class=\"token property\">font-family</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Microsoft Yahei\"</span><span class=\"token punctuation\">,</span> Tahoma<span class=\"token punctuation\">,</span> <span class=\"token string\">\"Hiragino Sans GB\"</span><span class=\"token punctuation\">,</span> Arial<span class=\"token punctuation\">;</span><span class=\"token property\">background</span><span class=\"token punctuation\">:</span>#fff<span class=\"token punctuation\">;</span><span class=\"token punctuation\">}</span>\n <span class=\"token selector\">ul</span><span class=\"token punctuation\">{</span><span class=\"token property\">list-style</span><span class=\"token punctuation\">:</span> none<span class=\"token punctuation\">;</span><span class=\"token punctuation\">}</span>\n <span class=\"token selector\">img</span><span class=\"token punctuation\">{</span><span class=\"token property\">border</span><span class=\"token punctuation\">:</span>none<span class=\"token punctuation\">;</span><span class=\"token property\">vertical-align</span><span class=\"token punctuation\">:</span> middle<span class=\"token punctuation\">;</span><span class=\"token punctuation\">}</span>\n </span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>style</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>head</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>body</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>h1</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text-xxl<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>Hello world!<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>h1</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>p</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text-green<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>Plain text<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>p</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>body</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>html</span><span class=\"token punctuation\">></span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"图片-Images\"><a href=\"#图片-Images\" class=\"headerlink\" title=\"图片 Images\"></a>图片 Images</h1><p>Image:</p>\n<p><img src=\"https://pandao.github.io/editor.md/examples/images/4.jpg\"></p>\n<blockquote>\n<p>Follow your heart.</p>\n</blockquote>\n<p><img src=\"https://pandao.github.io/editor.md/examples/images/8.jpg\"></p>\n<blockquote>\n<p>图为:厦门白城沙滩</p>\n</blockquote>\n<p>图片加链接 (Image + Link):</p>\n<p><a href=\"https://pandao.github.io/editor.md/images/7.jpg\" title=\"李健首张专辑《似水流年》封面\"><img src=\"https://pandao.github.io/editor.md/examples/images/7.jpg\"></a></p>\n<blockquote>\n<p>图为:李健首张专辑《似水流年》封面</p>\n</blockquote>\n<hr>\n<h1 id=\"列表-Lists\"><a href=\"#列表-Lists\" class=\"headerlink\" title=\"列表 Lists\"></a>列表 Lists</h1><h2 id=\"无序列表(减号)Unordered-Lists\"><a href=\"#无序列表(减号)Unordered-Lists\" class=\"headerlink\" title=\"无序列表(减号)Unordered Lists (-)\"></a>无序列表(减号)Unordered Lists (-)</h2><ul>\n<li>列表一</li>\n<li>列表二</li>\n<li>列表三</li>\n</ul>\n<h2 id=\"无序列表(星号)Unordered-Lists\"><a href=\"#无序列表(星号)Unordered-Lists\" class=\"headerlink\" title=\"无序列表(星号)Unordered Lists (*)\"></a>无序列表(星号)Unordered Lists (*)</h2><ul>\n<li>列表一</li>\n<li>列表二</li>\n<li>列表三</li>\n</ul>\n<h2 id=\"无序列表(加号和嵌套)Unordered-Lists\"><a href=\"#无序列表(加号和嵌套)Unordered-Lists\" class=\"headerlink\" title=\"无序列表(加号和嵌套)Unordered Lists (+)\"></a>无序列表(加号和嵌套)Unordered Lists (+)</h2><ul>\n<li>列表一</li>\n<li>列表二<ul>\n<li>列表二-1</li>\n<li>列表二-2</li>\n<li>列表二-3</li>\n</ul>\n</li>\n<li>列表三<ul>\n<li>列表一</li>\n<li>列表二</li>\n<li>列表三</li>\n</ul>\n</li>\n</ul>\n<h2 id=\"有序列表-Ordered-Lists\"><a href=\"#有序列表-Ordered-Lists\" class=\"headerlink\" title=\"有序列表 Ordered Lists (-)\"></a>有序列表 Ordered Lists (-)</h2><ol>\n<li>第一行</li>\n<li>第二行</li>\n<li>第三行</li>\n</ol>\n<h2 id=\"GFM-task-list\"><a href=\"#GFM-task-list\" class=\"headerlink\" title=\"GFM task list\"></a>GFM task list</h2><ul>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\"> GFM task list 1</li>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\"> GFM task list 2</li>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 3<ul>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 3-1</li>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 3-2</li>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 3-3</li>\n</ul>\n</li>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 4<ul>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 4-1</li>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 4-2</li>\n</ul>\n</li>\n</ul>\n<hr>\n<h1 id=\"绘制表格-Tables\"><a href=\"#绘制表格-Tables\" class=\"headerlink\" title=\"绘制表格 Tables\"></a>绘制表格 Tables</h1><table>\n<thead>\n<tr>\n<th>项目</th>\n<th align=\"right\">价格</th>\n<th align=\"center\">数量</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>计算机</td>\n<td align=\"right\">$1600</td>\n<td align=\"center\">5</td>\n</tr>\n<tr>\n<td>手机</td>\n<td align=\"right\">$12</td>\n<td align=\"center\">12</td>\n</tr>\n<tr>\n<td>管线</td>\n<td align=\"right\">$1</td>\n<td align=\"center\">234</td>\n</tr>\n</tbody></table>\n<table>\n<thead>\n<tr>\n<th>First Header</th>\n<th>Second Header</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Content Cell</td>\n<td>Content Cell</td>\n</tr>\n<tr>\n<td>Content Cell</td>\n<td>Content Cell</td>\n</tr>\n</tbody></table>\n<table>\n<thead>\n<tr>\n<th>First Header</th>\n<th>Second Header</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Content Cell</td>\n<td>Content Cell</td>\n</tr>\n<tr>\n<td>Content Cell</td>\n<td>Content Cell</td>\n</tr>\n</tbody></table>\n<table>\n<thead>\n<tr>\n<th>Function name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>help()</code></td>\n<td>Display the help window.</td>\n</tr>\n<tr>\n<td><code>destroy()</code></td>\n<td><strong>Destroy your computer!</strong></td>\n</tr>\n</tbody></table>\n<table>\n<thead>\n<tr>\n<th align=\"left\">Left-Aligned</th>\n<th align=\"center\">Center Aligned</th>\n<th align=\"right\">Right Aligned</th>\n</tr>\n</thead>\n<tbody><tr>\n<td align=\"left\">col 3 is</td>\n<td align=\"center\">some wordy text</td>\n<td align=\"right\">$1600</td>\n</tr>\n<tr>\n<td align=\"left\">col 2 is</td>\n<td align=\"center\">centered</td>\n<td align=\"right\">$12</td>\n</tr>\n<tr>\n<td align=\"left\">zebra stripes</td>\n<td align=\"center\">are neat</td>\n<td align=\"right\">$1</td>\n</tr>\n</tbody></table>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th align=\"right\">Value</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Computer</td>\n<td align=\"right\">$1600</td>\n</tr>\n<tr>\n<td>Phone</td>\n<td align=\"right\">$12</td>\n</tr>\n<tr>\n<td>Pipe</td>\n<td align=\"right\">$1</td>\n</tr>\n</tbody></table>\n<h1 id=\"科学公式-TeX-KaTeX\"><a href=\"#科学公式-TeX-KaTeX\" class=\"headerlink\" title=\"科学公式 TeX(KaTeX)\"></a>科学公式 TeX(KaTeX)</h1><p>$$E=mc^2$$</p>\n<p>$$x > y$$</p>\n<p>$$(\\sqrt{3x-1}+(1+x)^2)$$</p>\n<p>$$\\sin(\\alpha)^{\\theta}=\\sum_{i=0}^{n}(x^i + \\cos(f))$$</p>\n<h1 id=\"绘制流程图-mermaid\"><a href=\"#绘制流程图-mermaid\" class=\"headerlink\" title=\"绘制流程图 mermaid\"></a>绘制流程图 mermaid</h1><div class=\"mermaid\">\n graph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n </div>\n\n<p>End</p>\n","site":{"data":{}},"excerpt":"","more":"<h1 id=\"Linear-Markdown-Sample\"><a href=\"#Linear-Markdown-Sample\" class=\"headerlink\" title=\"Linear Markdown Sample\"></a>Linear Markdown Sample</h1><p><img src=\"https://pandao.github.io/editor.md/images/logos/editormd-logo-180x180.png\" alt=\"markdown\"></p>\n<h1 id=\"Heading-1-link-Heading-link\"><a href=\"#Heading-1-link-Heading-link\" class=\"headerlink\" title=\"Heading 1 link Heading link\"></a>Heading 1 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h1><h2 id=\"Heading-2-link-Heading-link\"><a href=\"#Heading-2-link-Heading-link\" class=\"headerlink\" title=\"Heading 2 link Heading link\"></a>Heading 2 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h2><h3 id=\"Heading-3-link-Heading-link\"><a href=\"#Heading-3-link-Heading-link\" class=\"headerlink\" title=\"Heading 3 link Heading link\"></a>Heading 3 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h3><h4 id=\"Heading-4-link-Heading-link-Heading-link-Heading-link\"><a href=\"#Heading-4-link-Heading-link-Heading-link-Heading-link\" class=\"headerlink\" title=\"Heading 4 link Heading link Heading link Heading link\"></a>Heading 4 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a> Heading link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h4><h5 id=\"Heading-5-link-Heading-link\"><a href=\"#Heading-5-link-Heading-link\" class=\"headerlink\" title=\"Heading 5 link Heading link\"></a>Heading 5 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h5><h6 id=\"Heading-6-link-Heading-link\"><a href=\"#Heading-6-link-Heading-link\" class=\"headerlink\" title=\"Heading 6 link Heading link\"></a>Heading 6 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h6><h1 id=\"字符效果和横线等\"><a href=\"#字符效果和横线等\" class=\"headerlink\" title=\"字符效果和横线等\"></a>字符效果和横线等</h1><hr>\n<p><del>删除线</del> <s>删除线(开启识别HTML标签时)</s><br><em>斜体字</em> <em>斜体字</em><br><strong>粗体</strong> <strong>粗体</strong><br><em><strong>粗斜体</strong></em> <em><strong>粗斜体</strong></em></p>\n<p>上标:X<sub>2</sub>,下标:O<sup>2</sup></p>\n<p><strong>缩写(同HTML的abbr标签)</strong></p>\n<blockquote>\n<p>即更长的单词或短语的缩写形式,前提是开启识别HTML标签时,已默认开启</p>\n</blockquote>\n<p>The <abbr title=\"Hyper Text Markup Language\">HTML</abbr> specification is maintained by the <abbr title=\"World Wide Web Consortium\">W3C</abbr>.</p>\n<h1 id=\"引用-Blockquotes\"><a href=\"#引用-Blockquotes\" class=\"headerlink\" title=\"引用 Blockquotes\"></a>引用 Blockquotes</h1><blockquote>\n<p>引用文本 Blockquotes</p>\n</blockquote>\n<p>引用的行内混合 Blockquotes</p>\n<blockquote>\n<p>引用:如果想要插入空白换行<code>即<br />标签</code>,在插入处先键入两个以上的空格然后回车即可,<a href=\"http://localhost/\">普通链接</a>。</p>\n</blockquote>\n<h1 id=\"锚点与链接-Links\"><a href=\"#锚点与链接-Links\" class=\"headerlink\" title=\"锚点与链接 Links\"></a>锚点与链接 Links</h1><p><a href=\"http://localhost/\">普通链接</a></p>\n<p><a href=\"http://localhost/\" title=\"普通链接带标题\">普通链接带标题</a></p>\n<p>直接链接:<a href=\"https://github.com/\">https://github.com</a></p>\n<p><a href=\"https://baidu.com/\">https://baidu.com</a></p>\n<p><a href=\"http://www.this-anchor-link.com/\">锚点链接</a> </p>\n<p><a href=\"mailto:test.test@gmail.com\">mailto:test.test@gmail.com</a></p>\n<p>GFM a-tail link <a href=\"https://my.oschina.net/u/3691274\">@pandao</a> 邮箱地址自动链接 <a href=\"mailto:test.test@gmail.com\">test.test@gmail.com</a> <a href=\"mailto:www@vip.qq.com\">www@vip.qq.com</a></p>\n<blockquote>\n<p>@pandao</p>\n</blockquote>\n<h1 id=\"多语言代码高亮-Codes\"><a href=\"#多语言代码高亮-Codes\" class=\"headerlink\" title=\"多语言代码高亮 Codes\"></a>多语言代码高亮 Codes</h1><h2 id=\"行内代码-Inline-code\"><a href=\"#行内代码-Inline-code\" class=\"headerlink\" title=\"行内代码 Inline code\"></a>行内代码 Inline code</h2><p>执行命令:<code>npm install marked</code></p>\n<h2 id=\"JS代码\"><a href=\"#JS代码\" class=\"headerlink\" title=\"JS代码\"></a>JS代码</h2><pre class=\"line-numbers language-javascript\" data-language=\"javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">function</span> <span class=\"token function\">test</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\tconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Hello world!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n \n<span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">var</span> <span class=\"token function-variable function\">box</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">return</span> box<span class=\"token punctuation\">.</span>fn<span class=\"token punctuation\">.</span><span class=\"token function\">init</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\n box<span class=\"token punctuation\">.</span>prototype <span class=\"token operator\">=</span> box<span class=\"token punctuation\">.</span>fn <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n <span class=\"token function-variable function\">init</span> <span class=\"token operator\">:</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">'box.init()'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t\t<span class=\"token keyword\">return</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n\n\t\t<span class=\"token function-variable function\">add</span> <span class=\"token operator\">:</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">str</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\t<span class=\"token function\">alert</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"add\"</span><span class=\"token punctuation\">,</span> str<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t\t<span class=\"token keyword\">return</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n\n\t\t<span class=\"token function-variable function\">remove</span> <span class=\"token operator\">:</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">str</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\t<span class=\"token function\">alert</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"remove\"</span><span class=\"token punctuation\">,</span> str<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t\t<span class=\"token keyword\">return</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n \n box<span class=\"token punctuation\">.</span>fn<span class=\"token punctuation\">.</span>init<span class=\"token punctuation\">.</span>prototype <span class=\"token operator\">=</span> box<span class=\"token punctuation\">.</span>fn<span class=\"token punctuation\">;</span>\n \n window<span class=\"token punctuation\">.</span>box <span class=\"token operator\">=</span>box<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">var</span> testBox <span class=\"token operator\">=</span> <span class=\"token function\">box</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\ntestBox<span class=\"token punctuation\">.</span><span class=\"token function\">add</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"jQuery\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">remove</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"jQuery\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"HTML-代码-HTML-codes\"><a href=\"#HTML-代码-HTML-codes\" class=\"headerlink\" title=\"HTML 代码 HTML codes\"></a>HTML 代码 HTML codes</h2><pre class=\"line-numbers language-markup\" data-language=\"markup\"><code class=\"language-markup\"><span class=\"token doctype\"><span class=\"token punctuation\"><!</span><span class=\"token doctype-tag\">DOCTYPE</span> <span class=\"token name\">html</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>html</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>head</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>mate</span> <span class=\"token attr-name\">charest</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>utf-8<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>meta</span> <span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>keywords<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">content</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>Editor.md, Markdown, Editor<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>title</span><span class=\"token punctuation\">></span></span>Hello world!<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>title</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>style</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text/css<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token style\"><span class=\"token language-css\">\n <span class=\"token selector\">body</span><span class=\"token punctuation\">{</span><span class=\"token property\">font-size</span><span class=\"token punctuation\">:</span>14px<span class=\"token punctuation\">;</span><span class=\"token property\">color</span><span class=\"token punctuation\">:</span>#444<span class=\"token punctuation\">;</span><span class=\"token property\">font-family</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Microsoft Yahei\"</span><span class=\"token punctuation\">,</span> Tahoma<span class=\"token punctuation\">,</span> <span class=\"token string\">\"Hiragino Sans GB\"</span><span class=\"token punctuation\">,</span> Arial<span class=\"token punctuation\">;</span><span class=\"token property\">background</span><span class=\"token punctuation\">:</span>#fff<span class=\"token punctuation\">;</span><span class=\"token punctuation\">}</span>\n <span class=\"token selector\">ul</span><span class=\"token punctuation\">{</span><span class=\"token property\">list-style</span><span class=\"token punctuation\">:</span> none<span class=\"token punctuation\">;</span><span class=\"token punctuation\">}</span>\n <span class=\"token selector\">img</span><span class=\"token punctuation\">{</span><span class=\"token property\">border</span><span class=\"token punctuation\">:</span>none<span class=\"token punctuation\">;</span><span class=\"token property\">vertical-align</span><span class=\"token punctuation\">:</span> middle<span class=\"token punctuation\">;</span><span class=\"token punctuation\">}</span>\n </span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>style</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>head</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>body</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>h1</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text-xxl<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>Hello world!<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>h1</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>p</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text-green<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>Plain text<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>p</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>body</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>html</span><span class=\"token punctuation\">></span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"图片-Images\"><a href=\"#图片-Images\" class=\"headerlink\" title=\"图片 Images\"></a>图片 Images</h1><p>Image:</p>\n<p><img src=\"https://pandao.github.io/editor.md/examples/images/4.jpg\"></p>\n<blockquote>\n<p>Follow your heart.</p>\n</blockquote>\n<p><img src=\"https://pandao.github.io/editor.md/examples/images/8.jpg\"></p>\n<blockquote>\n<p>图为:厦门白城沙滩</p>\n</blockquote>\n<p>图片加链接 (Image + Link):</p>\n<p><a href=\"https://pandao.github.io/editor.md/images/7.jpg\" title=\"李健首张专辑《似水流年》封面\"><img src=\"https://pandao.github.io/editor.md/examples/images/7.jpg\"></a></p>\n<blockquote>\n<p>图为:李健首张专辑《似水流年》封面</p>\n</blockquote>\n<hr>\n<h1 id=\"列表-Lists\"><a href=\"#列表-Lists\" class=\"headerlink\" title=\"列表 Lists\"></a>列表 Lists</h1><h2 id=\"无序列表(减号)Unordered-Lists\"><a href=\"#无序列表(减号)Unordered-Lists\" class=\"headerlink\" title=\"无序列表(减号)Unordered Lists (-)\"></a>无序列表(减号)Unordered Lists (-)</h2><ul>\n<li>列表一</li>\n<li>列表二</li>\n<li>列表三</li>\n</ul>\n<h2 id=\"无序列表(星号)Unordered-Lists\"><a href=\"#无序列表(星号)Unordered-Lists\" class=\"headerlink\" title=\"无序列表(星号)Unordered Lists (*)\"></a>无序列表(星号)Unordered Lists (*)</h2><ul>\n<li>列表一</li>\n<li>列表二</li>\n<li>列表三</li>\n</ul>\n<h2 id=\"无序列表(加号和嵌套)Unordered-Lists\"><a href=\"#无序列表(加号和嵌套)Unordered-Lists\" class=\"headerlink\" title=\"无序列表(加号和嵌套)Unordered Lists (+)\"></a>无序列表(加号和嵌套)Unordered Lists (+)</h2><ul>\n<li>列表一</li>\n<li>列表二<ul>\n<li>列表二-1</li>\n<li>列表二-2</li>\n<li>列表二-3</li>\n</ul>\n</li>\n<li>列表三<ul>\n<li>列表一</li>\n<li>列表二</li>\n<li>列表三</li>\n</ul>\n</li>\n</ul>\n<h2 id=\"有序列表-Ordered-Lists\"><a href=\"#有序列表-Ordered-Lists\" class=\"headerlink\" title=\"有序列表 Ordered Lists (-)\"></a>有序列表 Ordered Lists (-)</h2><ol>\n<li>第一行</li>\n<li>第二行</li>\n<li>第三行</li>\n</ol>\n<h2 id=\"GFM-task-list\"><a href=\"#GFM-task-list\" class=\"headerlink\" title=\"GFM task list\"></a>GFM task list</h2><ul>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\"> GFM task list 1</li>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\"> GFM task list 2</li>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 3<ul>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 3-1</li>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 3-2</li>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 3-3</li>\n</ul>\n</li>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 4<ul>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 4-1</li>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 4-2</li>\n</ul>\n</li>\n</ul>\n<hr>\n<h1 id=\"绘制表格-Tables\"><a href=\"#绘制表格-Tables\" class=\"headerlink\" title=\"绘制表格 Tables\"></a>绘制表格 Tables</h1><table>\n<thead>\n<tr>\n<th>项目</th>\n<th align=\"right\">价格</th>\n<th align=\"center\">数量</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>计算机</td>\n<td align=\"right\">$1600</td>\n<td align=\"center\">5</td>\n</tr>\n<tr>\n<td>手机</td>\n<td align=\"right\">$12</td>\n<td align=\"center\">12</td>\n</tr>\n<tr>\n<td>管线</td>\n<td align=\"right\">$1</td>\n<td align=\"center\">234</td>\n</tr>\n</tbody></table>\n<table>\n<thead>\n<tr>\n<th>First Header</th>\n<th>Second Header</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Content Cell</td>\n<td>Content Cell</td>\n</tr>\n<tr>\n<td>Content Cell</td>\n<td>Content Cell</td>\n</tr>\n</tbody></table>\n<table>\n<thead>\n<tr>\n<th>First Header</th>\n<th>Second Header</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Content Cell</td>\n<td>Content Cell</td>\n</tr>\n<tr>\n<td>Content Cell</td>\n<td>Content Cell</td>\n</tr>\n</tbody></table>\n<table>\n<thead>\n<tr>\n<th>Function name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>help()</code></td>\n<td>Display the help window.</td>\n</tr>\n<tr>\n<td><code>destroy()</code></td>\n<td><strong>Destroy your computer!</strong></td>\n</tr>\n</tbody></table>\n<table>\n<thead>\n<tr>\n<th align=\"left\">Left-Aligned</th>\n<th align=\"center\">Center Aligned</th>\n<th align=\"right\">Right Aligned</th>\n</tr>\n</thead>\n<tbody><tr>\n<td align=\"left\">col 3 is</td>\n<td align=\"center\">some wordy text</td>\n<td align=\"right\">$1600</td>\n</tr>\n<tr>\n<td align=\"left\">col 2 is</td>\n<td align=\"center\">centered</td>\n<td align=\"right\">$12</td>\n</tr>\n<tr>\n<td align=\"left\">zebra stripes</td>\n<td align=\"center\">are neat</td>\n<td align=\"right\">$1</td>\n</tr>\n</tbody></table>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th align=\"right\">Value</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Computer</td>\n<td align=\"right\">$1600</td>\n</tr>\n<tr>\n<td>Phone</td>\n<td align=\"right\">$12</td>\n</tr>\n<tr>\n<td>Pipe</td>\n<td align=\"right\">$1</td>\n</tr>\n</tbody></table>\n<h1 id=\"科学公式-TeX-KaTeX\"><a href=\"#科学公式-TeX-KaTeX\" class=\"headerlink\" title=\"科学公式 TeX(KaTeX)\"></a>科学公式 TeX(KaTeX)</h1><p>$$E=mc^2$$</p>\n<p>$$x > y$$</p>\n<p>$$(\\sqrt{3x-1}+(1+x)^2)$$</p>\n<p>$$\\sin(\\alpha)^{\\theta}=\\sum_{i=0}^{n}(x^i + \\cos(f))$$</p>\n<h1 id=\"绘制流程图-mermaid\"><a href=\"#绘制流程图-mermaid\" class=\"headerlink\" title=\"绘制流程图 mermaid\"></a>绘制流程图 mermaid</h1><div class=\"mermaid\">\n graph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n </div>\n\n<p>End</p>\n"},{"title":"verdaccio 搭建 npm私库","status":"done","_content":"\n# 使用 docker 搭建 verdaccio\n\n创建 & 配置`config.yaml`文件\n\n```yaml\n# Read about the best practices\n# https://verdaccio.org/docs/best\n\n# path to a directory with all packages\nstorage: /verdaccio/storage/data\n# path to a directory with plugins to include\nplugins: /verdaccio/plugins\n\n# 包体积上限,默认10mb\nmax_body_size: 1024mb\n\n\nweb:\n enable: true\n title: Mozzie-NPM\n # gravatar: false\n # login: true\n pkgManagers:\n - npm\n - yarn\n - pnpm\n html_cache: true\n showFooter: false\n\nauth:\n htpasswd:\n file: /verdaccio/storage/htpasswd\n # 关闭注册,手动添加用户,默认Bcrypt算法,随便找个网页生成个密码,使用账号:密码添加到 htpasswd 文件中,例如 test:$2a$10$0xPGVnpcdxcfmFxtWyWDx./TRtm/W/gSzib/jck3w.sF9x.Ur8t8W\n max_users: -1\n\n\ni18n:\n web: zh-CN\n\n# notify: # 配置 Webhook 推送到钉钉,记得修改 access_token 和 atMobiles\n# method: POST\n# headers: [{ \"Content-Type\": \"application/json\" }]\n# endpoint: https://oapi.dingtalk.com/robot/send?access_token=xxxx\n# content: '{\"msgtype\":\"text\", \"at\": {\"atMobiles\": [\"13000000000\"] }, \"text\":{\"content\":\"NPM 发布新包:\\n > 包名称:{{name}} \\n > 版本号:{{#each versions}}{{version}}{{/each}} \\n > 发布者:{{publisher.name}} \"}}'\n\nuplinks:\n npmjs:\n url: https://registry.npmjs.org/\n yarn:\n url: https://registry.yarnpkg.com/\n timeout: 10s\n taobao:\n url: https://registry.npmmirror.com/\n timeout: 10s\n\npackages:\n \"@*/*\":\n # 可访问权限,web界面看不见,不登陆,也无法 install 包\n access: $authenticated # $all\n # 发布权限, $authenticated 表示只有通过验证的人\n publish: $authenticated\n # 可取消发布权限\n unpublish: $authenticated\n # 包不存在时的代理\n proxy: npmjs yarn taobao\n \"**\":\n access: $authenticated # $all\n publish: $authenticated\n unpublish: $authenticated\n proxy: npmjs yarn taobao\n\nmiddlewares:\n audit:\n enabled: true\nlisten: 0.0.0.0:4873\nlog: { type: stdout, format: pretty, level: http }\n```\n\n创建容器,环境变量,`VERDACCIO_PUBLIC_URL`是静态资源的前缀地址,由于nginx挂了`ssl`,如果使用`http`可以不添加\n\n```bash\ndocker run \\\n-p 4873:4873 \\\n--restart=always \\\n--network mozzie.cn-net \\\n--network-alias verdaccio \\\n--env VERDACCIO_PORT=4873 \\\n--env VERDACCIO_PUBLIC_URL=https://npm.mozzie.cn \\\n--ip 172.21.0.196 \\\n--name verdaccio \\\n-v /www/wwwroot/nginx/html/verdaccio/storage:/verdaccio/storage \\\n-v /www/wwwroot/nginx/html/verdaccio/config:/verdaccio/conf \\\n-v /www/wwwroot/nginx/html/verdaccio/plugins:/verdaccio/plugins \\\n-d verdaccio/verdaccio\n```\n\n\n\n配置nginx的反向代理conf,注意所在的docker网络,使用`container_name`\n\n\n\n```conf\nserver {\n # listen 80;\n listen 443 ssl;\n server_name npm.mozzie.cn;\n ssl_certificate /etc/nginx/ssl/npm.mozzie.cn_bundle.pem;\n ssl_certificate_key /etc/nginx/ssl/npm.mozzie.cn.key;\n gzip on;\n\n location / {\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header Host $host;\n proxy_set_header X-NginX-Proxy true;\n proxy_pass http://verdaccio:4873/;\n proxy_redirect off;\n }\n}\n```\n\n运行添加用户,报错,因为 `htpasswd`默认创建在宿主机,也就是上面挂载的`/www/wwwroot/nginx/html/verdaccio/storage`目录中\n\n```bash\nnpm adduser --registry https://npm.mozzie.cn/\n```\n\n配置`htpasswd`、`storage` 文件夹权限\n\n```bash\n# 宿主机中执行\ncd /www/wwwroot/nginx/html/verdaccio/storage\ntouch htpasswd\nsudo chown 10001:65533 htpasswd\nsudo chown -R 10001:65533 /www/wwwroot/nginx/html/verdaccio/storage\n```\n\n# verdaccio 用户管理\n\n由于在 `config.yml` 中关闭了可访问权限\n\n```yaml\nauth:\n htpasswd:\n file: /verdaccio/storage/htpasswd\n # 关闭注册,手动添加用户,默认Bcrypt算法,\n max_users: -1\n\npackages:\n \"@*/*\":\n # 可访问权限,web界面看不见,不登陆,也无法 install 包\n access: $authenticated # $all\n # 发布权限, $authenticated 表示只有通过验证的人\n publish: $authenticated\n # 可取消发布权限\n unpublish: $authenticated\n \"**\":\n access: $authenticated\n publish: $authenticated\n unpublish: $authenticated\n```\n\n默认的 `addUser` 策略是 `Bcrypt` 生成密码,随便找个网页生成个密码,使用`账号:密码`添加到 `htpasswd` 文件中,例如 \n\n```bash\ntest:$2a$10$0xPGVnpcdxcfmFxtWyWDx./TRtm/W/gSzib/jck3w.sF9x.Ur8t8W\n```\n\n因此在实际开发中,管理员手动给用户创建好账号,然后根据用户的包管理工具,进行登录,例如以 `npm` 为例\n\n```bash\nnpm adduser --registry https://npm.mozzie.cn/\n# 输入 Username: mozzie | Password: xxx | Email: (this IS public) himozzie@foxmail.com\n# 提示登陆成功 Logged in as mozzie on https://npm.mozzie.cn/.\n```\n\n在系统的 `cat ~/.npmrc` 中会增加一行,就可以正常的进行以来的安装了\n\n```bash\n//npm.mozzie.cn/:_authToken=\"Do/wrh5QzsnYaNU4x3ZlVA==\"\n```\n\n# 项目 .npmrc Scope区分\n\n需要指定 `.npmrc` 来区别 `Scope` 的安装地址,例如一个包名为 `@mozzie/hook`,对应的私库为 `https://npm.mozzie.cn/`\n\n```bash\nregistry=http://registry.npm.taobao.org/\n@mozzie:registry=https://npm.mozzie.cn\n# npm拉包的校验\n//https://npm.mozzie.cn/:_authToken=xxxxxxxxxxxxx\n```","source":"_posts/front-end/verdaccio.md","raw":"---\ntitle: verdaccio 搭建 npm私库\ncategories:\n - Front-End\nstatus: done\n---\n\n# 使用 docker 搭建 verdaccio\n\n创建 & 配置`config.yaml`文件\n\n```yaml\n# Read about the best practices\n# https://verdaccio.org/docs/best\n\n# path to a directory with all packages\nstorage: /verdaccio/storage/data\n# path to a directory with plugins to include\nplugins: /verdaccio/plugins\n\n# 包体积上限,默认10mb\nmax_body_size: 1024mb\n\n\nweb:\n enable: true\n title: Mozzie-NPM\n # gravatar: false\n # login: true\n pkgManagers:\n - npm\n - yarn\n - pnpm\n html_cache: true\n showFooter: false\n\nauth:\n htpasswd:\n file: /verdaccio/storage/htpasswd\n # 关闭注册,手动添加用户,默认Bcrypt算法,随便找个网页生成个密码,使用账号:密码添加到 htpasswd 文件中,例如 test:$2a$10$0xPGVnpcdxcfmFxtWyWDx./TRtm/W/gSzib/jck3w.sF9x.Ur8t8W\n max_users: -1\n\n\ni18n:\n web: zh-CN\n\n# notify: # 配置 Webhook 推送到钉钉,记得修改 access_token 和 atMobiles\n# method: POST\n# headers: [{ \"Content-Type\": \"application/json\" }]\n# endpoint: https://oapi.dingtalk.com/robot/send?access_token=xxxx\n# content: '{\"msgtype\":\"text\", \"at\": {\"atMobiles\": [\"13000000000\"] }, \"text\":{\"content\":\"NPM 发布新包:\\n > 包名称:{{name}} \\n > 版本号:{{#each versions}}{{version}}{{/each}} \\n > 发布者:{{publisher.name}} \"}}'\n\nuplinks:\n npmjs:\n url: https://registry.npmjs.org/\n yarn:\n url: https://registry.yarnpkg.com/\n timeout: 10s\n taobao:\n url: https://registry.npmmirror.com/\n timeout: 10s\n\npackages:\n \"@*/*\":\n # 可访问权限,web界面看不见,不登陆,也无法 install 包\n access: $authenticated # $all\n # 发布权限, $authenticated 表示只有通过验证的人\n publish: $authenticated\n # 可取消发布权限\n unpublish: $authenticated\n # 包不存在时的代理\n proxy: npmjs yarn taobao\n \"**\":\n access: $authenticated # $all\n publish: $authenticated\n unpublish: $authenticated\n proxy: npmjs yarn taobao\n\nmiddlewares:\n audit:\n enabled: true\nlisten: 0.0.0.0:4873\nlog: { type: stdout, format: pretty, level: http }\n```\n\n创建容器,环境变量,`VERDACCIO_PUBLIC_URL`是静态资源的前缀地址,由于nginx挂了`ssl`,如果使用`http`可以不添加\n\n```bash\ndocker run \\\n-p 4873:4873 \\\n--restart=always \\\n--network mozzie.cn-net \\\n--network-alias verdaccio \\\n--env VERDACCIO_PORT=4873 \\\n--env VERDACCIO_PUBLIC_URL=https://npm.mozzie.cn \\\n--ip 172.21.0.196 \\\n--name verdaccio \\\n-v /www/wwwroot/nginx/html/verdaccio/storage:/verdaccio/storage \\\n-v /www/wwwroot/nginx/html/verdaccio/config:/verdaccio/conf \\\n-v /www/wwwroot/nginx/html/verdaccio/plugins:/verdaccio/plugins \\\n-d verdaccio/verdaccio\n```\n\n\n\n配置nginx的反向代理conf,注意所在的docker网络,使用`container_name`\n\n\n\n```conf\nserver {\n # listen 80;\n listen 443 ssl;\n server_name npm.mozzie.cn;\n ssl_certificate /etc/nginx/ssl/npm.mozzie.cn_bundle.pem;\n ssl_certificate_key /etc/nginx/ssl/npm.mozzie.cn.key;\n gzip on;\n\n location / {\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header Host $host;\n proxy_set_header X-NginX-Proxy true;\n proxy_pass http://verdaccio:4873/;\n proxy_redirect off;\n }\n}\n```\n\n运行添加用户,报错,因为 `htpasswd`默认创建在宿主机,也就是上面挂载的`/www/wwwroot/nginx/html/verdaccio/storage`目录中\n\n```bash\nnpm adduser --registry https://npm.mozzie.cn/\n```\n\n配置`htpasswd`、`storage` 文件夹权限\n\n```bash\n# 宿主机中执行\ncd /www/wwwroot/nginx/html/verdaccio/storage\ntouch htpasswd\nsudo chown 10001:65533 htpasswd\nsudo chown -R 10001:65533 /www/wwwroot/nginx/html/verdaccio/storage\n```\n\n# verdaccio 用户管理\n\n由于在 `config.yml` 中关闭了可访问权限\n\n```yaml\nauth:\n htpasswd:\n file: /verdaccio/storage/htpasswd\n # 关闭注册,手动添加用户,默认Bcrypt算法,\n max_users: -1\n\npackages:\n \"@*/*\":\n # 可访问权限,web界面看不见,不登陆,也无法 install 包\n access: $authenticated # $all\n # 发布权限, $authenticated 表示只有通过验证的人\n publish: $authenticated\n # 可取消发布权限\n unpublish: $authenticated\n \"**\":\n access: $authenticated\n publish: $authenticated\n unpublish: $authenticated\n```\n\n默认的 `addUser` 策略是 `Bcrypt` 生成密码,随便找个网页生成个密码,使用`账号:密码`添加到 `htpasswd` 文件中,例如 \n\n```bash\ntest:$2a$10$0xPGVnpcdxcfmFxtWyWDx./TRtm/W/gSzib/jck3w.sF9x.Ur8t8W\n```\n\n因此在实际开发中,管理员手动给用户创建好账号,然后根据用户的包管理工具,进行登录,例如以 `npm` 为例\n\n```bash\nnpm adduser --registry https://npm.mozzie.cn/\n# 输入 Username: mozzie | Password: xxx | Email: (this IS public) himozzie@foxmail.com\n# 提示登陆成功 Logged in as mozzie on https://npm.mozzie.cn/.\n```\n\n在系统的 `cat ~/.npmrc` 中会增加一行,就可以正常的进行以来的安装了\n\n```bash\n//npm.mozzie.cn/:_authToken=\"Do/wrh5QzsnYaNU4x3ZlVA==\"\n```\n\n# 项目 .npmrc Scope区分\n\n需要指定 `.npmrc` 来区别 `Scope` 的安装地址,例如一个包名为 `@mozzie/hook`,对应的私库为 `https://npm.mozzie.cn/`\n\n```bash\nregistry=http://registry.npm.taobao.org/\n@mozzie:registry=https://npm.mozzie.cn\n# npm拉包的校验\n//https://npm.mozzie.cn/:_authToken=xxxxxxxxxxxxx\n```","slug":"front-end/verdaccio","published":1,"date":"2023-10-20T02:25:55.131Z","updated":"2023-10-20T02:27:35.158Z","comments":1,"layout":"post","photos":[],"link":"","_id":"clo3o301h000cewz3ed7ncpxq","content":"<h1 id=\"使用-docker-搭建-verdaccio\"><a href=\"#使用-docker-搭建-verdaccio\" class=\"headerlink\" title=\"使用 docker 搭建 verdaccio\"></a>使用 docker 搭建 verdaccio</h1><p>创建 & 配置<code>config.yaml</code>文件</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># Read about the best practices</span>\n<span class=\"token comment\"># https://verdaccio.org/docs/best</span>\n\n<span class=\"token comment\"># path to a directory with all packages</span>\n<span class=\"token key atrule\">storage</span><span class=\"token punctuation\">:</span> /verdaccio/storage/data\n<span class=\"token comment\"># path to a directory with plugins to include</span>\n<span class=\"token key atrule\">plugins</span><span class=\"token punctuation\">:</span> /verdaccio/plugins\n\n<span class=\"token comment\"># 包体积上限,默认10mb</span>\n<span class=\"token key atrule\">max_body_size</span><span class=\"token punctuation\">:</span> 1024mb\n\n\n<span class=\"token key atrule\">web</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Mozzie<span class=\"token punctuation\">-</span>NPM\n <span class=\"token comment\"># gravatar: false</span>\n <span class=\"token comment\"># login: true</span>\n <span class=\"token key atrule\">pkgManagers</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> npm\n <span class=\"token punctuation\">-</span> yarn\n <span class=\"token punctuation\">-</span> pnpm\n <span class=\"token key atrule\">html_cache</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">showFooter</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n\n<span class=\"token key atrule\">auth</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">htpasswd</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">file</span><span class=\"token punctuation\">:</span> /verdaccio/storage/htpasswd\n <span class=\"token comment\"># 关闭注册,手动添加用户,默认Bcrypt算法,随便找个网页生成个密码,使用账号:密码添加到 htpasswd 文件中,例如 test:$2a$10$0xPGVnpcdxcfmFxtWyWDx./TRtm/W/gSzib/jck3w.sF9x.Ur8t8W</span>\n <span class=\"token key atrule\">max_users</span><span class=\"token punctuation\">:</span> <span class=\"token number\">-1</span>\n\n\n<span class=\"token key atrule\">i18n</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">web</span><span class=\"token punctuation\">:</span> zh<span class=\"token punctuation\">-</span>CN\n\n<span class=\"token comment\"># notify: # 配置 Webhook 推送到钉钉,记得修改 access_token 和 atMobiles</span>\n<span class=\"token comment\"># method: POST</span>\n<span class=\"token comment\"># headers: [{ \"Content-Type\": \"application/json\" }]</span>\n<span class=\"token comment\"># endpoint: https://oapi.dingtalk.com/robot/send?access_token=xxxx</span>\n<span class=\"token comment\"># content: '{\"msgtype\":\"text\", \"at\": {\"atMobiles\": [\"13000000000\"] }, \"text\":{\"content\":\"NPM 发布新包:\\n > 包名称:{{name}} \\n > 版本号:{{#each versions}}{{version}}{{/each}} \\n > 发布者:{{publisher.name}} \"}}'</span>\n\n<span class=\"token key atrule\">uplinks</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">npmjs</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//registry.npmjs.org/\n <span class=\"token key atrule\">yarn</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//registry.yarnpkg.com/\n <span class=\"token key atrule\">timeout</span><span class=\"token punctuation\">:</span> 10s\n <span class=\"token key atrule\">taobao</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//registry.npmmirror.com/\n <span class=\"token key atrule\">timeout</span><span class=\"token punctuation\">:</span> 10s\n\n<span class=\"token key atrule\">packages</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">\"@*/*\"</span><span class=\"token punctuation\">:</span>\n <span class=\"token comment\"># 可访问权限,web界面看不见,不登陆,也无法 install 包</span>\n <span class=\"token key atrule\">access</span><span class=\"token punctuation\">:</span> $authenticated <span class=\"token comment\"># $all</span>\n <span class=\"token comment\"># 发布权限, $authenticated 表示只有通过验证的人</span>\n <span class=\"token key atrule\">publish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token comment\"># 可取消发布权限</span>\n <span class=\"token key atrule\">unpublish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token comment\"># 包不存在时的代理</span>\n <span class=\"token key atrule\">proxy</span><span class=\"token punctuation\">:</span> npmjs yarn taobao\n <span class=\"token key atrule\">\"**\"</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">access</span><span class=\"token punctuation\">:</span> $authenticated <span class=\"token comment\"># $all</span>\n <span class=\"token key atrule\">publish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token key atrule\">unpublish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token key atrule\">proxy</span><span class=\"token punctuation\">:</span> npmjs yarn taobao\n\n<span class=\"token key atrule\">middlewares</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">audit</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enabled</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n<span class=\"token key atrule\">listen</span><span class=\"token punctuation\">:</span> 0.0.0.0<span class=\"token punctuation\">:</span><span class=\"token number\">4873</span>\n<span class=\"token key atrule\">log</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span> <span class=\"token key atrule\">type</span><span class=\"token punctuation\">:</span> stdout<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">format</span><span class=\"token punctuation\">:</span> pretty<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">level</span><span class=\"token punctuation\">:</span> http <span class=\"token punctuation\">}</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>创建容器,环境变量,<code>VERDACCIO_PUBLIC_URL</code>是静态资源的前缀地址,由于nginx挂了<code>ssl</code>,如果使用<code>http</code>可以不添加</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token function\">docker</span> run <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">-p</span> <span class=\"token number\">4873</span>:4873 <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--restart</span><span class=\"token operator\">=</span>always <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--network</span> mozzie.cn-net <span class=\"token punctuation\">\\</span>\n--network-alias verdaccio <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--env</span> <span class=\"token assign-left variable\">VERDACCIO_PORT</span><span class=\"token operator\">=</span><span class=\"token number\">4873</span> <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--env</span> <span class=\"token assign-left variable\">VERDACCIO_PUBLIC_URL</span><span class=\"token operator\">=</span>https://npm.mozzie.cn <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--ip</span> <span class=\"token number\">172.21</span>.0.196 <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--name</span> verdaccio <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">-v</span> /www/wwwroot/nginx/html/verdaccio/storage:/verdaccio/storage <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">-v</span> /www/wwwroot/nginx/html/verdaccio/config:/verdaccio/conf <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">-v</span> /www/wwwroot/nginx/html/verdaccio/plugins:/verdaccio/plugins <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">-d</span> verdaccio/verdaccio<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n\n\n<p>配置nginx的反向代理conf,注意所在的docker网络,使用<code>container_name</code></p>\n<pre class=\"line-numbers language-conf\" data-language=\"conf\"><code class=\"language-conf\">server {\n # listen 80;\n listen 443 ssl;\n server_name npm.mozzie.cn;\n ssl_certificate /etc/nginx/ssl/npm.mozzie.cn_bundle.pem;\n ssl_certificate_key /etc/nginx/ssl/npm.mozzie.cn.key;\n gzip on;\n\n location / {\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header Host $host;\n proxy_set_header X-NginX-Proxy true;\n proxy_pass http://verdaccio:4873/;\n proxy_redirect off;\n }\n}<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>运行添加用户,报错,因为 <code>htpasswd</code>默认创建在宿主机,也就是上面挂载的<code>/www/wwwroot/nginx/html/verdaccio/storage</code>目录中</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token function\">npm</span> adduser <span class=\"token parameter variable\">--registry</span> https://npm.mozzie.cn/<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<p>配置<code>htpasswd</code>、<code>storage</code> 文件夹权限</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token comment\"># 宿主机中执行</span>\n<span class=\"token builtin class-name\">cd</span> /www/wwwroot/nginx/html/verdaccio/storage\n<span class=\"token function\">touch</span> htpasswd\n<span class=\"token function\">sudo</span> <span class=\"token function\">chown</span> <span class=\"token number\">10001</span>:65533 htpasswd\n<span class=\"token function\">sudo</span> <span class=\"token function\">chown</span> <span class=\"token parameter variable\">-R</span> <span class=\"token number\">10001</span>:65533 /www/wwwroot/nginx/html/verdaccio/storage<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"verdaccio-用户管理\"><a href=\"#verdaccio-用户管理\" class=\"headerlink\" title=\"verdaccio 用户管理\"></a>verdaccio 用户管理</h1><p>由于在 <code>config.yml</code> 中关闭了可访问权限</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">auth</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">htpasswd</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">file</span><span class=\"token punctuation\">:</span> /verdaccio/storage/htpasswd\n <span class=\"token comment\"># 关闭注册,手动添加用户,默认Bcrypt算法,</span>\n <span class=\"token key atrule\">max_users</span><span class=\"token punctuation\">:</span> <span class=\"token number\">-1</span>\n\n<span class=\"token key atrule\">packages</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">\"@*/*\"</span><span class=\"token punctuation\">:</span>\n <span class=\"token comment\"># 可访问权限,web界面看不见,不登陆,也无法 install 包</span>\n <span class=\"token key atrule\">access</span><span class=\"token punctuation\">:</span> $authenticated <span class=\"token comment\"># $all</span>\n <span class=\"token comment\"># 发布权限, $authenticated 表示只有通过验证的人</span>\n <span class=\"token key atrule\">publish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token comment\"># 可取消发布权限</span>\n <span class=\"token key atrule\">unpublish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token key atrule\">\"**\"</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">access</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token key atrule\">publish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token key atrule\">unpublish</span><span class=\"token punctuation\">:</span> $authenticated<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>默认的 <code>addUser</code> 策略是 <code>Bcrypt</code> 生成密码,随便找个网页生成个密码,使用<code>账号:密码</code>添加到 <code>htpasswd</code> 文件中,例如 </p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">test:<span class=\"token variable\">$2a</span><span class=\"token variable\">$10</span><span class=\"token variable\">$0xPGVnpcdxcfmFxtWyWDx</span>./TRtm/W/gSzib/jck3w.sF9x.Ur8t8W<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<p>因此在实际开发中,管理员手动给用户创建好账号,然后根据用户的包管理工具,进行登录,例如以 <code>npm</code> 为例</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token function\">npm</span> adduser <span class=\"token parameter variable\">--registry</span> https://npm.mozzie.cn/\n<span class=\"token comment\"># 输入 Username: mozzie | Password: xxx | Email: (this IS public) himozzie@foxmail.com</span>\n<span class=\"token comment\"># 提示登陆成功 Logged in as mozzie on https://npm.mozzie.cn/.</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span></span></code></pre>\n\n<p>在系统的 <code>cat ~/.npmrc</code> 中会增加一行,就可以正常的进行以来的安装了</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">//npm.mozzie.cn/:_authToken<span class=\"token operator\">=</span><span class=\"token string\">\"Do/wrh5QzsnYaNU4x3ZlVA==\"</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h1 id=\"项目-npmrc-Scope区分\"><a href=\"#项目-npmrc-Scope区分\" class=\"headerlink\" title=\"项目 .npmrc Scope区分\"></a>项目 .npmrc Scope区分</h1><p>需要指定 <code>.npmrc</code> 来区别 <code>Scope</code> 的安装地址,例如一个包名为 <code>@mozzie/hook</code>,对应的私库为 <code>https://npm.mozzie.cn/</code></p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token assign-left variable\">registry</span><span class=\"token operator\">=</span>http://registry.npm.taobao.org/\n@mozzie:registry<span class=\"token operator\">=</span>https://npm.mozzie.cn\n<span class=\"token comment\"># npm拉包的校验</span>\n//https://npm.mozzie.cn/:_authToken<span class=\"token operator\">=</span>xxxxxxxxxxxxx<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>","site":{"data":{}},"excerpt":"","more":"<h1 id=\"使用-docker-搭建-verdaccio\"><a href=\"#使用-docker-搭建-verdaccio\" class=\"headerlink\" title=\"使用 docker 搭建 verdaccio\"></a>使用 docker 搭建 verdaccio</h1><p>创建 & 配置<code>config.yaml</code>文件</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># Read about the best practices</span>\n<span class=\"token comment\"># https://verdaccio.org/docs/best</span>\n\n<span class=\"token comment\"># path to a directory with all packages</span>\n<span class=\"token key atrule\">storage</span><span class=\"token punctuation\">:</span> /verdaccio/storage/data\n<span class=\"token comment\"># path to a directory with plugins to include</span>\n<span class=\"token key atrule\">plugins</span><span class=\"token punctuation\">:</span> /verdaccio/plugins\n\n<span class=\"token comment\"># 包体积上限,默认10mb</span>\n<span class=\"token key atrule\">max_body_size</span><span class=\"token punctuation\">:</span> 1024mb\n\n\n<span class=\"token key atrule\">web</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Mozzie<span class=\"token punctuation\">-</span>NPM\n <span class=\"token comment\"># gravatar: false</span>\n <span class=\"token comment\"># login: true</span>\n <span class=\"token key atrule\">pkgManagers</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> npm\n <span class=\"token punctuation\">-</span> yarn\n <span class=\"token punctuation\">-</span> pnpm\n <span class=\"token key atrule\">html_cache</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">showFooter</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n\n<span class=\"token key atrule\">auth</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">htpasswd</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">file</span><span class=\"token punctuation\">:</span> /verdaccio/storage/htpasswd\n <span class=\"token comment\"># 关闭注册,手动添加用户,默认Bcrypt算法,随便找个网页生成个密码,使用账号:密码添加到 htpasswd 文件中,例如 test:$2a$10$0xPGVnpcdxcfmFxtWyWDx./TRtm/W/gSzib/jck3w.sF9x.Ur8t8W</span>\n <span class=\"token key atrule\">max_users</span><span class=\"token punctuation\">:</span> <span class=\"token number\">-1</span>\n\n\n<span class=\"token key atrule\">i18n</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">web</span><span class=\"token punctuation\">:</span> zh<span class=\"token punctuation\">-</span>CN\n\n<span class=\"token comment\"># notify: # 配置 Webhook 推送到钉钉,记得修改 access_token 和 atMobiles</span>\n<span class=\"token comment\"># method: POST</span>\n<span class=\"token comment\"># headers: [{ \"Content-Type\": \"application/json\" }]</span>\n<span class=\"token comment\"># endpoint: https://oapi.dingtalk.com/robot/send?access_token=xxxx</span>\n<span class=\"token comment\"># content: '{\"msgtype\":\"text\", \"at\": {\"atMobiles\": [\"13000000000\"] }, \"text\":{\"content\":\"NPM 发布新包:\\n > 包名称:{{name}} \\n > 版本号:{{#each versions}}{{version}}{{/each}} \\n > 发布者:{{publisher.name}} \"}}'</span>\n\n<span class=\"token key atrule\">uplinks</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">npmjs</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//registry.npmjs.org/\n <span class=\"token key atrule\">yarn</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//registry.yarnpkg.com/\n <span class=\"token key atrule\">timeout</span><span class=\"token punctuation\">:</span> 10s\n <span class=\"token key atrule\">taobao</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//registry.npmmirror.com/\n <span class=\"token key atrule\">timeout</span><span class=\"token punctuation\">:</span> 10s\n\n<span class=\"token key atrule\">packages</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">\"@*/*\"</span><span class=\"token punctuation\">:</span>\n <span class=\"token comment\"># 可访问权限,web界面看不见,不登陆,也无法 install 包</span>\n <span class=\"token key atrule\">access</span><span class=\"token punctuation\">:</span> $authenticated <span class=\"token comment\"># $all</span>\n <span class=\"token comment\"># 发布权限, $authenticated 表示只有通过验证的人</span>\n <span class=\"token key atrule\">publish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token comment\"># 可取消发布权限</span>\n <span class=\"token key atrule\">unpublish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token comment\"># 包不存在时的代理</span>\n <span class=\"token key atrule\">proxy</span><span class=\"token punctuation\">:</span> npmjs yarn taobao\n <span class=\"token key atrule\">\"**\"</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">access</span><span class=\"token punctuation\">:</span> $authenticated <span class=\"token comment\"># $all</span>\n <span class=\"token key atrule\">publish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token key atrule\">unpublish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token key atrule\">proxy</span><span class=\"token punctuation\">:</span> npmjs yarn taobao\n\n<span class=\"token key atrule\">middlewares</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">audit</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enabled</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n<span class=\"token key atrule\">listen</span><span class=\"token punctuation\">:</span> 0.0.0.0<span class=\"token punctuation\">:</span><span class=\"token number\">4873</span>\n<span class=\"token key atrule\">log</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span> <span class=\"token key atrule\">type</span><span class=\"token punctuation\">:</span> stdout<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">format</span><span class=\"token punctuation\">:</span> pretty<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">level</span><span class=\"token punctuation\">:</span> http <span class=\"token punctuation\">}</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>创建容器,环境变量,<code>VERDACCIO_PUBLIC_URL</code>是静态资源的前缀地址,由于nginx挂了<code>ssl</code>,如果使用<code>http</code>可以不添加</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token function\">docker</span> run <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">-p</span> <span class=\"token number\">4873</span>:4873 <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--restart</span><span class=\"token operator\">=</span>always <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--network</span> mozzie.cn-net <span class=\"token punctuation\">\\</span>\n--network-alias verdaccio <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--env</span> <span class=\"token assign-left variable\">VERDACCIO_PORT</span><span class=\"token operator\">=</span><span class=\"token number\">4873</span> <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--env</span> <span class=\"token assign-left variable\">VERDACCIO_PUBLIC_URL</span><span class=\"token operator\">=</span>https://npm.mozzie.cn <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--ip</span> <span class=\"token number\">172.21</span>.0.196 <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--name</span> verdaccio <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">-v</span> /www/wwwroot/nginx/html/verdaccio/storage:/verdaccio/storage <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">-v</span> /www/wwwroot/nginx/html/verdaccio/config:/verdaccio/conf <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">-v</span> /www/wwwroot/nginx/html/verdaccio/plugins:/verdaccio/plugins <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">-d</span> verdaccio/verdaccio<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n\n\n<p>配置nginx的反向代理conf,注意所在的docker网络,使用<code>container_name</code></p>\n<pre class=\"line-numbers language-conf\" data-language=\"conf\"><code class=\"language-conf\">server {\n # listen 80;\n listen 443 ssl;\n server_name npm.mozzie.cn;\n ssl_certificate /etc/nginx/ssl/npm.mozzie.cn_bundle.pem;\n ssl_certificate_key /etc/nginx/ssl/npm.mozzie.cn.key;\n gzip on;\n\n location / {\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header Host $host;\n proxy_set_header X-NginX-Proxy true;\n proxy_pass http://verdaccio:4873/;\n proxy_redirect off;\n }\n}<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>运行添加用户,报错,因为 <code>htpasswd</code>默认创建在宿主机,也就是上面挂载的<code>/www/wwwroot/nginx/html/verdaccio/storage</code>目录中</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token function\">npm</span> adduser <span class=\"token parameter variable\">--registry</span> https://npm.mozzie.cn/<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<p>配置<code>htpasswd</code>、<code>storage</code> 文件夹权限</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token comment\"># 宿主机中执行</span>\n<span class=\"token builtin class-name\">cd</span> /www/wwwroot/nginx/html/verdaccio/storage\n<span class=\"token function\">touch</span> htpasswd\n<span class=\"token function\">sudo</span> <span class=\"token function\">chown</span> <span class=\"token number\">10001</span>:65533 htpasswd\n<span class=\"token function\">sudo</span> <span class=\"token function\">chown</span> <span class=\"token parameter variable\">-R</span> <span class=\"token number\">10001</span>:65533 /www/wwwroot/nginx/html/verdaccio/storage<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"verdaccio-用户管理\"><a href=\"#verdaccio-用户管理\" class=\"headerlink\" title=\"verdaccio 用户管理\"></a>verdaccio 用户管理</h1><p>由于在 <code>config.yml</code> 中关闭了可访问权限</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">auth</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">htpasswd</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">file</span><span class=\"token punctuation\">:</span> /verdaccio/storage/htpasswd\n <span class=\"token comment\"># 关闭注册,手动添加用户,默认Bcrypt算法,</span>\n <span class=\"token key atrule\">max_users</span><span class=\"token punctuation\">:</span> <span class=\"token number\">-1</span>\n\n<span class=\"token key atrule\">packages</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">\"@*/*\"</span><span class=\"token punctuation\">:</span>\n <span class=\"token comment\"># 可访问权限,web界面看不见,不登陆,也无法 install 包</span>\n <span class=\"token key atrule\">access</span><span class=\"token punctuation\">:</span> $authenticated <span class=\"token comment\"># $all</span>\n <span class=\"token comment\"># 发布权限, $authenticated 表示只有通过验证的人</span>\n <span class=\"token key atrule\">publish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token comment\"># 可取消发布权限</span>\n <span class=\"token key atrule\">unpublish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token key atrule\">\"**\"</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">access</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token key atrule\">publish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token key atrule\">unpublish</span><span class=\"token punctuation\">:</span> $authenticated<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>默认的 <code>addUser</code> 策略是 <code>Bcrypt</code> 生成密码,随便找个网页生成个密码,使用<code>账号:密码</code>添加到 <code>htpasswd</code> 文件中,例如 </p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">test:<span class=\"token variable\">$2a</span><span class=\"token variable\">$10</span><span class=\"token variable\">$0xPGVnpcdxcfmFxtWyWDx</span>./TRtm/W/gSzib/jck3w.sF9x.Ur8t8W<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<p>因此在实际开发中,管理员手动给用户创建好账号,然后根据用户的包管理工具,进行登录,例如以 <code>npm</code> 为例</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token function\">npm</span> adduser <span class=\"token parameter variable\">--registry</span> https://npm.mozzie.cn/\n<span class=\"token comment\"># 输入 Username: mozzie | Password: xxx | Email: (this IS public) himozzie@foxmail.com</span>\n<span class=\"token comment\"># 提示登陆成功 Logged in as mozzie on https://npm.mozzie.cn/.</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span></span></code></pre>\n\n<p>在系统的 <code>cat ~/.npmrc</code> 中会增加一行,就可以正常的进行以来的安装了</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">//npm.mozzie.cn/:_authToken<span class=\"token operator\">=</span><span class=\"token string\">\"Do/wrh5QzsnYaNU4x3ZlVA==\"</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h1 id=\"项目-npmrc-Scope区分\"><a href=\"#项目-npmrc-Scope区分\" class=\"headerlink\" title=\"项目 .npmrc Scope区分\"></a>项目 .npmrc Scope区分</h1><p>需要指定 <code>.npmrc</code> 来区别 <code>Scope</code> 的安装地址,例如一个包名为 <code>@mozzie/hook</code>,对应的私库为 <code>https://npm.mozzie.cn/</code></p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token assign-left variable\">registry</span><span class=\"token operator\">=</span>http://registry.npm.taobao.org/\n@mozzie:registry<span class=\"token operator\">=</span>https://npm.mozzie.cn\n<span class=\"token comment\"># npm拉包的校验</span>\n//https://npm.mozzie.cn/:_authToken<span class=\"token operator\">=</span>xxxxxxxxxxxxx<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>"}],"PostAsset":[],"PostCategory":[{"post_id":"clo3o301a0000ewz3545x3sx7","category_id":"clo3o301e0002ewz3cbc54wpl","_id":"clo3o301g0006ewz33nzsbptk"},{"post_id":"clo3o301c0001ewz35dp2ea3j","category_id":"clo3o301f0005ewz3g3oi2zcx","_id":"clo3o301g0009ewz39ywa65tr"},{"post_id":"clo3o301e0003ewz3bovi2tjw","category_id":"clo3o301f0005ewz3g3oi2zcx","_id":"clo3o301g000aewz32uw039ck"},{"post_id":"clo3o301f0004ewz39ypv9p98","category_id":"clo3o301f0005ewz3g3oi2zcx","_id":"clo3o301h000bewz3740bat7f"},{"post_id":"clo3o301h000cewz3ed7ncpxq","category_id":"clo3o301i000dewz3dxzmaw36","_id":"clo3o301i000eewz33xisae2n"}],"PostTag":[],"Tag":[]}} |