

<!--
Documentation generated by Skydoc
-->
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width initial-scale=1" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <title>Simple development server</title>

    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,600,700" type="text/css">
    <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
    <link rel="stylesheet" href="https://code.getmdl.io/1.1.1/material.green-light_blue.min.css">
    <script defer src="https://code.getmdl.io/1.1.1/material.min.js"></script>
    <link rel="stylesheet" href="/rules_typescript/api/main.css">
  </head>
  <body>
    <div class="mdl-layout mdl-js-layout mdl-layout--fixed-drawer
      mdl-layout--fixed-header">
      <header class="mdl-layout__header">
        <div class="mdl-layout__header-row">
          <span class="mdl-layout-title">Simple development server</span>
        </div>
      </header>
      <div class="mdl-layout__drawer">
        <span class="mdl-layout-title">Bazel</span>
        <nav class="drawer-nav">
          <ul class="drawer-nav">
            
<li><a href="/rules_typescript/api/index.html">Overview</a></li>
<li>
  <a href="/rules_typescript/api/build_defs.html">TypeScript compilation</a>
  <ul>
    <li>
      <a href="/rules_typescript/api/build_defs.html#ts_library">
        ts_library
      </a>
    </li>
  </ul>
</li>
<li>
  <a href="/rules_typescript/api/ts_repositories.html">Install toolchain dependencies</a>
  <ul>
  </ul>
</li>
<li>
  <a href="/rules_typescript/api/ts_config.html">Multiple tsconfig.json files</a>
  <ul>
    <li>
      <a href="/rules_typescript/api/ts_config.html#ts_config">
        ts_config
      </a>
    </li>
  </ul>
</li>
<li>
  <a href="/rules_typescript/api/devserver/ts_devserver.html">Simple development server</a>
  <ul>
    <li>
      <a href="/rules_typescript/api/devserver/ts_devserver.html#ts_devserver">
        ts_devserver
      </a>
    </li>
  </ul>
</li>
<li>
  <a href="/rules_typescript/api/karma/ts_web_test.html">Unit testing in Chrome</a>
  <ul>
    <li>
      <a href="/rules_typescript/api/karma/ts_web_test.html#ts_web_test">
        ts_web_test
      </a>
    </li>
  </ul>
</li>

          </ul>
        </nav>
      </div>

      <main class="mdl-layout__content">
        <div class="page-content">
          <h1>Simple development server</h1>

<nav class="toc">
  <h2>Rules</h2>
  <ul>
    <li><a href="#ts_devserver">ts_devserver</a></li>
  </ul>
  <h2>Macros</h2>
  <ul>
    <li><a href="#ts_devserver_macro">ts_devserver_macro</a></li>
  </ul>
</nav>
          <hr>

          <h2 id="ts_devserver_macro">ts_devserver_macro</h2>

          <pre>ts_devserver_macro(<a href="#ts_devserver_macro.tags">tags</a>)</pre>

          <p>This macro re-exposes the <code>ts_devserver</code> rule with some extra tags so that
it behaves correctly under ibazel.
This is re-exported in <code>//:defs.bzl</code> as <code>ts_devserver</code> so if you load the rule
from there, you actually get this macro.</p>


          <h3 id="ts_devserver_macro_args">Attributes</h3>

<table class="params-table">
  <colgroup>
    <col class="col-param" />
    <col class="col-description" />
  </colgroup>
  <tbody>
    <tr id="ts_devserver_macro.tags">
      <td><code>tags</code></td>
      <td>
        <p><code>List of strings; Optional</code></p>
        <p>standard Bazel tags, this macro adds a couple for ibazel</p>
      </td>
    </tr>
  </tbody>
</table>
          <hr>

          <h2 id="ts_devserver">ts_devserver</h2>

          <pre>ts_devserver(<a href="#ts_devserver.name">name</a>, <a href="#ts_devserver.deps">deps</a>, <a href="#ts_devserver.data">data</a>, <a href="#ts_devserver.entry_module">entry_module</a>, <a href="#ts_devserver.scripts">scripts</a>, <a href="#ts_devserver.serving_path">serving_path</a>, <a href="#ts_devserver.static_files">static_files</a>)</pre>

          <p>ts_devserver is a simple development server intended for a quick "getting started" experience.</p>
<p>Additional documentation at <a href="https://github.com/alexeagle/angular-bazel-example/wiki/Running-a-devserver-under-Bazel">https://github.com/alexeagle/angular-bazel-example/wiki/Running-a-devserver-under-Bazel</a></p>


          <h3 id="ts_devserver_args">Attributes</h3>

<table class="params-table">
  <colgroup>
    <col class="col-param" />
    <col class="col-description" />
  </colgroup>
  <tbody>
    <tr id="ts_devserver.name">
      <td><code>name</code></td>
      <td>
        <p><code><a href="https://bazel.build/docs/build-ref.html#name">Name</a>; Required</code></p>
        <p>A unique name for this rule.</p>
      </td>
    </tr>
    <tr id="ts_devserver.deps">
      <td><code>deps</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>Targets that produce JavaScript, such as <code>ts_library</code></p>
      </td>
    </tr>
    <tr id="ts_devserver.data">
      <td><code>data</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>Runtime dependencies</p>
      </td>
    </tr>
    <tr id="ts_devserver.entry_module">
      <td><code>entry_module</code></td>
      <td>
        <p><code>String; Optional; Default is ''</code></p>
        <p>The entry<em>module should be the AMD module name of the entry module such as `"<em>_main</em></em>/src/index"<code>ts_devserver concats the following snippet after the bundle to load the application:</code>require(["entry_module"]);`</p>
      </td>
    </tr>
    <tr id="ts_devserver.scripts">
      <td><code>scripts</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>User scripts to include in the JS bundle before the application sources</p>
      </td>
    </tr>
    <tr id="ts_devserver.serving_path">
      <td><code>serving_path</code></td>
      <td>
        <p><code>String; Optional; Default is ''</code></p>
        <p>The path you can request from the client HTML which serves the JavaScript bundle.
            If you don't specify one, the JavaScript can be loaded at /_/ts_scripts.js</p>
      </td>
    </tr>
    <tr id="ts_devserver.static_files">
      <td><code>static_files</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>Arbitrary files which to be served, such as index.html</p>
      </td>
    </tr>
  </tbody>
</table>


        </div>

        <footer class="mdl-mini-footer">
          <div class="mdl-mini-footer__left-section">
            <div class="mdl-logo">Bazel</div>
            <ul class="mdl-mini-footer__link-list">
              <li><a href="https://bazel.build">Home</a></li>
              <li><a href="https://github.com/bazelbuild">GitHub</a></li>
            </ul>
          </div>
        </footer>
      </main>
    </div>
  </body>
</html>
