fix(*): layout fixes & use peer deps & del cheerio

This commit is contained in:
ppoffice 2019-12-24 12:28:50 -05:00
parent 8435454bb3
commit f1e22741df
8 changed files with 37 additions and 55 deletions

View File

@ -33,21 +33,6 @@
"SwitchCase": 1
}
],
"node/no-extraneous-require": [
"error",
{
"allowModules": [
"inferno",
"inferno-create-element",
"hexo",
"hexo-util",
"hexo-log",
"hexo-pagination",
"cheerio",
"moment"
]
}
],
"react/no-unknown-property": [
"error",
{

View File

@ -1,5 +1,7 @@
const logger = require('hexo-log')();
const packageInfo = require('../../package.json');
// FIXME: will not check against package version
function checkDependency(name) {
try {
require.resolve(name);
@ -10,16 +12,12 @@ function checkDependency(name) {
return false;
}
logger.info('Checking dependencies');
const missingDeps = [
'js-yaml',
'moment',
'cheerio',
'hexo-util',
'hexo-log',
'hexo-pagination'
].map(checkDependency).some(installed => !installed);
logger.info('Checking if required dependencies are installed...');
const missingDeps = Object.keys(packageInfo.peerDependencies)
.map(checkDependency)
.some(installed => !installed);
if (missingDeps) {
logger.error('Please install the missing dependencies from the root directory of your Hexo site.');
throw new Error();
/* eslint no-process-exit: "off" */
process.exit(-1);
}

View File

@ -21,7 +21,7 @@ module.exports = class extends Component {
post.categories.forEach((category, i) => {
categories.push(<a class="has-link-grey" href={category.url}>{category.name}</a>);
if (i < post.categories.length - 1) {
categories.push('/');
categories.push(' / ');
}
});
return <article class="media">
@ -36,13 +36,7 @@ module.exports = class extends Component {
dateTime={date_xml(post.date)}>{date(post.date)}</time>
<a class="title has-link-black-ter is-size-6 has-text-weight-normal"
href={url_for(post.link || post.path)} >{post.title}</a>
<div class="level article-meta is-mobile">
<div class="level-left">
{categories.length ? <div class="level-item is-size-7 is-uppercase">
{categories}
</div> : null}
</div>
</div>
{categories.length ? <p class="is-size-7 is-uppercase">{categories}</p> : null}
</div>
</div>
</article>;

View File

@ -45,7 +45,7 @@ module.exports = class extends Component {
page.categories.forEach((category, i) => {
categories.push(<a class="has-link-grey" href={category.url}>{category.name}</a>);
if (i < page.categories.length - 1) {
categories.push('/');
categories.push(' / ');
}
});
return categories;
@ -62,7 +62,7 @@ module.exports = class extends Component {
{/* Visitor counter */}
{plugins && plugins.busuanzi === true ? <span class="level-item has-text-grey" id="busuanzi_container_page_pv"
dangerouslySetInnerHTML={{
__html: _p('plugin.visit', '<i class="far fa-eye"></i>&nbsp;&nbsp;<span id="busuanzi_value_page_pv">0</span>')
__html: '<i class="far fa-eye"></i>' + _p('plugin.visit', '&nbsp;&nbsp;<span id="busuanzi_value_page_pv">0</span>')
}}></span> : null}
</div>
</div> : null}
@ -73,12 +73,12 @@ module.exports = class extends Component {
{/* Content/Excerpt */}
<div class="content" dangerouslySetInnerHTML={{ __html: index && page.excerpt ? page.excerpt : page.content }}></div>
{/* Tags */}
{!index && Array.isArray(page.tags) && page.tags.length ? <div class="level is-size-7 is-uppercase">
{!index && page.tags && page.tags.length ? <div class="level is-size-7 is-uppercase">
<div class="level-start">
<div class="level-item">
<span class="is-size-6 has-text-grey has-mr-7">#</span>
{page.tags.map(tag => {
return <a class="has-link-grey" rel="tag" href={url_for(tag.path)}>{tag.name}</a>;
return <a class="has-link-grey has-mr-6" rel="tag" href={url_for(tag.path)}>{tag.name}</a>;
})}
</div>
</div>

View File

@ -13,7 +13,7 @@ class RecentPosts extends Component {
post.categories.forEach((category, i) => {
categories.push(<a class="has-link-grey" href={category.url}>{category.name}</a>);
if (i < post.categories.length - 1) {
categories.push('/');
categories.push(' / ');
}
});
return <article class="media">
@ -26,7 +26,7 @@ class RecentPosts extends Component {
<div class="content">
<div><time class="has-text-grey is-size-7 is-uppercase" dateTime={post.dateXml}>{post.date}</time></div>
<a href={post.url} class="title has-link-black-ter is-size-6 has-text-weight-normal">{post.title}</a>
<p class="is-size-7 is-uppercase">{categories}</p>
{categories.length ? <p class="is-size-7 is-uppercase">{categories}</p> : null}
</div>
</div>
</article>;

View File

@ -1,4 +1,4 @@
const cheerio = require('cheerio');
const { tocObj: getTocObj } = require('hexo-util');
const { Component } = require('inferno');
const { cacheComponent } = require('../util/cache');
@ -33,18 +33,13 @@ const { cacheComponent } = require('../util/cache');
* }
*/
function getToc(content) {
const $ = cheerio.load(content, { decodeEntities: false });
const toc = {};
const levels = [0, 0, 0];
// Get top 3 headings that are present in the content
const tags = [1, 2, 3, 4, 5, 6].map(i => 'h' + i).filter(h => $(h).length > 0).slice(0, 3);
if (tags.length === 0) {
return toc;
}
$(tags.join(',')).each(function() {
const level = tags.indexOf(this.name);
const id = $(this).attr('id');
const text = $(this).text();
const tocObj = getTocObj(content, { min_depth: 1, max_depth: 6 });
const minLevel = Math.min(...tocObj.map(item => item.level));
tocObj.forEach(item => {
const { text, id } = item;
const level = item.level - minLevel;
for (let i = 0; i < levels.length; i++) {
if (i > level) {

View File

@ -12,7 +12,7 @@
"scripts": {
"lint": "eslint --ext .js --ext .jsx .",
"test": "mocha test/index.js",
"postpublish" : "PACKAGE_VERSION=$(cat package.json | grep \\\"version\\\" | head -1 | awk -F: '{ print $2 }' | sed 's/[\",]//g' | tr -d '[[:space:]]') && git tag $PACKAGE_VERSION && git push --tags"
"postpublish": "PACKAGE_VERSION=$(cat package.json | grep \\\"version\\\" | head -1 | awk -F: '{ print $2 }' | sed 's/[\",]//g' | tr -d '[[:space:]]') && git tag $PACKAGE_VERSION && git push --tags"
},
"devDependencies": {
"chai": "^4.2.0",
@ -20,5 +20,15 @@
"eslint-config-hexo": "^4.1.0",
"eslint-plugin-react": "^7.17.0",
"mocha": "^6.2.2"
},
"peerDependencies": {
"hexo": "^4.0.0",
"hexo-util": "^1.8.0",
"hexo-log": "^1.0.0",
"hexo-pagination": "^1.0.0",
"hexo-renderer-inferno": "^0.1.1",
"inferno": "^7.3.3",
"inferno-create-element": "^7.3.3",
"moment": "^2.22.2"
}
}
}

View File

@ -1,7 +1,7 @@
/* global hexo*/
/* global hexo */
require('../include/task/welcome');
require('../include/task/check_deps');
require('../include/task/check_config');
require('../include/task/dependencies');
// require('../include/task/check_config');
require('../include/generator/categories')(hexo);
require('../include/generator/category')(hexo);
require('../include/generator/tags')(hexo);