lektor-website/docs/api/plugins/events/before-build/index.html

328 lines
11 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="../../../../../static/styles.css?h=ca3aba42">
<link rel="stylesheet" href="../../../../../static/pygments.css">
<link rel="shortcut icon" href="../../../../../static/favicon.png?h=fa09bedd">
<title>before-build | Documentation | Lektor Static Content Management System</title>
</head>
<body class="default">
<nav class="navbar navbar-inverse navbar-static-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed"
data-toggle="collapse" data-target="#navbar"
aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../../../../../">Lektor</a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li><a href="../../../../../downloads/">Download</a></li>
<li class="active"><a href="../../../../">Documentation</a></li>
<li><a href="../../../../../showcase/">Showcase</a></li>
<li><a href="../../../../../plugins/">Plugins</a></li>
<li><a href="../../../../../community/">Community</a></li>
<li><a href="../../../../../blog/">Blog</a></li>
</ul>
</div>
</div>
</nav>
<div class="body-wrapper">
<div class="container">
<div class="row">
<div class="col-sm-3">
<ul class="tree-nav nocontent">
<li><a href="../../../../">Welcome</a></li>
<li><a href="../../../../what/">What is Lektor</a>
<li><a href="../../../../installation/">Installation</a>
<li><a href="../../../../quickstart/">Quickstart</a>
<li><a href="../../../../project/">Project</a>
<li><a href="../../../../content/">Content</a>
<li><a href="../../../../templates/">Templates</a>
<li><a href="../../../../themes/">Themes</a>
<li><a href="../../../../guides/">Guides</a>
<li><a href="../../../../deployment/">Deployment</a>
<li><a href="../../../../plugins/">Plugins</a>
<li><a href="../../../../models/">Data Modelling</a>
<li><a href="../../../../cli/">Command Line</a>
<li><a href="../../../">API</a>
<ul>
<li><a href="../../../build/">Build System</a>
<li><a href="../../../databags/">Databags</a>
<li><a href="../../../db/">Database</a>
<li><a href="../../../environment/">Environment</a>
<li><a href="../../">Plugins</a>
<ul>
<li><a href="../">Events</a>
<ul>
<li><a href="../after-build/">after-build</a>
<li><a href="../after-build-all/">after-build-all</a>
<li><a href="../after-prune/">after-prune</a>
<li class="active"><a href="./">before-build</a>
<ul></ul>
<li><a href="../before-build-all/">before-build-all</a>
<li><a href="../before-prune/">before-prune</a>
<li><a href="../markdown-config/">markdown-config</a>
<li><a href="../markdown-lexer-config/">markdown-lexer-config</a>
<li><a href="../markdown-meta-init/">markdown-meta-init</a>
<li><a href="../markdown-meta-postprocess/">markdown-meta-postprocess</a>
<li><a href="../process-template-context/">process-template-context</a>
<li><a href="../server-spawn/">server-spawn</a>
<li><a href="../server-stop/">server-stop</a>
<li><a href="../setup-env/">setup-env</a>
</ul>
<li><a href="../../get-plugin/">get_plugin()</a>
<li><a href="../../plugin/">Plugin</a>
</ul>
<li><a href="../../../project/">Project</a>
<li><a href="../../../publisher/">Publisher</a>
<li><a href="../../../templates/">Template API</a>
<li><a href="../../../utils/">Utilities</a>
</ul>
<li><a href="../../../../search/">Search</a>
</ul>
<div class="visible-md-block visible-lg-block">
<h4>This Page</h4>
<ul class="toc">
<li><a href="#example">Example</a></li>
</ul>
</div>
</div>
<div class="col-sm-9 doc-styling">
<h1><i class="glyphicon glyphicon-flash"></i> <code class="obj">before-build</code> <span class="sig">(<code>builder, build_state, source, prog</code>)</span></h1>
<ul class=page-meta>
</ul>
<p>This event is emitted right before a source is being built into a final build
artifact. Note that this event in itself does not indicate if the build will
actually take place or not due to the artifact being current already as such
the usefulness is limited.</p>
<p>The parameters being passed are:</p>
<ul>
<li><code>builder</code>: a reference to the builder.</li>
<li><code>build_state</code>: a reference to the build state object.</li>
<li><code>source</code>: the source object that is being processed. (See
<a href="../../../db/obj/" class="ref">Source Object</a> for more information)</li>
<li><code>prog</code>: the build program that is being used to process the source. (See
<a href="../../../build/program/" class="ref">Build Program</a> for more information)</li>
</ul>
<div class="admonition admonition-warning"><p>Note that currently both the builder as well as the build state are
undocumented and unsupported! This means that if a plugin choses to use those
references to do something with it they should consider that they might break
in future versions.</p></div><h2 id="example">Example</h2><div class="hll"><pre><span></span><span class="k">def</span> <span class="nf">on_before_build</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source</span><span class="p">,</span> <span class="n">prog</span><span class="p">,</span> <span class="o">**</span><span class="n">extra</span><span class="p">):</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;building </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">source</span><span class="o">.</span><span class="n">source_filename</span><span class="p">)</span>
</pre></div>
<br>
<p>
A list of some plugins that make use of this event is available
<a href="../../../../../plugins/tag/before-build/" class="ref">here</a>.
</p>
<div class="comment-box">
<h2>Comments</h2>
<div id="disqus_thread"></div>
<script>
var disqus_config = function() { this.page.identifier = "/docs/api/plugins/events/before-build"; this.page.url = "https://www.getlektor.com/docs/api/plugins/events/before-build/"; };
(function() {
var d = document, s = d.createElement('script');
s.src = '//lektordocumentation.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>
Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript"
rel="nofollow">comments powered by Disqus.</a>
</noscript>
</div>
</div>
</div>
</div>
</div>
<div class="bottomsummary">
<div class="container">
</div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="col-sm-4 icon-bar">
<a href="https://github.com/lektor/lektor/" title="Lektor on GitHub"
><i class="fa fa-github"></i></a>
<a href="https://github.com/lektor/lektor/issues/" title="Report Issues for Lektor"
><i class="fa fa-bug"></i></a>
<a href="https://twitter.com/getlektor" title="Find Lektor on Twitter"
><i class="fa fa-twitter"></i></a>
<a href="https://gitter.im/lektor/lektor" title="Chat on Gitter"
><i class="fa fa-comment"></i></a>
<a href="https://github.com/lektor/lektor-website/tree/master/content/docs/api/plugins/events/before-build/contents.lr" title="View source for this page"><i class="fa fa-code"></i></a>
</div>
<div class="col-sm-8">
<a href="../../../../../license/">License & Copyright</a>
<a href="../../../../../contact/">Contact</a>
Made with <i class="fa fa-fw fa-heart" title="Heart"><span hidden>Heart</span></i> in Carinthia
</div>
</div>
</div>
</footer>
<script type=text/javascript src="../../../../../static/app.js?h=bb1b933a" charset="utf-8"></script>
<script>
((window.gitter = {}).chat = {}).options = {
room: 'lektor/lektor',
activationElement: null
};
document.write('<button class="js-gitter-toggle-chat-button">Toggle Chat</button>');
var dnt = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack;
if (dnt != "1" && dnt != "yes") {
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', 'UA-70822533-1', 'auto');
ga('set', 'anonymizeIp', true);
ga('send', 'pageview');
} else {
console.debug("Respecting Do-Not-Track, not running analytics.");
}
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>
<script async defer id="github-bjs" src="https://buttons.github.io/buttons.js"></script>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
<script src="https://sidecar.gitter.im/dist/sidecar.v1.js" async defer></script>
</body>
</html>