1 line
211 KiB
JSON
1 line
211 KiB
JSON
{"meta":{"version":1,"warehouse":"4.0.2"},"models":{"Asset":[{"_id":"themes/hexo-theme-linear/source/css/0c63d269.css","path":"css/0c63d269.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/206.a3a4e130.css","path":"css/206.a3a4e130.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/21.88950121.css","path":"css/21.88950121.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/271.54fa1675.css","path":"css/271.54fa1675.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/291.a8323266.css","path":"css/291.a8323266.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/2cd7dba2.css","path":"css/2cd7dba2.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/2f1ea598.css","path":"css/2f1ea598.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/3a4a90d1.css","path":"css/3a4a90d1.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/3efc6cb5.css","path":"css/3efc6cb5.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/429.fb1dabcb.css","path":"css/429.fb1dabcb.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/4c3d0e88.css","path":"css/4c3d0e88.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/618.6513d67e.css","path":"css/618.6513d67e.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/766.64ad3c35.css","path":"css/766.64ad3c35.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/7c527814.css","path":"css/7c527814.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/922.9efa0b6b.css","path":"css/922.9efa0b6b.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/945.fdf98cb0.css","path":"css/945.fdf98cb0.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/aeb44e7a.css","path":"css/aeb44e7a.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/ccbcde32.css","path":"css/ccbcde32.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/de5de8fb.css","path":"css/de5de8fb.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/e01add4b.css","path":"css/e01add4b.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/efca006a.css","path":"css/efca006a.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/css/f3729dde.css","path":"css/f3729dde.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/font/linear.woff2","path":"font/linear.woff2","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/font/motto.woff","path":"font/motto.woff","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/favicon.svg","path":"img/favicon.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/icon-arrow-left.svg","path":"img/icon-arrow-left.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/icon-book.svg","path":"img/icon-book.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/icon-click.svg","path":"img/icon-click.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/icon-date.svg","path":"img/icon-date.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/icon-layout.svg","path":"img/icon-layout.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/icon-link.svg","path":"img/icon-link.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/icon-moon.svg","path":"img/icon-moon.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/icon-sun.svg","path":"img/icon-sun.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/icon1.svg","path":"img/icon1.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/icon2.svg","path":"img/icon2.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/logo.png","path":"img/logo.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/icon3.svg","path":"img/icon3.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/js/07f44e09.js","path":"js/07f44e09.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/js/07f44e09.js.LICENSE.txt","path":"js/07f44e09.js.LICENSE.txt","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/js/1247bc3e.js","path":"js/1247bc3e.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/js/206.759361ed.js","path":"js/206.759361ed.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/js/21.282c05e7.js","path":"js/21.282c05e7.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/js/271.ee88a6de.js","path":"js/271.ee88a6de.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/js/291.4ac6984b.js","path":"js/291.4ac6984b.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/js/3cf4fd98.js","path":"js/3cf4fd98.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/js/31d6cfe0.js","path":"js/31d6cfe0.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/js/429.bc4769cb.js","path":"js/429.bc4769cb.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/js/618.1a58fba9.js","path":"js/618.1a58fba9.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/js/430dbbd6.js","path":"js/430dbbd6.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/js/766.9503a62c.js","path":"js/766.9503a62c.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/js/85d1c72e.js","path":"js/85d1c72e.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/js/922.689e0633.js","path":"js/922.689e0633.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/js/945.0313a94c.js","path":"js/945.0313a94c.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/js/96ea39da.js","path":"js/96ea39da.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/js/ca6b30b5.js","path":"js/ca6b30b5.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/js/f8b20eb9.js","path":"js/f8b20eb9.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/100.png","path":"img/qweather-color-icon/100.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/101.png","path":"img/qweather-color-icon/101.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/102.png","path":"img/qweather-color-icon/102.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/103.png","path":"img/qweather-color-icon/103.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/150.png","path":"img/qweather-color-icon/150.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/104.png","path":"img/qweather-color-icon/104.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/151.png","path":"img/qweather-color-icon/151.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/152.png","path":"img/qweather-color-icon/152.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/300.png","path":"img/qweather-color-icon/300.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/153.png","path":"img/qweather-color-icon/153.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/301.png","path":"img/qweather-color-icon/301.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/302.png","path":"img/qweather-color-icon/302.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/303.png","path":"img/qweather-color-icon/303.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/304.png","path":"img/qweather-color-icon/304.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/305.png","path":"img/qweather-color-icon/305.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/306.png","path":"img/qweather-color-icon/306.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/307.png","path":"img/qweather-color-icon/307.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/308.png","path":"img/qweather-color-icon/308.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/309.png","path":"img/qweather-color-icon/309.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/310.png","path":"img/qweather-color-icon/310.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/311.png","path":"img/qweather-color-icon/311.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/312.png","path":"img/qweather-color-icon/312.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/313.png","path":"img/qweather-color-icon/313.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/314.png","path":"img/qweather-color-icon/314.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/315.png","path":"img/qweather-color-icon/315.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/316.png","path":"img/qweather-color-icon/316.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/318.png","path":"img/qweather-color-icon/318.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/317.png","path":"img/qweather-color-icon/317.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/350.png","path":"img/qweather-color-icon/350.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/351.png","path":"img/qweather-color-icon/351.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/400.png","path":"img/qweather-color-icon/400.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/399.png","path":"img/qweather-color-icon/399.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/401.png","path":"img/qweather-color-icon/401.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/402.png","path":"img/qweather-color-icon/402.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/403.png","path":"img/qweather-color-icon/403.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/404.png","path":"img/qweather-color-icon/404.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/406.png","path":"img/qweather-color-icon/406.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/407.png","path":"img/qweather-color-icon/407.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/408.png","path":"img/qweather-color-icon/408.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/409.png","path":"img/qweather-color-icon/409.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/410.png","path":"img/qweather-color-icon/410.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/456.png","path":"img/qweather-color-icon/456.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/457.png","path":"img/qweather-color-icon/457.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/499.png","path":"img/qweather-color-icon/499.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/500.png","path":"img/qweather-color-icon/500.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/501.png","path":"img/qweather-color-icon/501.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/503.png","path":"img/qweather-color-icon/503.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/502.png","path":"img/qweather-color-icon/502.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/504.png","path":"img/qweather-color-icon/504.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/507.png","path":"img/qweather-color-icon/507.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/508.png","path":"img/qweather-color-icon/508.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/509.png","path":"img/qweather-color-icon/509.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/510.png","path":"img/qweather-color-icon/510.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/511.png","path":"img/qweather-color-icon/511.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/512.png","path":"img/qweather-color-icon/512.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/513.png","path":"img/qweather-color-icon/513.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/514.png","path":"img/qweather-color-icon/514.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/515.png","path":"img/qweather-color-icon/515.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/900.png","path":"img/qweather-color-icon/900.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/901.png","path":"img/qweather-color-icon/901.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/999.png","path":"img/qweather-color-icon/999.png","modified":1,"renderable":1}],"Cache":[{"_id":"source/_posts/Linear Sample.md","hash":"1796682a5640e5e9ee3187a43de69ddff44b6c3d","modified":1697777266792},{"_id":"source/_posts/Linear 入门.md","hash":"b44e84e5f503af96bfddbc5bc9c784aa863933f6","modified":1697771937874},{"_id":"source/_posts/front-end/verdaccio.md","hash":"50453d3e60c7e63e31bc9f3efcebc241d317fae0","modified":1697768855158},{"_id":"source/_posts/Linear-Starter-Guide.md","hash":"24cb2d030cff00472eaeae941ed359c57162b3c8","modified":1697771754296},{"_id":"themes/hexo-theme-linear/source/js/31d6cfe0.js","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1697766724527},{"_id":"themes/hexo-theme-linear/layout/archive.ejs","hash":"d63bc4ebac416b4f5b80fb673ec0a3f092a4e255","modified":1697766724483},{"_id":"themes/hexo-theme-linear/layout/breadcrumb.ejs","hash":"81c91ad7b618a760b901741ff0d87333acddf60c","modified":1697766724483},{"_id":"themes/hexo-theme-linear/layout/airplane.ejs","hash":"28521fce0f5dbd1fd62c612ae68b78ba254faef3","modified":1697766724483},{"_id":"themes/hexo-theme-linear/_config.yml","hash":"3b03792d72cfda4e250faba8dea790c7f7a63690","modified":1697768622100},{"_id":"themes/hexo-theme-linear/layout/category.ejs","hash":"679f6aa009bc1f681fe9c2305c79f96e87e119ea","modified":1697766724483},{"_id":"themes/hexo-theme-linear/layout/homebar.ejs","hash":"fdc00e93db6bfd508e3cd44aef084124a00b3424","modified":1697766724483},{"_id":"themes/hexo-theme-linear/layout/index.ejs","hash":"f9981d732327e420c7a727ee8cced34327d7fd31","modified":1697766724483},{"_id":"themes/hexo-theme-linear/layout/layout.ejs","hash":"0733d5f564941dd109bd2eb72acfad95cf3c4f89","modified":1697766724484},{"_id":"themes/hexo-theme-linear/layout/navigation.ejs","hash":"b92b8cf5698a1b7631a2d463da6891b8ddc078ed","modified":1697766724484},{"_id":"themes/hexo-theme-linear/layout/search.ejs","hash":"da088b901ea192cbd8c6fc451094bc93890ecc4d","modified":1697766724484},{"_id":"themes/hexo-theme-linear/layout/weather.ejs","hash":"04052e95f80ac11765b90019b149d7fb1bb68bab","modified":1697766724485},{"_id":"themes/hexo-theme-linear/layout/postCopyright.ejs","hash":"83a579d0e8d7cf341ac8acc9a733d5046e224e32","modified":1697766724484},{"_id":"themes/hexo-theme-linear/layout/post.ejs","hash":"891458ae52a93e8070513b2a35a49d0afdb4a962","modified":1697766724484},{"_id":"themes/hexo-theme-linear/layout/welcome.ejs","hash":"ce7419f61089411de4cea72165a4ce89c4d55fbd","modified":1697766724485},{"_id":"themes/hexo-theme-linear/languages/ar.yml","hash":"de613e0512e106e67c39c5534ccfea29eb15f557","modified":1697766724476},{"_id":"themes/hexo-theme-linear/languages/de.yml","hash":"20ccde52ba59700211177dbc6a0658489d3fabda","modified":1697766724476},{"_id":"themes/hexo-theme-linear/languages/en.yml","hash":"5d97a1ba5a02e24443b37bc000567fdf17340bd2","modified":1697766724476},{"_id":"themes/hexo-theme-linear/languages/fr.yml","hash":"125ed203d8ce117f61ab4e3e4ffca58cd7bb6c61","modified":1697766724477},{"_id":"themes/hexo-theme-linear/languages/es.yml","hash":"3e47b0f87a02d7f8ece63becb37fcfbb1ed32b16","modified":1697766724477},{"_id":"themes/hexo-theme-linear/languages/ja.yml","hash":"944eea06cacb1aeb58833eb273f32433d323768e","modified":1697766724477},{"_id":"themes/hexo-theme-linear/languages/ko.yml","hash":"4cd415dee4bcdbdefd1b7df6caea76ccc258c49a","modified":1697766724477},{"_id":"themes/hexo-theme-linear/scripts/generate_excerpt.js","hash":"a7cfe46e7e389b1654c81f3e9a8a934dd80d735a","modified":1697766724491},{"_id":"themes/hexo-theme-linear/languages/zh-CN.yml","hash":"cf4c13270d7ac15baea1e774064f27bd2d2f8f32","modified":1697766724478},{"_id":"themes/hexo-theme-linear/scripts/mermaid_tag.js","hash":"bc74c79cf41709da1993597acaebae96d6b3761d","modified":1697766724491},{"_id":"themes/hexo-theme-linear/scripts/postIcon.js","hash":"73362a6570b00613681425b59a30903be671cd91","modified":1697766724491},{"_id":"themes/hexo-theme-linear/languages/ru.yml","hash":"974811181b770e78e4571dfa87aed51fd3863043","modified":1697766724478},{"_id":"themes/hexo-theme-linear/languages/zh-TW.yml","hash":"ad746b7bd795e81ed8f34e7fe05faf7e1cd999d7","modified":1697766724478},{"_id":"themes/hexo-theme-linear/scripts/post_counter.js","hash":"62aaa594dafcffe5aa457628eaf183075cabe159","modified":1697766724491},{"_id":"themes/hexo-theme-linear/source/css/0c63d269.css","hash":"6b9b9796cf8ff9349b724f4b789f1347eaa0d476","modified":1697766724500},{"_id":"themes/hexo-theme-linear/scripts/sort_posts.js","hash":"5cedcd663fd7eb1b255360ea9eb6089fd55e959c","modified":1697766724491},{"_id":"themes/hexo-theme-linear/source/css/206.a3a4e130.css","hash":"f8c04ec30e94eb972ff315b8c1eef655b9e8a03e","modified":1697766724500},{"_id":"themes/hexo-theme-linear/source/css/271.54fa1675.css","hash":"845cb754fd4ea780279a16e01a345d55889866e2","modified":1697766724500},{"_id":"themes/hexo-theme-linear/source/css/21.88950121.css","hash":"44c9b83ffe9151e2e233c2f55b6e89b30ea7c7bb","modified":1697766724500},{"_id":"themes/hexo-theme-linear/source/css/2cd7dba2.css","hash":"dbc4f3071866019f0faae76620928ddf2f6700e6","modified":1697766724501},{"_id":"themes/hexo-theme-linear/source/css/291.a8323266.css","hash":"e18068692b42ef4b76adc55d5ddc9f2bb10203f4","modified":1697766724500},{"_id":"themes/hexo-theme-linear/source/css/2f1ea598.css","hash":"ac520cdae0399c2b818dcac34c5ff58fd204d10f","modified":1697766724501},{"_id":"themes/hexo-theme-linear/source/css/3efc6cb5.css","hash":"1f1958bfd921ac3eea83a1e14ed97e8e83b31fb6","modified":1697766724501},{"_id":"themes/hexo-theme-linear/source/css/429.fb1dabcb.css","hash":"1f2b77bab319123d193042b9990056abe9f2fd73","modified":1697766724501},{"_id":"themes/hexo-theme-linear/source/css/618.6513d67e.css","hash":"660188677fab2c0946ac4b8ed81611ad5472feb8","modified":1697766724502},{"_id":"themes/hexo-theme-linear/source/css/4c3d0e88.css","hash":"c4a5bf3a1f7adf21c04d9950b02a67f516bbac9f","modified":1697766724502},{"_id":"themes/hexo-theme-linear/source/css/766.64ad3c35.css","hash":"8434994030b9b9d0fa3a82df079c860f49543b82","modified":1697766724502},{"_id":"themes/hexo-theme-linear/source/css/7c527814.css","hash":"7061b6b9c6fe1da1956a664b3ee7862ef257c716","modified":1697766724502},{"_id":"themes/hexo-theme-linear/source/css/922.9efa0b6b.css","hash":"721bc1b89ae059267d9b4aa3cc37f5c1ff8f32c3","modified":1697766724503},{"_id":"themes/hexo-theme-linear/source/css/945.fdf98cb0.css","hash":"f227a8697bf14eb75ba63d14a0608db53c9a50a1","modified":1697766724503},{"_id":"themes/hexo-theme-linear/source/css/aeb44e7a.css","hash":"95b181f50e6adb98be13bb60983edb155a83f6d7","modified":1697766724503},{"_id":"themes/hexo-theme-linear/source/css/3a4a90d1.css","hash":"4ffc2c5e9f1afd4fa74d7d9b785e0697cd7fb770","modified":1697766724501},{"_id":"themes/hexo-theme-linear/source/css/de5de8fb.css","hash":"a05682caa4e0b8a106578468f795dad472ee75da","modified":1697766724504},{"_id":"themes/hexo-theme-linear/source/css/ccbcde32.css","hash":"3475deea0241c67fadc3de5149886e90af24f2e6","modified":1697766724503},{"_id":"themes/hexo-theme-linear/source/css/e01add4b.css","hash":"5fc672a8fb8b65d60c087cc908d5170eaac56e0c","modified":1697766724504},{"_id":"themes/hexo-theme-linear/source/css/efca006a.css","hash":"97972d1b7ca177983b39a67e772736f661637468","modified":1697766724504},{"_id":"themes/hexo-theme-linear/source/css/f3729dde.css","hash":"2a7faa0c3816e3b653fb4540fa63504a26b2051f","modified":1697766724504},{"_id":"themes/hexo-theme-linear/source/font/linear.woff2","hash":"57cac19ad34a50d5a4da5e471e08174c950ce5fb","modified":1697766724504},{"_id":"themes/hexo-theme-linear/source/img/favicon.svg","hash":"6e88f8a231bb0a7ae4cc4598f85b6d346a286095","modified":1697766724505},{"_id":"themes/hexo-theme-linear/source/font/motto.woff","hash":"755620f3bad3ebdf683c074043104d4c11f8d23e","modified":1697766724505},{"_id":"themes/hexo-theme-linear/source/img/icon-date.svg","hash":"b391e34adafed83ef52d836fd6f81618494c4c6b","modified":1697766724506},{"_id":"themes/hexo-theme-linear/source/img/icon-click.svg","hash":"b10df8b886a8b2d44293b26f42b440c9aedb66a7","modified":1697766724506},{"_id":"themes/hexo-theme-linear/source/img/icon-arrow-left.svg","hash":"a36362d2555e8b836fcec1f7eeeae4588a871bdd","modified":1697766724505},{"_id":"themes/hexo-theme-linear/source/img/icon-link.svg","hash":"436b5ee7ef2d28766e86ac1e65a567d1e786c1b3","modified":1697766724506},{"_id":"themes/hexo-theme-linear/source/img/icon-book.svg","hash":"d5e4064468dde477bf9a630c3fababec41316708","modified":1697766724505},{"_id":"themes/hexo-theme-linear/source/img/icon-moon.svg","hash":"032be7ed3d2320f22069e2efb2fb7f60592d6212","modified":1697766724507},{"_id":"themes/hexo-theme-linear/source/img/icon-layout.svg","hash":"108ef43073a5b92552dc00744a9f11db8e5ac0a2","modified":1697766724506},{"_id":"themes/hexo-theme-linear/source/img/icon1.svg","hash":"f15fbcecbaa00db99aeaca9807922514f6452d02","modified":1697766724507},{"_id":"themes/hexo-theme-linear/source/img/icon-sun.svg","hash":"57a0ce52ecce7188eaac5e06eab54609a8e572c8","modified":1697766724507},{"_id":"themes/hexo-theme-linear/source/img/icon3.svg","hash":"a1a9dcee7703ec48f2d92b0d533b62fef16097fc","modified":1697766724508},{"_id":"themes/hexo-theme-linear/source/img/icon2.svg","hash":"cc598540651110d977afd26dc0a1f01bbc95bf21","modified":1697766724507},{"_id":"themes/hexo-theme-linear/source/js/07f44e09.js.LICENSE.txt","hash":"35ad54c8f1627db94ca60022d50f416d495b72c6","modified":1697766724526},{"_id":"themes/hexo-theme-linear/source/js/1247bc3e.js","hash":"1d0335fdedecd72daa5eb2288a8891ab2e83e55d","modified":1697766724526},{"_id":"themes/hexo-theme-linear/source/js/07f44e09.js","hash":"e8a21a4252ad34adc1a54066eab32a26a7313940","modified":1697766724526},{"_id":"themes/hexo-theme-linear/source/js/206.759361ed.js","hash":"129b5fd004afbbe4ab06cf6e944097b42c98655b","modified":1697766724526},{"_id":"themes/hexo-theme-linear/source/js/21.282c05e7.js","hash":"78359415e9f39c9c2119551ac2a97ba9f15af294","modified":1697766724527},{"_id":"themes/hexo-theme-linear/source/js/271.ee88a6de.js","hash":"2d93e1c6f51c16e6cc0c41740dc1de5a0c362926","modified":1697766724527},{"_id":"themes/hexo-theme-linear/source/js/291.4ac6984b.js","hash":"b5bb3c24cbcb7d09604c8c66c9d4470e6a2fd449","modified":1697766724527},{"_id":"themes/hexo-theme-linear/source/js/3cf4fd98.js","hash":"0d51155f6dc08d1d8c693d210c1407b2e26b5685","modified":1697766724527},{"_id":"themes/hexo-theme-linear/source/js/429.bc4769cb.js","hash":"926f0c003b8cfc0f4eb78ab6367aab9228d31abf","modified":1697766724528},{"_id":"themes/hexo-theme-linear/source/js/618.1a58fba9.js","hash":"afbe73ca7b78196e48dd9147a12db960d17589ff","modified":1697766724528},{"_id":"themes/hexo-theme-linear/source/js/430dbbd6.js","hash":"ff77ecc0d3b8bee105dabbaccefdb83b07a09e47","modified":1697766724528},{"_id":"themes/hexo-theme-linear/source/js/766.9503a62c.js","hash":"9f2114b6ac69ab0a67b1c88c5f6c48ff244185f7","modified":1697766724528},{"_id":"themes/hexo-theme-linear/source/js/85d1c72e.js","hash":"8ec5c0c8f9dff40d1fc2d16de3baa51442e12be2","modified":1697766724528},{"_id":"themes/hexo-theme-linear/source/js/922.689e0633.js","hash":"1757f732da655e7dc36fe4a23d29b72a549e9423","modified":1697766724529},{"_id":"themes/hexo-theme-linear/source/js/945.0313a94c.js","hash":"ccc3bda115641d497837d4cf8e93f776f0e64c6d","modified":1697766724529},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/100.png","hash":"ad42001979a0dbb8807c128b871dc28161b8c191","modified":1697766724510},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/101.png","hash":"890888efd8db7a3f29427e476ce3433f4a564321","modified":1697766724510},{"_id":"themes/hexo-theme-linear/source/js/96ea39da.js","hash":"a6c6a3f3afb38e8326846eb8eac1bbadd48ac6d3","modified":1697766724529},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/102.png","hash":"74d7cfa4f23850a456c16d0e0956264e920f7a85","modified":1697766724511},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/103.png","hash":"656d81bd50728c7ba62572e838db7c355d522e51","modified":1697766724511},{"_id":"themes/hexo-theme-linear/source/js/ca6b30b5.js","hash":"481a8f20c3d4e565c1ea5dafe4218597d051a9fc","modified":1697766724529},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/150.png","hash":"572b4a6e56271b89208daa538f02416d50249347","modified":1697766724511},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/104.png","hash":"36add97ed90d57e691e6e15d3456898a42dccb16","modified":1697766724511},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/151.png","hash":"8041e428fc369be40f9e993f4f718ae99c7662fa","modified":1697766724511},{"_id":"themes/hexo-theme-linear/source/js/f8b20eb9.js","hash":"86cff2cb169c614dedd464b373d94322328cb185","modified":1697766724530},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/152.png","hash":"3ec0a1ac063ae068cc9d728eef88a9a6d7859153","modified":1697766724512},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/153.png","hash":"3eb50d325ec84e1248585d347471b1093a83909c","modified":1697766724512},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/300.png","hash":"bd67445ff764f3f1d4eeb81625372585bb537b07","modified":1697766724512},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/301.png","hash":"cc616d4c7ae6abbe0338f418fe35acce93c46164","modified":1697766724512},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/302.png","hash":"371fa4d79b6a93573fde068f179829ed97c8f4f8","modified":1697766724513},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/303.png","hash":"453442f93e62ac98884aae173530f26272d97ad6","modified":1697766724513},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/304.png","hash":"3669eb04ee87dca604f70f7404c0ecb303d17af4","modified":1697766724513},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/305.png","hash":"618e18bf06b5d12d64269b30d6f044fc356d24b0","modified":1697766724513},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/307.png","hash":"02a08e002d21a10e0854b1036556fb81b0308be3","modified":1697766724514},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/306.png","hash":"69b55e71e8da4e0fe223ff76b9a68f98e4134b3d","modified":1697766724514},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/308.png","hash":"ace460a40174aa90dde6c2ef71663f30cec24193","modified":1697766724514},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/309.png","hash":"c5140be49b8936e5d30380f14f7dce49a7be7cb5","modified":1697766724514},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/310.png","hash":"9315203066fa97a7d10f2a6fb0fd3ce5b7805126","modified":1697766724514},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/311.png","hash":"ab5c5059f354da2f9525b30ee81312fbfa4749bf","modified":1697766724515},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/313.png","hash":"afa70386816623e847c09f51032212d2520d1740","modified":1697766724515},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/314.png","hash":"110f9fe81f80b8f372b7472fbcfd9c0071b33151","modified":1697766724516},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/312.png","hash":"c672d7373fce89803b5e8d06420e158f11ea346f","modified":1697766724515},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/315.png","hash":"2100a23ee6d584227715164263c43875e8d8946c","modified":1697766724516},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/316.png","hash":"4de1ac0254507c5509fc4d04e208fd81d2af7b34","modified":1697766724516},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/317.png","hash":"7e60725abd3b91b9ba388ad9b9f642690c39ff9e","modified":1697766724516},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/318.png","hash":"7a042920165671cdbfef6c58596a80f9a1f6f016","modified":1697766724516},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/350.png","hash":"f29c1aa55c4afd3df17aef7885a35b0bd177d771","modified":1697766724517},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/351.png","hash":"3ab30470a65acb8fe879aa7adc9064284abd8407","modified":1697766724517},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/399.png","hash":"993ddcd386480d211ec9b2e56656d659bb6c453b","modified":1697766724517},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/401.png","hash":"279c8bc00b4e57db9b1095df64044ec80b37edb0","modified":1697766724518},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/402.png","hash":"033fc236885a2bf7007d97eb054b0c5885035be5","modified":1697766724518},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/403.png","hash":"dfad1a525c4467c3e95e281befdf813e145620df","modified":1697766724518},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/404.png","hash":"112e73e641d1a30712993b5dca681a5e033831ee","modified":1697766724518},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/406.png","hash":"b9cd0421518e0a76041285e5bf0c1666a93428a5","modified":1697766724518},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/410.png","hash":"9170b32d6b7f644ce49116f3e35d35558bae6536","modified":1697766724521},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/407.png","hash":"82223792a5e3e556148b4663f195ef22044c143a","modified":1697766724519},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/409.png","hash":"aed269911d0249a700b4f3890c424f00f4a27e1e","modified":1697766724521},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/408.png","hash":"02b34a66020c9f3e5173702d30e5a7b69139bade","modified":1697766724519},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/456.png","hash":"dd16b957cc544730afab8d2712821dd6c77f5167","modified":1697766724522},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/457.png","hash":"5dffe7e9139bfb697b046c427b9ef0ed6ffa95c7","modified":1697766724522},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/499.png","hash":"2b51631144a7c0f813b6425d4daa30c4d4e8bd38","modified":1697766724522},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/500.png","hash":"ddb4712d8f19bb8c197e600000dd2d51049f970d","modified":1697766724522},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/400.png","hash":"79444a48a0e416e4cac1eb319496f495091f4c86","modified":1697766724517},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/502.png","hash":"4146081a2635ff88fa14e38ed8d360d3b4fa74dd","modified":1697766724523},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/507.png","hash":"426d5a73a482ac5721e7da2141e4fe704f50b608","modified":1697766724523},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/503.png","hash":"9415147c4bcebadd7f3089339064b8120c8d4089","modified":1697766724523},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/501.png","hash":"ddb4712d8f19bb8c197e600000dd2d51049f970d","modified":1697766724522},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/508.png","hash":"ae98a3217df26021ec2f667f099d27575c912bf4","modified":1697766724523},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/509.png","hash":"3bc779bfbcab94a79c91b26288e2e7b67412d15e","modified":1697766724524},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/510.png","hash":"524131e401d0b150dab2733af336f4649b8ade74","modified":1697766724524},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/512.png","hash":"64e11f225c35caa6ef2612d613026c52cfd3557e","modified":1697766724524},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/511.png","hash":"e2efe07a29446ebecd313ccd8a2c7d57a670f203","modified":1697766724524},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/504.png","hash":"defba93520719f72b217583062ccc79abd5b445e","modified":1697766724523},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/513.png","hash":"ceff3dfd109a990c9595276ad6b56061bb662e5e","modified":1697766724524},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/515.png","hash":"fdf992021ff20e1ffe1b19f0b918aa35204f22e7","modified":1697766724525},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/514.png","hash":"fdf992021ff20e1ffe1b19f0b918aa35204f22e7","modified":1697766724525},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/901.png","hash":"f6b3f1cd64e9c325e9dc3ab42469baa5c5119c2d","modified":1697766724525},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/999.png","hash":"74e4fa5bdd815d988b55525d4e7f6d40bf1080d4","modified":1697766724525},{"_id":"themes/hexo-theme-linear/source/img/qweather-color-icon/900.png","hash":"6eacf8df641c6096feb746c7544a825d3c65bf47","modified":1697766724525},{"_id":"themes/hexo-theme-linear/source/img/logo.png","hash":"05730ab0dadd5036509f942834278eef683994dd","modified":1697766724508},{"_id":"public/2023/10/20/Linear-Starter-Guide/index.html","hash":"e506ac0ff606207328c2802978702224ab549808","modified":1697777276958},{"_id":"public/archives/index.html","hash":"7f53bb2e56e278f317f2a441d55d1bd3ca2fb2ce","modified":1697777276958},{"_id":"public/archives/2023/index.html","hash":"7f53bb2e56e278f317f2a441d55d1bd3ca2fb2ce","modified":1697777276958},{"_id":"public/archives/2023/10/index.html","hash":"7f53bb2e56e278f317f2a441d55d1bd3ca2fb2ce","modified":1697777276958},{"_id":"public/categories/Hexo/index.html","hash":"9ac4707d5f46ea44eac5a2f65159e910c7cd7735","modified":1697777276958},{"_id":"public/categories/Front-End/index.html","hash":"72d2501a9a7562d138e3c6d584a236b2eedc5b72","modified":1697777276958},{"_id":"public/index.html","hash":"c05a820d4e8cc95bda18746bc3568129307b6709","modified":1697777276958},{"_id":"public/2023/10/20/Linear Sample/index.html","hash":"c9b2d376b07d6fcbdf0283c5f6aae739dabe4db3","modified":1697777276958},{"_id":"public/2023/10/20/Linear 入门/index.html","hash":"ab06492dc27135314d1c07c2654593cd7b8eb8c9","modified":1697777276958},{"_id":"public/2023/10/20/front-end/verdaccio/index.html","hash":"0a0e2acdd361e35038c96166d3f331c90ac0437e","modified":1697777276958},{"_id":"public/img/favicon.svg","hash":"6e88f8a231bb0a7ae4cc4598f85b6d346a286095","modified":1697777276958},{"_id":"public/img/icon-book.svg","hash":"d5e4064468dde477bf9a630c3fababec41316708","modified":1697777276958},{"_id":"public/font/motto.woff","hash":"755620f3bad3ebdf683c074043104d4c11f8d23e","modified":1697777276958},{"_id":"public/font/linear.woff2","hash":"57cac19ad34a50d5a4da5e471e08174c950ce5fb","modified":1697777276958},{"_id":"public/img/icon-arrow-left.svg","hash":"a36362d2555e8b836fcec1f7eeeae4588a871bdd","modified":1697777276958},{"_id":"public/img/icon-click.svg","hash":"b10df8b886a8b2d44293b26f42b440c9aedb66a7","modified":1697777276958},{"_id":"public/img/icon-date.svg","hash":"b391e34adafed83ef52d836fd6f81618494c4c6b","modified":1697777276958},{"_id":"public/img/icon-layout.svg","hash":"108ef43073a5b92552dc00744a9f11db8e5ac0a2","modified":1697777276958},{"_id":"public/img/icon-link.svg","hash":"436b5ee7ef2d28766e86ac1e65a567d1e786c1b3","modified":1697777276958},{"_id":"public/img/icon-moon.svg","hash":"032be7ed3d2320f22069e2efb2fb7f60592d6212","modified":1697777276958},{"_id":"public/img/icon-sun.svg","hash":"57a0ce52ecce7188eaac5e06eab54609a8e572c8","modified":1697777276958},{"_id":"public/img/icon1.svg","hash":"f15fbcecbaa00db99aeaca9807922514f6452d02","modified":1697777276958},{"_id":"public/img/icon2.svg","hash":"cc598540651110d977afd26dc0a1f01bbc95bf21","modified":1697777276958},{"_id":"public/img/icon3.svg","hash":"a1a9dcee7703ec48f2d92b0d533b62fef16097fc","modified":1697777276958},{"_id":"public/js/07f44e09.js.LICENSE.txt","hash":"35ad54c8f1627db94ca60022d50f416d495b72c6","modified":1697777276958},{"_id":"public/img/qweather-color-icon/101.png","hash":"890888efd8db7a3f29427e476ce3433f4a564321","modified":1697777276958},{"_id":"public/img/qweather-color-icon/100.png","hash":"ad42001979a0dbb8807c128b871dc28161b8c191","modified":1697777276958},{"_id":"public/img/qweather-color-icon/103.png","hash":"656d81bd50728c7ba62572e838db7c355d522e51","modified":1697777276958},{"_id":"public/img/qweather-color-icon/102.png","hash":"74d7cfa4f23850a456c16d0e0956264e920f7a85","modified":1697777276958},{"_id":"public/img/qweather-color-icon/150.png","hash":"572b4a6e56271b89208daa538f02416d50249347","modified":1697777276958},{"_id":"public/img/qweather-color-icon/104.png","hash":"36add97ed90d57e691e6e15d3456898a42dccb16","modified":1697777276958},{"_id":"public/img/qweather-color-icon/151.png","hash":"8041e428fc369be40f9e993f4f718ae99c7662fa","modified":1697777276958},{"_id":"public/img/qweather-color-icon/152.png","hash":"3ec0a1ac063ae068cc9d728eef88a9a6d7859153","modified":1697777276958},{"_id":"public/img/qweather-color-icon/300.png","hash":"bd67445ff764f3f1d4eeb81625372585bb537b07","modified":1697777276958},{"_id":"public/img/qweather-color-icon/153.png","hash":"3eb50d325ec84e1248585d347471b1093a83909c","modified":1697777276958},{"_id":"public/img/qweather-color-icon/301.png","hash":"cc616d4c7ae6abbe0338f418fe35acce93c46164","modified":1697777276958},{"_id":"public/img/qweather-color-icon/302.png","hash":"371fa4d79b6a93573fde068f179829ed97c8f4f8","modified":1697777276958},{"_id":"public/img/qweather-color-icon/304.png","hash":"3669eb04ee87dca604f70f7404c0ecb303d17af4","modified":1697777276958},{"_id":"public/img/qweather-color-icon/303.png","hash":"453442f93e62ac98884aae173530f26272d97ad6","modified":1697777276958},{"_id":"public/img/qweather-color-icon/305.png","hash":"618e18bf06b5d12d64269b30d6f044fc356d24b0","modified":1697777276958},{"_id":"public/img/qweather-color-icon/306.png","hash":"69b55e71e8da4e0fe223ff76b9a68f98e4134b3d","modified":1697777276958},{"_id":"public/img/qweather-color-icon/308.png","hash":"ace460a40174aa90dde6c2ef71663f30cec24193","modified":1697777276958},{"_id":"public/img/qweather-color-icon/307.png","hash":"02a08e002d21a10e0854b1036556fb81b0308be3","modified":1697777276958},{"_id":"public/img/qweather-color-icon/309.png","hash":"c5140be49b8936e5d30380f14f7dce49a7be7cb5","modified":1697777276958},{"_id":"public/img/qweather-color-icon/313.png","hash":"afa70386816623e847c09f51032212d2520d1740","modified":1697777276958},{"_id":"public/img/qweather-color-icon/314.png","hash":"110f9fe81f80b8f372b7472fbcfd9c0071b33151","modified":1697777276958},{"_id":"public/img/qweather-color-icon/315.png","hash":"2100a23ee6d584227715164263c43875e8d8946c","modified":1697777276958},{"_id":"public/img/qweather-color-icon/318.png","hash":"7a042920165671cdbfef6c58596a80f9a1f6f016","modified":1697777276958},{"_id":"public/img/qweather-color-icon/317.png","hash":"7e60725abd3b91b9ba388ad9b9f642690c39ff9e","modified":1697777276958},{"_id":"public/img/qweather-color-icon/311.png","hash":"ab5c5059f354da2f9525b30ee81312fbfa4749bf","modified":1697777276958},{"_id":"public/img/qweather-color-icon/351.png","hash":"3ab30470a65acb8fe879aa7adc9064284abd8407","modified":1697777276958},{"_id":"public/img/qweather-color-icon/400.png","hash":"79444a48a0e416e4cac1eb319496f495091f4c86","modified":1697777276958},{"_id":"public/img/qweather-color-icon/310.png","hash":"9315203066fa97a7d10f2a6fb0fd3ce5b7805126","modified":1697777276958},{"_id":"public/img/qweather-color-icon/312.png","hash":"c672d7373fce89803b5e8d06420e158f11ea346f","modified":1697777276958},{"_id":"public/img/qweather-color-icon/350.png","hash":"f29c1aa55c4afd3df17aef7885a35b0bd177d771","modified":1697777276958},{"_id":"public/img/qweather-color-icon/402.png","hash":"033fc236885a2bf7007d97eb054b0c5885035be5","modified":1697777276958},{"_id":"public/img/qweather-color-icon/404.png","hash":"112e73e641d1a30712993b5dca681a5e033831ee","modified":1697777276958},{"_id":"public/img/qweather-color-icon/403.png","hash":"dfad1a525c4467c3e95e281befdf813e145620df","modified":1697777276958},{"_id":"public/img/qweather-color-icon/406.png","hash":"b9cd0421518e0a76041285e5bf0c1666a93428a5","modified":1697777276958},{"_id":"public/img/qweather-color-icon/407.png","hash":"82223792a5e3e556148b4663f195ef22044c143a","modified":1697777276958},{"_id":"public/img/qweather-color-icon/409.png","hash":"aed269911d0249a700b4f3890c424f00f4a27e1e","modified":1697777276958},{"_id":"public/img/qweather-color-icon/410.png","hash":"9170b32d6b7f644ce49116f3e35d35558bae6536","modified":1697777276958},{"_id":"public/img/qweather-color-icon/316.png","hash":"4de1ac0254507c5509fc4d04e208fd81d2af7b34","modified":1697777276958},{"_id":"public/img/qweather-color-icon/456.png","hash":"dd16b957cc544730afab8d2712821dd6c77f5167","modified":1697777276958},{"_id":"public/img/qweather-color-icon/457.png","hash":"5dffe7e9139bfb697b046c427b9ef0ed6ffa95c7","modified":1697777276958},{"_id":"public/img/qweather-color-icon/499.png","hash":"2b51631144a7c0f813b6425d4daa30c4d4e8bd38","modified":1697777276958},{"_id":"public/img/qweather-color-icon/408.png","hash":"02b34a66020c9f3e5173702d30e5a7b69139bade","modified":1697777276958},{"_id":"public/img/qweather-color-icon/399.png","hash":"993ddcd386480d211ec9b2e56656d659bb6c453b","modified":1697777276958},{"_id":"public/img/qweather-color-icon/503.png","hash":"9415147c4bcebadd7f3089339064b8120c8d4089","modified":1697777276958},{"_id":"public/img/qweather-color-icon/502.png","hash":"4146081a2635ff88fa14e38ed8d360d3b4fa74dd","modified":1697777276958},{"_id":"public/img/qweather-color-icon/401.png","hash":"279c8bc00b4e57db9b1095df64044ec80b37edb0","modified":1697777276958},{"_id":"public/img/qweather-color-icon/501.png","hash":"ddb4712d8f19bb8c197e600000dd2d51049f970d","modified":1697777276958},{"_id":"public/img/qweather-color-icon/504.png","hash":"defba93520719f72b217583062ccc79abd5b445e","modified":1697777276958},{"_id":"public/img/qweather-color-icon/500.png","hash":"ddb4712d8f19bb8c197e600000dd2d51049f970d","modified":1697777276958},{"_id":"public/img/qweather-color-icon/510.png","hash":"524131e401d0b150dab2733af336f4649b8ade74","modified":1697777276958},{"_id":"public/img/qweather-color-icon/511.png","hash":"e2efe07a29446ebecd313ccd8a2c7d57a670f203","modified":1697777276958},{"_id":"public/img/qweather-color-icon/512.png","hash":"64e11f225c35caa6ef2612d613026c52cfd3557e","modified":1697777276958},{"_id":"public/img/qweather-color-icon/509.png","hash":"3bc779bfbcab94a79c91b26288e2e7b67412d15e","modified":1697777276958},{"_id":"public/img/qweather-color-icon/513.png","hash":"ceff3dfd109a990c9595276ad6b56061bb662e5e","modified":1697777276958},{"_id":"public/img/qweather-color-icon/514.png","hash":"fdf992021ff20e1ffe1b19f0b918aa35204f22e7","modified":1697777276958},{"_id":"public/img/qweather-color-icon/515.png","hash":"fdf992021ff20e1ffe1b19f0b918aa35204f22e7","modified":1697777276958},{"_id":"public/img/qweather-color-icon/901.png","hash":"f6b3f1cd64e9c325e9dc3ab42469baa5c5119c2d","modified":1697777276958},{"_id":"public/img/qweather-color-icon/508.png","hash":"ae98a3217df26021ec2f667f099d27575c912bf4","modified":1697777276958},{"_id":"public/img/qweather-color-icon/507.png","hash":"426d5a73a482ac5721e7da2141e4fe704f50b608","modified":1697777276958},{"_id":"public/img/qweather-color-icon/999.png","hash":"74e4fa5bdd815d988b55525d4e7f6d40bf1080d4","modified":1697777276958},{"_id":"public/img/qweather-color-icon/900.png","hash":"6eacf8df641c6096feb746c7544a825d3c65bf47","modified":1697777276958},{"_id":"public/css/0c63d269.css","hash":"6b9b9796cf8ff9349b724f4b789f1347eaa0d476","modified":1697777276958},{"_id":"public/css/291.a8323266.css","hash":"e18068692b42ef4b76adc55d5ddc9f2bb10203f4","modified":1697777276958},{"_id":"public/css/2cd7dba2.css","hash":"dbc4f3071866019f0faae76620928ddf2f6700e6","modified":1697777276958},{"_id":"public/css/2f1ea598.css","hash":"ac520cdae0399c2b818dcac34c5ff58fd204d10f","modified":1697777276958},{"_id":"public/css/21.88950121.css","hash":"44c9b83ffe9151e2e233c2f55b6e89b30ea7c7bb","modified":1697777276958},{"_id":"public/css/3a4a90d1.css","hash":"4ffc2c5e9f1afd4fa74d7d9b785e0697cd7fb770","modified":1697777276958},{"_id":"public/css/206.a3a4e130.css","hash":"f8c04ec30e94eb972ff315b8c1eef655b9e8a03e","modified":1697777276958},{"_id":"public/css/3efc6cb5.css","hash":"1f1958bfd921ac3eea83a1e14ed97e8e83b31fb6","modified":1697777276958},{"_id":"public/css/429.fb1dabcb.css","hash":"1f2b77bab319123d193042b9990056abe9f2fd73","modified":1697777276958},{"_id":"public/css/618.6513d67e.css","hash":"660188677fab2c0946ac4b8ed81611ad5472feb8","modified":1697777276958},{"_id":"public/css/4c3d0e88.css","hash":"c4a5bf3a1f7adf21c04d9950b02a67f516bbac9f","modified":1697777276958},{"_id":"public/css/766.64ad3c35.css","hash":"8434994030b9b9d0fa3a82df079c860f49543b82","modified":1697777276958},{"_id":"public/css/7c527814.css","hash":"7061b6b9c6fe1da1956a664b3ee7862ef257c716","modified":1697777276958},{"_id":"public/css/945.fdf98cb0.css","hash":"f227a8697bf14eb75ba63d14a0608db53c9a50a1","modified":1697777276958},{"_id":"public/css/271.54fa1675.css","hash":"845cb754fd4ea780279a16e01a345d55889866e2","modified":1697777276958},{"_id":"public/css/de5de8fb.css","hash":"a05682caa4e0b8a106578468f795dad472ee75da","modified":1697777276958},{"_id":"public/css/922.9efa0b6b.css","hash":"721bc1b89ae059267d9b4aa3cc37f5c1ff8f32c3","modified":1697777276958},{"_id":"public/css/e01add4b.css","hash":"5fc672a8fb8b65d60c087cc908d5170eaac56e0c","modified":1697777276958},{"_id":"public/css/efca006a.css","hash":"97972d1b7ca177983b39a67e772736f661637468","modified":1697777276958},{"_id":"public/css/aeb44e7a.css","hash":"95b181f50e6adb98be13bb60983edb155a83f6d7","modified":1697777276958},{"_id":"public/js/1247bc3e.js","hash":"1d0335fdedecd72daa5eb2288a8891ab2e83e55d","modified":1697777276958},{"_id":"public/css/ccbcde32.css","hash":"3475deea0241c67fadc3de5149886e90af24f2e6","modified":1697777276958},{"_id":"public/js/271.ee88a6de.js","hash":"2d93e1c6f51c16e6cc0c41740dc1de5a0c362926","modified":1697777276958},{"_id":"public/js/206.759361ed.js","hash":"129b5fd004afbbe4ab06cf6e944097b42c98655b","modified":1697777276958},{"_id":"public/js/21.282c05e7.js","hash":"78359415e9f39c9c2119551ac2a97ba9f15af294","modified":1697777276958},{"_id":"public/css/f3729dde.css","hash":"2a7faa0c3816e3b653fb4540fa63504a26b2051f","modified":1697777276958},{"_id":"public/js/291.4ac6984b.js","hash":"b5bb3c24cbcb7d09604c8c66c9d4470e6a2fd449","modified":1697777276958},{"_id":"public/js/31d6cfe0.js","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1697777276958},{"_id":"public/js/3cf4fd98.js","hash":"0d51155f6dc08d1d8c693d210c1407b2e26b5685","modified":1697777276958},{"_id":"public/js/618.1a58fba9.js","hash":"afbe73ca7b78196e48dd9147a12db960d17589ff","modified":1697777276958},{"_id":"public/js/430dbbd6.js","hash":"ff77ecc0d3b8bee105dabbaccefdb83b07a09e47","modified":1697777276958},{"_id":"public/js/766.9503a62c.js","hash":"9f2114b6ac69ab0a67b1c88c5f6c48ff244185f7","modified":1697777276958},{"_id":"public/js/85d1c72e.js","hash":"8ec5c0c8f9dff40d1fc2d16de3baa51442e12be2","modified":1697777276958},{"_id":"public/js/429.bc4769cb.js","hash":"926f0c003b8cfc0f4eb78ab6367aab9228d31abf","modified":1697777276958},{"_id":"public/js/922.689e0633.js","hash":"1757f732da655e7dc36fe4a23d29b72a549e9423","modified":1697777276958},{"_id":"public/js/ca6b30b5.js","hash":"481a8f20c3d4e565c1ea5dafe4218597d051a9fc","modified":1697777276958},{"_id":"public/js/96ea39da.js","hash":"a6c6a3f3afb38e8326846eb8eac1bbadd48ac6d3","modified":1697777276958},{"_id":"public/js/f8b20eb9.js","hash":"86cff2cb169c614dedd464b373d94322328cb185","modified":1697777276958},{"_id":"public/js/945.0313a94c.js","hash":"ccc3bda115641d497837d4cf8e93f776f0e64c6d","modified":1697777276958},{"_id":"public/js/07f44e09.js","hash":"e8a21a4252ad34adc1a54066eab32a26a7313940","modified":1697777276958},{"_id":"public/img/logo.png","hash":"05730ab0dadd5036509f942834278eef683994dd","modified":1697777276958}],"Category":[{"name":"Hexo","_id":"clny4r73200023pz3fjh8g1ku"},{"name":"Front-End","_id":"clny4r73500083pz3heaq2v8n"}],"Data":[],"Page":[],"Post":[{"title":"Linear Sample Post","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# Editor.md\n\n\n<a href=\"https://oschina.net\">hhh</a>\n\n<img src=\"https://pandao.github.io/editor.md/images/logos/editormd-logo-180x180.png\">\n\n# 换行TEST\n\n1\n2\n3\n\na \nb\n\n---\n\nq\\\nd\n\n#HEAD TEST\n\n# Smart Test\n\n...\n\n---\n\n--\n\n\n![](https://pandao.github.io/editor.md/images/logos/editormd-logo-180x180.png)\n\n![](https://img.shields.io/github/stars/pandao/editor.md.svg) ![](https://img.shields.io/github/forks/pandao/editor.md.svg) ![](https://img.shields.io/github/tag/pandao/editor.md.svg) ![](https://img.shields.io/github/release/pandao/editor.md.svg) ![](https://img.shields.io/github/issues/pandao/editor.md.svg) ![](https://img.shields.io/bower/v/editor.md.svg)\n\n**目录 (Table of Contents)**\n\n[TOCM]\n\n[TOC]\n\n# Heading 1\n## Heading 2 \n### Heading 3\n#### Heading 4\n##### Heading 5\n###### Heading 6\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#### 标题(用底线的形式)Heading (underline)\n\nThis is an H1\n=============\n\nThis is an H2\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#### 缩进风格\n\n即缩进四个空格,也做为实现类似 `<pre>` 预格式化文本 ( Preformatted Text ) 的功能。\n\n <?php\n echo \"Hello world!\";\n ?>\n \n预格式化文本:\n\n | First Header | Second Header |\n | ------------ | ------------- |\n | Content Cell | Content Cell |\n | Content Cell | Content Cell |\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----\n\n#### 特殊符号 HTML Entities Codes\n\n© & ¨ ™ ¡ £\n& < > ¥ € ® ± ¶ § ¦ ¯ « · \n\nX² Y³ ¾ ¼ × ÷ »\n\n18ºC " '\n\n[========]\n\n### Emoji表情 :smiley:\n\n> Blockquotes :star:\n\n#### GFM task lists & Emoji & fontAwesome icon emoji & editormd logo emoji :editormd-logo-5x:\n\n- [x] :smiley: @mentions, :smiley: #refs, [links](), **formatting**, and <del>tags</del> supported :editormd-logo:;\n- [x] list syntax required (any unordered or ordered list supported) :editormd-logo-3x:;\n- [x] [ ] :smiley: this is a complete item :smiley:;\n- [ ] []this is an incomplete item [test link](#) :fa-star: @pandao; \n- [ ] [ ]this is an incomplete item :fa-star: :fa-gear:;\n - [ ] :smiley: this is an incomplete item [test link](#) :fa-star: :fa-gear:;\n - [ ] :smiley: this is :fa-star: :fa-gear: an incomplete item [test link](#);\n \n#### 反斜杠 Escape\n\n\\*literal asterisks\\*\n\n[========]\n \n### 科学公式 TeX(KaTeX)\n\n$$E=mc^2$$\n\n行内的公式$$E=mc^2$$行内的公式,行内的$$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### End","source":"_posts/Linear Sample.md","raw":"---\ntitle: Linear Sample Post\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# Editor.md\n\n\n<a href=\"https://oschina.net\">hhh</a>\n\n<img src=\"https://pandao.github.io/editor.md/images/logos/editormd-logo-180x180.png\">\n\n# 换行TEST\n\n1\n2\n3\n\na \nb\n\n---\n\nq\\\nd\n\n#HEAD TEST\n\n# Smart Test\n\n...\n\n---\n\n--\n\n\n![](https://pandao.github.io/editor.md/images/logos/editormd-logo-180x180.png)\n\n![](https://img.shields.io/github/stars/pandao/editor.md.svg) ![](https://img.shields.io/github/forks/pandao/editor.md.svg) ![](https://img.shields.io/github/tag/pandao/editor.md.svg) ![](https://img.shields.io/github/release/pandao/editor.md.svg) ![](https://img.shields.io/github/issues/pandao/editor.md.svg) ![](https://img.shields.io/bower/v/editor.md.svg)\n\n**目录 (Table of Contents)**\n\n[TOCM]\n\n[TOC]\n\n# Heading 1\n## Heading 2 \n### Heading 3\n#### Heading 4\n##### Heading 5\n###### Heading 6\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#### 标题(用底线的形式)Heading (underline)\n\nThis is an H1\n=============\n\nThis is an H2\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#### 缩进风格\n\n即缩进四个空格,也做为实现类似 `<pre>` 预格式化文本 ( Preformatted Text ) 的功能。\n\n <?php\n echo \"Hello world!\";\n ?>\n \n预格式化文本:\n\n | First Header | Second Header |\n | ------------ | ------------- |\n | Content Cell | Content Cell |\n | Content Cell | Content Cell |\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----\n\n#### 特殊符号 HTML Entities Codes\n\n© & ¨ ™ ¡ £\n& < > ¥ € ® ± ¶ § ¦ ¯ « · \n\nX² Y³ ¾ ¼ × ÷ »\n\n18ºC " '\n\n[========]\n\n### Emoji表情 :smiley:\n\n> Blockquotes :star:\n\n#### GFM task lists & Emoji & fontAwesome icon emoji & editormd logo emoji :editormd-logo-5x:\n\n- [x] :smiley: @mentions, :smiley: #refs, [links](), **formatting**, and <del>tags</del> supported :editormd-logo:;\n- [x] list syntax required (any unordered or ordered list supported) :editormd-logo-3x:;\n- [x] [ ] :smiley: this is a complete item :smiley:;\n- [ ] []this is an incomplete item [test link](#) :fa-star: @pandao; \n- [ ] [ ]this is an incomplete item :fa-star: :fa-gear:;\n - [ ] :smiley: this is an incomplete item [test link](#) :fa-star: :fa-gear:;\n - [ ] :smiley: this is :fa-star: :fa-gear: an incomplete item [test link](#);\n \n#### 反斜杠 Escape\n\n\\*literal asterisks\\*\n\n[========]\n \n### 科学公式 TeX(KaTeX)\n\n$$E=mc^2$$\n\n行内的公式$$E=mc^2$$行内的公式,行内的$$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### End","slug":"Linear Sample","published":1,"date":"2023-10-20T03:10:24.718Z","updated":"2023-10-20T04:47:46.792Z","comments":1,"layout":"post","photos":[],"link":"","_id":"clny4r72z00003pz3ctk41cwb","content":"<h1 id=\"Editor-md\"><a href=\"#Editor-md\" class=\"headerlink\" title=\"Editor.md\"></a>Editor.md</h1><p><a href=\"https://oschina.net\">hhh</a></p>\n<img src=\"https://pandao.github.io/editor.md/images/logos/editormd-logo-180x180.png\">\n\n<h1 id=\"换行TEST\"><a href=\"#换行TEST\" class=\"headerlink\" title=\"换行TEST\"></a>换行TEST</h1><p>1<br>2<br>3</p>\n<p>a<br>b</p>\n<hr>\n<p>q<br>d</p>\n<p>#HEAD TEST</p>\n<h1 id=\"Smart-Test\"><a href=\"#Smart-Test\" class=\"headerlink\" title=\"Smart Test\"></a>Smart Test</h1><p>…</p>\n<hr>\n<p>–</p>\n<p><img src=\"https://pandao.github.io/editor.md/images/logos/editormd-logo-180x180.png\"></p>\n<p><img src=\"https://img.shields.io/github/stars/pandao/editor.md.svg\"> <img src=\"https://img.shields.io/github/forks/pandao/editor.md.svg\"> <img src=\"https://img.shields.io/github/tag/pandao/editor.md.svg\"> <img src=\"https://img.shields.io/github/release/pandao/editor.md.svg\"> <img src=\"https://img.shields.io/github/issues/pandao/editor.md.svg\"> <img src=\"https://img.shields.io/bower/v/editor.md.svg\"></p>\n<p><strong>目录 (Table of Contents)</strong></p>\n<p>[TOCM]</p>\n<p>[TOC]</p>\n<h1 id=\"Heading-1\"><a href=\"#Heading-1\" class=\"headerlink\" title=\"Heading 1\"></a>Heading 1</h1><h2 id=\"Heading-2\"><a href=\"#Heading-2\" class=\"headerlink\" title=\"Heading 2\"></a>Heading 2</h2><h3 id=\"Heading-3\"><a href=\"#Heading-3\" class=\"headerlink\" title=\"Heading 3\"></a>Heading 3</h3><h4 id=\"Heading-4\"><a href=\"#Heading-4\" class=\"headerlink\" title=\"Heading 4\"></a>Heading 4</h4><h5 id=\"Heading-5\"><a href=\"#Heading-5\" class=\"headerlink\" title=\"Heading 5\"></a>Heading 5</h5><h6 id=\"Heading-6\"><a href=\"#Heading-6\" class=\"headerlink\" title=\"Heading 6\"></a>Heading 6</h6><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><h4 id=\"标题(用底线的形式)Heading-underline\"><a href=\"#标题(用底线的形式)Heading-underline\" class=\"headerlink\" title=\"标题(用底线的形式)Heading (underline)\"></a>标题(用底线的形式)Heading (underline)</h4><h1 id=\"This-is-an-H1\"><a href=\"#This-is-an-H1\" class=\"headerlink\" title=\"This is an H1\"></a>This is an H1</h1><h2 id=\"This-is-an-H2\"><a href=\"#This-is-an-H2\" class=\"headerlink\" title=\"This is an H2\"></a>This is an H2</h2><h3 id=\"字符效果和横线等\"><a href=\"#字符效果和横线等\" class=\"headerlink\" title=\"字符效果和横线等\"></a>字符效果和横线等</h3><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<h3 id=\"引用-Blockquotes\"><a href=\"#引用-Blockquotes\" class=\"headerlink\" title=\"引用 Blockquotes\"></a>引用 Blockquotes</h3><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<h3 id=\"锚点与链接-Links\"><a href=\"#锚点与链接-Links\" class=\"headerlink\" title=\"锚点与链接 Links\"></a>锚点与链接 Links</h3><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<h3 id=\"多语言代码高亮-Codes\"><a href=\"#多语言代码高亮-Codes\" class=\"headerlink\" title=\"多语言代码高亮 Codes\"></a>多语言代码高亮 Codes</h3><h4 id=\"行内代码-Inline-code\"><a href=\"#行内代码-Inline-code\" class=\"headerlink\" title=\"行内代码 Inline code\"></a>行内代码 Inline code</h4><p>执行命令:<code>npm install marked</code></p>\n<h4 id=\"缩进风格\"><a href=\"#缩进风格\" class=\"headerlink\" title=\"缩进风格\"></a>缩进风格</h4><p>即缩进四个空格,也做为实现类似 <code><pre></code> 预格式化文本 ( Preformatted Text ) 的功能。</p>\n<pre><code><?php\n echo "Hello world!";\n?>\n</code></pre>\n<p>预格式化文本:</p>\n<pre><code>| First Header | Second Header |\n| ------------ | ------------- |\n| Content Cell | Content Cell |\n| Content Cell | Content Cell |\n</code></pre>\n<h4 id=\"JS代码\"><a href=\"#JS代码\" class=\"headerlink\" title=\"JS代码\"></a>JS代码</h4><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<h4 id=\"HTML-代码-HTML-codes\"><a href=\"#HTML-代码-HTML-codes\" class=\"headerlink\" title=\"HTML 代码 HTML codes\"></a>HTML 代码 HTML codes</h4><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<h3 id=\"图片-Images\"><a href=\"#图片-Images\" class=\"headerlink\" title=\"图片 Images\"></a>图片 Images</h3><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<h3 id=\"列表-Lists\"><a href=\"#列表-Lists\" class=\"headerlink\" title=\"列表 Lists\"></a>列表 Lists</h3><h4 id=\"无序列表(减号)Unordered-Lists\"><a href=\"#无序列表(减号)Unordered-Lists\" class=\"headerlink\" title=\"无序列表(减号)Unordered Lists (-)\"></a>无序列表(减号)Unordered Lists (-)</h4><ul>\n<li>列表一</li>\n<li>列表二</li>\n<li>列表三</li>\n</ul>\n<h4 id=\"无序列表(星号)Unordered-Lists\"><a href=\"#无序列表(星号)Unordered-Lists\" class=\"headerlink\" title=\"无序列表(星号)Unordered Lists (*)\"></a>无序列表(星号)Unordered Lists (*)</h4><ul>\n<li>列表一</li>\n<li>列表二</li>\n<li>列表三</li>\n</ul>\n<h4 id=\"无序列表(加号和嵌套)Unordered-Lists\"><a href=\"#无序列表(加号和嵌套)Unordered-Lists\" class=\"headerlink\" title=\"无序列表(加号和嵌套)Unordered Lists (+)\"></a>无序列表(加号和嵌套)Unordered Lists (+)</h4><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<h4 id=\"有序列表-Ordered-Lists\"><a href=\"#有序列表-Ordered-Lists\" class=\"headerlink\" title=\"有序列表 Ordered Lists (-)\"></a>有序列表 Ordered Lists (-)</h4><ol>\n<li>第一行</li>\n<li>第二行</li>\n<li>第三行</li>\n</ol>\n<h4 id=\"GFM-task-list\"><a href=\"#GFM-task-list\" class=\"headerlink\" title=\"GFM task list\"></a>GFM task list</h4><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<h3 id=\"绘制表格-Tables\"><a href=\"#绘制表格-Tables\" class=\"headerlink\" title=\"绘制表格 Tables\"></a>绘制表格 Tables</h3><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<hr>\n<h4 id=\"特殊符号-HTML-Entities-Codes\"><a href=\"#特殊符号-HTML-Entities-Codes\" class=\"headerlink\" title=\"特殊符号 HTML Entities Codes\"></a>特殊符号 HTML Entities Codes</h4><p>&copy; & &uml; &trade; &iexcl; &pound;<br>& < > &yen; &euro; &reg; &plusmn; &para; &sect; &brvbar; &macr; &laquo; &middot; </p>\n<p>X&sup2; Y&sup3; &frac34; &frac14; &times; &divide; &raquo;</p>\n<p>18&ordm;C " &apos;</p>\n<p>[========]</p>\n<h3 id=\"Emoji表情-smiley\"><a href=\"#Emoji表情-smiley\" class=\"headerlink\" title=\"Emoji表情 :smiley:\"></a>Emoji表情 :smiley:</h3><blockquote>\n<p>Blockquotes :star:</p>\n</blockquote>\n<h4 id=\"GFM-task-lists-amp-Emoji-amp-fontAwesome-icon-emoji-amp-editormd-logo-emoji-editormd-logo-5x\"><a href=\"#GFM-task-lists-amp-Emoji-amp-fontAwesome-icon-emoji-amp-editormd-logo-emoji-editormd-logo-5x\" class=\"headerlink\" title=\"GFM task lists & Emoji & fontAwesome icon emoji & editormd logo emoji :editormd-logo-5x:\"></a>GFM task lists & Emoji & fontAwesome icon emoji & editormd logo emoji :editormd-logo-5x:</h4><ul>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\"> :smiley: @mentions, :smiley: #refs, <a href=\"\">links</a>, <strong>formatting</strong>, and <del>tags</del> supported :editormd-logo:;</li>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\"> list syntax required (any unordered or ordered list supported) :editormd-logo-3x:;</li>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\"> [ ] :smiley: this is a complete item :smiley:;</li>\n<li><input disabled=\"\" type=\"checkbox\"> []this is an incomplete item <a href=\"#\">test link</a> :fa-star: @pandao; </li>\n<li><input disabled=\"\" type=\"checkbox\"> [ ]this is an incomplete item :fa-star: :fa-gear:;<ul>\n<li><input disabled=\"\" type=\"checkbox\"> :smiley: this is an incomplete item <a href=\"#\">test link</a> :fa-star: :fa-gear:;</li>\n<li><input disabled=\"\" type=\"checkbox\"> :smiley: this is :fa-star: :fa-gear: an incomplete item <a href=\"#\">test link</a>;</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"反斜杠-Escape\"><a href=\"#反斜杠-Escape\" class=\"headerlink\" title=\"反斜杠 Escape\"></a>反斜杠 Escape</h4><p>*literal asterisks*</p>\n<p>[========]</p>\n<h3 id=\"科学公式-TeX-KaTeX\"><a href=\"#科学公式-TeX-KaTeX\" class=\"headerlink\" title=\"科学公式 TeX(KaTeX)\"></a>科学公式 TeX(KaTeX)</h3><p>$$E=mc^2$$</p>\n<p>行内的公式$$E=mc^2$$行内的公式,行内的$$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<h3 id=\"绘制流程图-mermaid\"><a href=\"#绘制流程图-mermaid\" class=\"headerlink\" title=\"绘制流程图 mermaid\"></a>绘制流程图 mermaid</h3><div class=\"mermaid\">\n graph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n </div>\n<h3 id=\"End\"><a href=\"#End\" class=\"headerlink\" title=\"End\"></a>End</h3>","site":{"data":{}},"excerpt":"","more":"<h1 id=\"Editor-md\"><a href=\"#Editor-md\" class=\"headerlink\" title=\"Editor.md\"></a>Editor.md</h1><p><a href=\"https://oschina.net\">hhh</a></p>\n<img src=\"https://pandao.github.io/editor.md/images/logos/editormd-logo-180x180.png\">\n\n<h1 id=\"换行TEST\"><a href=\"#换行TEST\" class=\"headerlink\" title=\"换行TEST\"></a>换行TEST</h1><p>1<br>2<br>3</p>\n<p>a<br>b</p>\n<hr>\n<p>q<br>d</p>\n<p>#HEAD TEST</p>\n<h1 id=\"Smart-Test\"><a href=\"#Smart-Test\" class=\"headerlink\" title=\"Smart Test\"></a>Smart Test</h1><p>…</p>\n<hr>\n<p>–</p>\n<p><img src=\"https://pandao.github.io/editor.md/images/logos/editormd-logo-180x180.png\"></p>\n<p><img src=\"https://img.shields.io/github/stars/pandao/editor.md.svg\"> <img src=\"https://img.shields.io/github/forks/pandao/editor.md.svg\"> <img src=\"https://img.shields.io/github/tag/pandao/editor.md.svg\"> <img src=\"https://img.shields.io/github/release/pandao/editor.md.svg\"> <img src=\"https://img.shields.io/github/issues/pandao/editor.md.svg\"> <img src=\"https://img.shields.io/bower/v/editor.md.svg\"></p>\n<p><strong>目录 (Table of Contents)</strong></p>\n<p>[TOCM]</p>\n<p>[TOC]</p>\n<h1 id=\"Heading-1\"><a href=\"#Heading-1\" class=\"headerlink\" title=\"Heading 1\"></a>Heading 1</h1><h2 id=\"Heading-2\"><a href=\"#Heading-2\" class=\"headerlink\" title=\"Heading 2\"></a>Heading 2</h2><h3 id=\"Heading-3\"><a href=\"#Heading-3\" class=\"headerlink\" title=\"Heading 3\"></a>Heading 3</h3><h4 id=\"Heading-4\"><a href=\"#Heading-4\" class=\"headerlink\" title=\"Heading 4\"></a>Heading 4</h4><h5 id=\"Heading-5\"><a href=\"#Heading-5\" class=\"headerlink\" title=\"Heading 5\"></a>Heading 5</h5><h6 id=\"Heading-6\"><a href=\"#Heading-6\" class=\"headerlink\" title=\"Heading 6\"></a>Heading 6</h6><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><h4 id=\"标题(用底线的形式)Heading-underline\"><a href=\"#标题(用底线的形式)Heading-underline\" class=\"headerlink\" title=\"标题(用底线的形式)Heading (underline)\"></a>标题(用底线的形式)Heading (underline)</h4><h1 id=\"This-is-an-H1\"><a href=\"#This-is-an-H1\" class=\"headerlink\" title=\"This is an H1\"></a>This is an H1</h1><h2 id=\"This-is-an-H2\"><a href=\"#This-is-an-H2\" class=\"headerlink\" title=\"This is an H2\"></a>This is an H2</h2><h3 id=\"字符效果和横线等\"><a href=\"#字符效果和横线等\" class=\"headerlink\" title=\"字符效果和横线等\"></a>字符效果和横线等</h3><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<h3 id=\"引用-Blockquotes\"><a href=\"#引用-Blockquotes\" class=\"headerlink\" title=\"引用 Blockquotes\"></a>引用 Blockquotes</h3><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<h3 id=\"锚点与链接-Links\"><a href=\"#锚点与链接-Links\" class=\"headerlink\" title=\"锚点与链接 Links\"></a>锚点与链接 Links</h3><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<h3 id=\"多语言代码高亮-Codes\"><a href=\"#多语言代码高亮-Codes\" class=\"headerlink\" title=\"多语言代码高亮 Codes\"></a>多语言代码高亮 Codes</h3><h4 id=\"行内代码-Inline-code\"><a href=\"#行内代码-Inline-code\" class=\"headerlink\" title=\"行内代码 Inline code\"></a>行内代码 Inline code</h4><p>执行命令:<code>npm install marked</code></p>\n<h4 id=\"缩进风格\"><a href=\"#缩进风格\" class=\"headerlink\" title=\"缩进风格\"></a>缩进风格</h4><p>即缩进四个空格,也做为实现类似 <code><pre></code> 预格式化文本 ( Preformatted Text ) 的功能。</p>\n<pre><code><?php\n echo "Hello world!";\n?>\n</code></pre>\n<p>预格式化文本:</p>\n<pre><code>| First Header | Second Header |\n| ------------ | ------------- |\n| Content Cell | Content Cell |\n| Content Cell | Content Cell |\n</code></pre>\n<h4 id=\"JS代码\"><a href=\"#JS代码\" class=\"headerlink\" title=\"JS代码\"></a>JS代码</h4><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<h4 id=\"HTML-代码-HTML-codes\"><a href=\"#HTML-代码-HTML-codes\" class=\"headerlink\" title=\"HTML 代码 HTML codes\"></a>HTML 代码 HTML codes</h4><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<h3 id=\"图片-Images\"><a href=\"#图片-Images\" class=\"headerlink\" title=\"图片 Images\"></a>图片 Images</h3><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<h3 id=\"列表-Lists\"><a href=\"#列表-Lists\" class=\"headerlink\" title=\"列表 Lists\"></a>列表 Lists</h3><h4 id=\"无序列表(减号)Unordered-Lists\"><a href=\"#无序列表(减号)Unordered-Lists\" class=\"headerlink\" title=\"无序列表(减号)Unordered Lists (-)\"></a>无序列表(减号)Unordered Lists (-)</h4><ul>\n<li>列表一</li>\n<li>列表二</li>\n<li>列表三</li>\n</ul>\n<h4 id=\"无序列表(星号)Unordered-Lists\"><a href=\"#无序列表(星号)Unordered-Lists\" class=\"headerlink\" title=\"无序列表(星号)Unordered Lists (*)\"></a>无序列表(星号)Unordered Lists (*)</h4><ul>\n<li>列表一</li>\n<li>列表二</li>\n<li>列表三</li>\n</ul>\n<h4 id=\"无序列表(加号和嵌套)Unordered-Lists\"><a href=\"#无序列表(加号和嵌套)Unordered-Lists\" class=\"headerlink\" title=\"无序列表(加号和嵌套)Unordered Lists (+)\"></a>无序列表(加号和嵌套)Unordered Lists (+)</h4><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<h4 id=\"有序列表-Ordered-Lists\"><a href=\"#有序列表-Ordered-Lists\" class=\"headerlink\" title=\"有序列表 Ordered Lists (-)\"></a>有序列表 Ordered Lists (-)</h4><ol>\n<li>第一行</li>\n<li>第二行</li>\n<li>第三行</li>\n</ol>\n<h4 id=\"GFM-task-list\"><a href=\"#GFM-task-list\" class=\"headerlink\" title=\"GFM task list\"></a>GFM task list</h4><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<h3 id=\"绘制表格-Tables\"><a href=\"#绘制表格-Tables\" class=\"headerlink\" title=\"绘制表格 Tables\"></a>绘制表格 Tables</h3><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<hr>\n<h4 id=\"特殊符号-HTML-Entities-Codes\"><a href=\"#特殊符号-HTML-Entities-Codes\" class=\"headerlink\" title=\"特殊符号 HTML Entities Codes\"></a>特殊符号 HTML Entities Codes</h4><p>&copy; & &uml; &trade; &iexcl; &pound;<br>& < > &yen; &euro; &reg; &plusmn; &para; &sect; &brvbar; &macr; &laquo; &middot; </p>\n<p>X&sup2; Y&sup3; &frac34; &frac14; &times; &divide; &raquo;</p>\n<p>18&ordm;C " &apos;</p>\n<p>[========]</p>\n<h3 id=\"Emoji表情-smiley\"><a href=\"#Emoji表情-smiley\" class=\"headerlink\" title=\"Emoji表情 :smiley:\"></a>Emoji表情 :smiley:</h3><blockquote>\n<p>Blockquotes :star:</p>\n</blockquote>\n<h4 id=\"GFM-task-lists-amp-Emoji-amp-fontAwesome-icon-emoji-amp-editormd-logo-emoji-editormd-logo-5x\"><a href=\"#GFM-task-lists-amp-Emoji-amp-fontAwesome-icon-emoji-amp-editormd-logo-emoji-editormd-logo-5x\" class=\"headerlink\" title=\"GFM task lists & Emoji & fontAwesome icon emoji & editormd logo emoji :editormd-logo-5x:\"></a>GFM task lists & Emoji & fontAwesome icon emoji & editormd logo emoji :editormd-logo-5x:</h4><ul>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\"> :smiley: @mentions, :smiley: #refs, <a href=\"\">links</a>, <strong>formatting</strong>, and <del>tags</del> supported :editormd-logo:;</li>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\"> list syntax required (any unordered or ordered list supported) :editormd-logo-3x:;</li>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\"> [ ] :smiley: this is a complete item :smiley:;</li>\n<li><input disabled=\"\" type=\"checkbox\"> []this is an incomplete item <a href=\"#\">test link</a> :fa-star: @pandao; </li>\n<li><input disabled=\"\" type=\"checkbox\"> [ ]this is an incomplete item :fa-star: :fa-gear:;<ul>\n<li><input disabled=\"\" type=\"checkbox\"> :smiley: this is an incomplete item <a href=\"#\">test link</a> :fa-star: :fa-gear:;</li>\n<li><input disabled=\"\" type=\"checkbox\"> :smiley: this is :fa-star: :fa-gear: an incomplete item <a href=\"#\">test link</a>;</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"反斜杠-Escape\"><a href=\"#反斜杠-Escape\" class=\"headerlink\" title=\"反斜杠 Escape\"></a>反斜杠 Escape</h4><p>*literal asterisks*</p>\n<p>[========]</p>\n<h3 id=\"科学公式-TeX-KaTeX\"><a href=\"#科学公式-TeX-KaTeX\" class=\"headerlink\" title=\"科学公式 TeX(KaTeX)\"></a>科学公式 TeX(KaTeX)</h3><p>$$E=mc^2$$</p>\n<p>行内的公式$$E=mc^2$$行内的公式,行内的$$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<h3 id=\"绘制流程图-mermaid\"><a href=\"#绘制流程图-mermaid\" class=\"headerlink\" title=\"绘制流程图 mermaid\"></a>绘制流程图 mermaid</h3><div class=\"mermaid\">\n graph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n </div>\n<h3 id=\"End\"><a href=\"#End\" class=\"headerlink\" title=\"End\"></a>End</h3>"},{"title":"Linear 入门","top":2,"status":"doing","_content":"\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```yml\nlanguage: en\n```\n\n## 文章语法高亮\n\n```yml\n# 关闭hexo默认的highlight.js语法高亮\nhighlight:\n enable: false\n line_number: true\n auto_detect: false\n tab_replace: \"\"\n wrap: true\n hljs: false\nprismjs:\n enable: true\n preprocess: true\n line_number: true\n line_threshold: 0\n tab_replace: \"\"\n```\n\n## algolia搜索\n\n```yml\n# search service\nalgolia:\n # 替换\n appId: appId\n # 替换\n apiKey: apiKey\n # 请勿泄露,用于上报,替换\n adminApiKey: adminApiKey\n # 替换\n SearchOnlyAPIKey: SearchOnlyAPIKey\n chunkSize: 5000\n # 替换\n indexName: indexName\n fields:\n - content:strip\n - categories\n - date\n - permalink\n - slug\n - tags\n - title\n```\n\n# Linear主题配置\n\n下面的配置基于 `hexo-theme-linear` 下的 `_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## 天气卡片\n\n[和风天气API - 注册](https://id.qweather.com/#/register)\n\n\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## 网站图标 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```","source":"_posts/Linear 入门.md","raw":"---\ntitle: Linear 入门\ntop: 2\ncategories:\n - Hexo\nstatus: doing\n---\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```yml\nlanguage: en\n```\n\n## 文章语法高亮\n\n```yml\n# 关闭hexo默认的highlight.js语法高亮\nhighlight:\n enable: false\n line_number: true\n auto_detect: false\n tab_replace: \"\"\n wrap: true\n hljs: false\nprismjs:\n enable: true\n preprocess: true\n line_number: true\n line_threshold: 0\n tab_replace: \"\"\n```\n\n## algolia搜索\n\n```yml\n# search service\nalgolia:\n # 替换\n appId: appId\n # 替换\n apiKey: apiKey\n # 请勿泄露,用于上报,替换\n adminApiKey: adminApiKey\n # 替换\n SearchOnlyAPIKey: SearchOnlyAPIKey\n chunkSize: 5000\n # 替换\n indexName: indexName\n fields:\n - content:strip\n - categories\n - date\n - permalink\n - slug\n - tags\n - title\n```\n\n# Linear主题配置\n\n下面的配置基于 `hexo-theme-linear` 下的 `_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## 天气卡片\n\n[和风天气API - 注册](https://id.qweather.com/#/register)\n\n\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## 网站图标 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```","slug":"Linear 入门","published":1,"date":"2023-10-20T01:08:12.352Z","updated":"2023-10-20T03:18:57.874Z","comments":1,"layout":"post","photos":[],"link":"","_id":"clny4r73100013pz39ec72wb7","content":"<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><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><pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># 关闭hexo默认的highlight.js语法高亮</span>\n<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<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<h2 id=\"algolia搜索\"><a href=\"#algolia搜索\" class=\"headerlink\" title=\"algolia搜索\"></a>algolia搜索</h2><pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># search service</span>\n<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> appId\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">apiKey</span><span class=\"token punctuation\">:</span> apiKey\n <span class=\"token comment\"># 请勿泄露,用于上报,替换</span>\n <span class=\"token key atrule\">adminApiKey</span><span class=\"token punctuation\">:</span> adminApiKey\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">SearchOnlyAPIKey</span><span class=\"token punctuation\">:</span> SearchOnlyAPIKey\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> indexName\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></span></span></code></pre>\n\n<h1 id=\"Linear主题配置\"><a href=\"#Linear主题配置\" class=\"headerlink\" title=\"Linear主题配置\"></a>Linear主题配置</h1><p>下面的配置基于 <code>hexo-theme-linear</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=\"天气卡片\"><a href=\"#天气卡片\" class=\"headerlink\" title=\"天气卡片\"></a>天气卡片</h2><p><a href=\"https://id.qweather.com/#/register\">和风天气API - 注册</a></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<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>","site":{"data":{}},"excerpt":"","more":"<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><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><pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># 关闭hexo默认的highlight.js语法高亮</span>\n<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<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<h2 id=\"algolia搜索\"><a href=\"#algolia搜索\" class=\"headerlink\" title=\"algolia搜索\"></a>algolia搜索</h2><pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># search service</span>\n<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> appId\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">apiKey</span><span class=\"token punctuation\">:</span> apiKey\n <span class=\"token comment\"># 请勿泄露,用于上报,替换</span>\n <span class=\"token key atrule\">adminApiKey</span><span class=\"token punctuation\">:</span> adminApiKey\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">SearchOnlyAPIKey</span><span class=\"token punctuation\">:</span> SearchOnlyAPIKey\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> indexName\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></span></span></code></pre>\n\n<h1 id=\"Linear主题配置\"><a href=\"#Linear主题配置\" class=\"headerlink\" title=\"Linear主题配置\"></a>Linear主题配置</h1><p>下面的配置基于 <code>hexo-theme-linear</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=\"天气卡片\"><a href=\"#天气卡片\" class=\"headerlink\" title=\"天气卡片\"></a>天气卡片</h2><p><a href=\"https://id.qweather.com/#/register\">和风天气API - 注册</a></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<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>"},{"title":"Linear-Starter-Guide","top":1,"status":"doing","_content":"\n[🇨🇳 中文文档](https://mozzie.cn/2023/10/20/Linear%20%E5%85%A5%E9%97%A8/)\n\n# Configuration\n\ncontinued...😁\n","source":"_posts/Linear-Starter-Guide.md","raw":"---\ntitle: Linear-Starter-Guide\ntop: 1\ncategories:\n - Hexo\nstatus: doing\n---\n\n[🇨🇳 中文文档](https://mozzie.cn/2023/10/20/Linear%20%E5%85%A5%E9%97%A8/)\n\n# Configuration\n\ncontinued...😁\n","slug":"Linear-Starter-Guide","published":1,"date":"2023-10-20T01:05:56.355Z","updated":"2023-10-20T03:15:54.296Z","comments":1,"layout":"post","photos":[],"link":"","_id":"clny4r73300033pz38ipc2y38","content":"<p><a href=\"https://mozzie.cn/2023/10/20/Linear%20%E5%85%A5%E9%97%A8/\">🇨🇳 中文文档</a></p>\n<h1 id=\"Configuration\"><a href=\"#Configuration\" class=\"headerlink\" title=\"Configuration\"></a>Configuration</h1><p>continued…😁</p>\n","site":{"data":{}},"excerpt":"","more":"<p><a href=\"https://mozzie.cn/2023/10/20/Linear%20%E5%85%A5%E9%97%A8/\">🇨🇳 中文文档</a></p>\n<h1 id=\"Configuration\"><a href=\"#Configuration\" class=\"headerlink\" title=\"Configuration\"></a>Configuration</h1><p>continued…😁</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":"clny4r73400043pz3bsh63jb2","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":"clny4r72z00003pz3ctk41cwb","category_id":"clny4r73200023pz3fjh8g1ku","_id":"clny4r73500073pz36enk5m6o"},{"post_id":"clny4r73100013pz39ec72wb7","category_id":"clny4r73200023pz3fjh8g1ku","_id":"clny4r73500093pz3b1805gz6"},{"post_id":"clny4r73300033pz38ipc2y38","category_id":"clny4r73200023pz3fjh8g1ku","_id":"clny4r736000a3pz3g73canre"},{"post_id":"clny4r73400043pz3bsh63jb2","category_id":"clny4r73500083pz3heaq2v8n","_id":"clny4r736000b3pz35semgqfq"}],"PostTag":[],"Tag":[]}} |