calebporzio / gitdown
一个用于解析 PHP 中 GitHub 风格 Markdown 的简单软件包
Requires
- kitetail/zttp: ^0.4.0
Requires (Dev)
- phpunit/phpunit: ^7.0
- dev-master
- v1.3.2
- v1.3.1
- v1.3
- v1.2.2
- v1.2.1
- v1.2
- v1.1
- v1.0
- dev-dependabot/npm_and_yarn/json5-1.0.2
- dev-dependabot/npm_and_yarn/express-4.18.2
- dev-dependabot/npm_and_yarn/qs-and-express-6.11.0
- dev-dependabot/npm_and_yarn/decode-uri-component-0.2.2
- dev-dependabot/npm_and_yarn/loader-utils-and-resolve-url-loader-1.4.2
- dev-dependabot/composer/guzzlehttp/guzzle-6.5.8
- dev-dependabot/npm_and_yarn/eventsource-1.1.1
- dev-dependabot/composer/guzzlehttp/psr7-1.8.5
- dev-dependabot/npm_and_yarn/url-parse-1.5.10
- dev-dependabot/npm_and_yarn/follow-redirects-1.14.8
- dev-dependabot/npm_and_yarn/tar-4.4.19
- dev-dependabot/npm_and_yarn/path-parse-1.0.7
- dev-dependabot/npm_and_yarn/ws-6.2.2
- dev-dependabot/npm_and_yarn/dns-packet-1.3.4
- dev-dependabot/npm_and_yarn/browserslist-4.16.6
- dev-dependabot/npm_and_yarn/elliptic-6.5.4
- dev-dependabot/npm_and_yarn/dot-prop-4.2.1
- dev-dependabot/npm_and_yarn/ini-1.3.8
- dev-dependabot/npm_and_yarn/lodash-4.17.21
- dev-dependabot/npm_and_yarn/websocket-extensions-0.1.4
- dev-dependabot/npm_and_yarn/http-proxy-1.18.1
This package is auto-updated.
Last update: 2024-02-06 03:54:36 UTC
README
GitDown
一个用于在 PHP 中解析(GitHub 风格)Markdown 的简单软件包。
警告
该软件包是一个欺诈。它所做的只是将您的 Markdown 发送到 公共 GitHub API,该 API 返回解析结果。
了解这一点后,如果您不存储结果,或未利用提供的缓存功能,您的页面加载速度会变慢,或者更糟糕的是,可能会遇到 GitHub 的速率限制错误。
Markdown 解析非常麻烦,对我来说这种权衡是非常值得的,我希望您也能接受它。
安装
composer require calebporzio/gitdown
TLDR;
// Optionally set a GitHub Personal Access Token to increase rate-limit. GitDown::setToken($token); GitDown::parse($markdown); // Uses Laravel's cache()->rememberForever() under the hood. GitDown::parseAndCache($markdown);
可选地,将 @gitdown
片段添加到模板的 <head>
部分,并将 .markdown-body
类添加到包装元素中,以便为 GitHub markdown/code-syntax 调整样式。
<head> [...] @gitdown </head> <body> <div class="markdown-body"> {!! GitDown::parseAndCache($content) !!} </div> </body>
使用 GitHub 进行身份验证
未经身份验证,GitHub 会对您的 API 调用进行限制,每小时的调用次数为 60 次。如果您使用身份验证令牌,可以将此限制提高到每分钟 5000 次调用。强烈建议您使用“个人访问令牌”使用此软件包。要获取一个,请点击此处。(您可以为此令牌留空权限。)
首先,发布软件包的配置文件。
php artisan vendor:publish --provider="GitDown\GitDownServiceProvider"
然后,将以下条目添加到您的 .env
文件中。
[...]
GITHUB_TOKEN=your-token-here
用法
GitDown::parse($markdown); // Will be cached forever. (suggested) GitDown::parseAndCache($markdown); // Will be cached for 24 hours. (minutes in Laravel < 5.8, seconds otherwise) GitDown::parseAndCache($markdown, $seconds = 86400); // Pass in your own custom caching strategy. GitDown::parseAndCache($markdown, function ($parse) { return Cache::rememberForever(sha1($markdown), function () use ($parse) { return $parse(); }); });
允许危险标记
默认情况下,GitHub 会清理它认为“不安全”的 HTML 标签,如 <iframe>
。然而,使用 <iframe>
在 Markdown 中嵌入视频或音频很常见。
GitDown 可以通过在 config/gitdown.php
中的 allowedTags
配置数组选项中填充您想防止解析的标签来智能地保留您的标签。
"allowedTags" => [ 'iframe', ],
非 Laravel 使用
您可以通过将令牌传递给 GitDown
的构造函数来设置 GitHub 个人访问令牌。new GitDown\GitDown($token)
// You can pass config options into the constructur: $gitDown = new GitDown\GitDown( $token = 'foo', $context = 'your/repo', $allowedTags = [] ); $gitDown->parse($markdown); // Pass in your own custom caching strategy. $gitDown->parseAndCache($markdown, function ($parse) { return Cache::rememberForever(sha1($markdown), function () use ($parse) { return $parse(); }); });
Markdown/Syntax CSS
使用 CSS 调整 Markdown 一直让我感到很痛苦。更不用说尝试在代码块中调整语法样式了。不用担心!
GitDown 随带所有您需要的 CSS,以便使您的 Markdown 看起来与 GitHub 上的完全一样。只需在 HTML 页面的某个位置添加此代码即可,最好是在 <head>
部分靠近其他样式表的位置。
<head> [...] @gitdown </head>
非 Laravel
<head> [...] <style><?php echo GitDown\GitDown::styles(); ?></style> </head>
好了!这就是您需要的一切,让一切看起来都很好 🤙。
如果您不希望在页面上直接输出 CSS,您可以使用 NPM 将样式添加到您的样式表中。
使用npm安装primer-markdown和github-syntax-light --save
现在您可以将SCSS文件包含到您的Sass打包器中
@import "primer-markdown/index.scss"; // The relative directories may be a little different for you. @import "./../../node_modules/github-syntax-light/lib/github-light.css";
GitHub Flavored Markdown
要为GitDown启用GFM解析,请将config/gitdown.php中的"context"条目设置为仓库名称。
"context" => "your/repo",
享受吧!
希望这能让您的生活更轻松。如果真的有帮助,请在微博上对项目表示喜爱,并@我:[calebporzio](https://twitter.com/calebporzio)