##HEXO ###新建博客时,将中文标题转换为拼音 /node_modules/hexo/lib/plugins/console/new.js 修改部分如下
1 2 3 4 5 6 7 8 9 10 var tr = require ('transliteration' );var data = { title : args._ .pop (), layout : args._ .length ? args._ [0 ] : this .config .default_layout , slug : args.s || args.slug , path : args.p || args.path }; data.slug = tr.slugify (data.title );
###代码高亮添加源代码属性 node_modules/hexo/node_modules/hexo-util/lib/highlight.js [line: 35] 修改部分如下
1 result += '<figure class="highlight' + (data.language ? ' ' + data.language : '' ) + '" data-source-code="' + str.replace (/"/g , '"' ) + '">' ;
##http-server
###判断文件编码 http-server/node_modules/ecstatic/lib/ecstatic.js 修改function serve
1 2 3 4 5 6 if (contentType) { charSet = mime.charsets .lookup (contentType, 'utf-8' , file); if (charSet) { contentType += '; charset=' + charSet; } }
http-server/node_modules/ecstatic/node_modules/mime/mime.js 修改最后
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 var jschardet = require ("jschardet" );mime.charsets = { lookup : function (mimeType, fallback, file ) { if (!mimeType.match (/text\// )) { return fallback; } var bin = fs.readFileSync (file), charset = jschardet.detect (bin); if (charset.confidence <= 0.95 ) { return fallback; } return charset.encoding || fallback; } };
###修改MIMEhttp-server/node_modules/ecstatic/node_modules/mime/types.json
###http-server添加gzip支持 http-server/node_modules/ecstatic/lib/ecstatic.js 修改function serve
注释res.setHeader('content-length', stat.size);
最后添加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 if (req.query && req.query .callback ) { var data = fs.readFileSync (file, charSet), r = new stream.Readable (); r.push (req.query .callback ); r.push ('(' ); r.push (data); r.push (')' ); r.push (null ); if (shouldCompress (req)) { var acceptEncoding = req.headers ['accept-encoding' ].split ("," ); switch (acceptEncoding[0 ].trim ()) { case 'gzip' : res.setHeader ('content-encoding' , 'gzip' ); r = r.pipe (zlib.createGzip ()); break ; case 'deflate' : res.setHeader ('content-encoding' , 'deflate' ); r = r.pipe (zlib.createDeflate ()); break ; default : break ; } } return r.pipe (res); } var rs = fs.createReadStream (file);if (shouldCompress (req)) { var acceptEncoding = req.headers ['accept-encoding' ].split ("," ); switch (acceptEncoding[0 ].trim ()) { case 'gzip' : res.setHeader ('content-encoding' , 'gzip' ); rs = rs.pipe (zlib.createGzip ()); break ; case 'deflate' : res.setHeader ('content-encoding' , 'deflate' ); rs = rs.pipe (zlib.createDeflate ()); break ; default : res.setHeader ('content-length' , stat.size ); break ; } } else { res.setHeader ('content-length' , stat.size ); } rs.pipe (res);
###修改默认端口 node_modules/http-server/bin/http-server
1 portfinder.basePort = 80
###Etag乱码问题 /node_modules/ecstatic/lib/ecstatic/etag.js
1 return JSON.stringify([stat.ino, stat.size , stat.mtime.toJSON()].join ('-' ));