Skip to content

Commit

Permalink
Use 'deno bundle' for benchmark page
Browse files Browse the repository at this point in the history
And improve bundle docs
  • Loading branch information
ry committed Jun 10, 2019
1 parent ccd0c0e commit 30ead14
Show file tree
Hide file tree
Showing 9 changed files with 98 additions and 54 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 15,5 @@ node_modules
# temp benchmark data
/website/data.json
/website/recent.json
/website/*.bundle.js
/js/gen
7 changes: 5 additions & 2 deletions cli/flags.rs
Original file line number Diff line number Diff line change
Expand Up @@ -172,8 172,11 @@ compiler.",
.setting(AppSettings::DisableVersion)
.about("Bundle module and dependencies into single file")
.long_about(
"Fetch, compile, and output to a single file a module and its dependencies.
"
"Output a single JavaScript file with all dependencies
Example:
deno bundle https://deno.land/std/examples/colors.ts"
)
.arg(Arg::with_name("source_file").takes_value(true).required(true))
.arg(Arg::with_name("out_file").takes_value(true).required(false)),
Expand Down
2 changes: 1 addition & 1 deletion js/unit_tests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 50,7 @@ import "./performance_test.ts";
import "./permissions_test.ts";
import "./version_test.ts";

import "../website/app_test.js";
import "../website/app_test.ts";

import { runIfMain } from "./deps/https/deno.land/std/testing/mod.ts";

Expand Down
8 changes: 8 additions & 0 deletions tools/build_website.py
Original file line number Diff line number Diff line change
@@ -0,0 1,8 @@
#!/usr/bin/env python
# Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import os
from util import run, root_path, build_path

os.chdir(os.path.join(root_path, "website"))
deno_exe = os.path.join(build_path(), "deno")
run([deno_exe, "bundle", "app.ts", "app.bundle.js"])
6 changes: 5 additions & 1 deletion tools/upload_website.py
Original file line number Diff line number Diff line change
@@ -1,14 1,18 @@
#!/usr/bin/env python
# Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import os
import sys
import tempfile
from util import run, root_path
from util import run, root_path, build_path

# Probably run tools/docs.py first.
# AWS CLI must be installed separately.

os.chdir(os.path.join(root_path, "website"))

deno_exe = os.path.join(build_path(), "deno")
run([sys.executable, "../tools/build_website.py"])

# Invalidate the cache.
run([
"aws", "cloudfront", "create-invalidation", "--distribution-id",
Expand Down
27 changes: 26 additions & 1 deletion website/app.js → website/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 139,8 @@ function generate(
const yAxis = {
padding: { bottom: 0 },
min: 0,
label: yLabel
label: yLabel,
tick: null
};
if (yTickFormat) {
yAxis.tick = {
Expand Down Expand Up @@ -272,3 273,27 @@ export async function drawChartsFromBenchmarkData(dataUrl) {
gen("#thread-count-chart", threadCountColumns, "threads");
gen("#syscall-count-chart", syscallCountColumns, "syscalls");
}

export function main(): void {
window["chartWidth"] = 800;
const overlay = window["document"].getElementById("spinner-overlay");

function showSpinner() {
overlay.style.display = "block";
}

function hideSpinner() {
overlay.style.display = "none";
}

function updateCharts() {
const u = window.location.hash.match("all") ? "./data.json" : "recent.json";

showSpinner();

drawCharts(u).finally(hideSpinner);
}
updateCharts();

window["onhashchange"] = updateCharts;
}
5 changes: 4 additions & 1 deletion website/app_test.js → website/app_test.ts
Original file line number Diff line number Diff line change
@@ -1,13 1,14 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.

import { test, testPerm, assert, assertEquals } from "../js/test_util.ts";
import { runIfMain } from "../js/deps/https/deno.land/std/testing/mod.ts";
import {
createBinarySizeColumns,
createExecTimeColumns,
createThreadCountColumns,
createSyscallCountColumns,
createSha1List
} from "./app.js";
} from "./app.ts";

const regularData = [
{
Expand Down Expand Up @@ -191,3 192,5 @@ test(function createSha1ListRegularData() {
const sha1List = createSha1List(regularData);
assertEquals(sha1List, ["abcdef", "012345"]);
});

runIfMain(import.meta);
30 changes: 5 additions & 25 deletions website/benchmarks.html
Original file line number Diff line number Diff line change
Expand Up @@ -230,31 230,11 @@ <h3 id="syscalls">Syscall count <a href="#syscalls">#</a></h3>
<script src="https://unpkg.com/[email protected]/dist/d3.min.js"></script>
<script src="https://unpkg.com/[email protected]/c3.min.js"></script>

<script type="module">
import { drawCharts } from "./app.js";
window.chartWidth = 800;
const overlay = document.getElementById("spinner-overlay");

function showSpinner() {
overlay.style.display = "block";
}

function hideSpinner() {
overlay.style.display = "none";
}

function updateCharts() {
const u = window.location.hash.match("all")
? "./data.json"
: "recent.json";

showSpinner();

drawCharts(u).finally(hideSpinner);
}
updateCharts();

window.onhashchange = updateCharts;
<!-- Run "deno bundle app.ts" to generate app.bundle.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js"></script>
<script src="app.bundle.js"></script>
<script>
requirejs(['app'], (app) => app.main());
</script>
</body>
</html>
66 changes: 43 additions & 23 deletions website/manual.md
Original file line number Diff line number Diff line change
Expand Up @@ -591,30 591,9 @@ if (import.meta.main) {
### Flags
```shellsession
deno
A secure runtime for JavaScript and TypeScript built with V8, Rust, and Tokio.
Docs: https://deno.land/manual.html
Modules: https://github.com/denoland/deno_std
Bugs: https://github.com/denoland/deno/issues
To run the REPL:
deno
To execute a sandboxed script:
deno https://deno.land/welcome.ts
To evaluate code from the command line:
deno eval "console.log(30933 404)"
To get help on the another subcommands (run in this case):
deno help run
Use `deno help` to see the help text.
```
USAGE:
deno [FLAGS] [OPTIONS] [SUBCOMMAND]
Expand All @@ -639,6 618,7 @@ OPTIONS:
SUBCOMMANDS:
<script> Script to run
bundle Bundle module and dependnecies into single file
eval Eval script
fetch Fetch the dependencies
fmt Format files
Expand Down Expand Up @@ -677,6 657,46 @@ Particularly useful ones:
--async-stack-trace
```
### Bundling
`deno bundle [URL]` will output a single JavaScript file, using
[AMD](https://en.wikipedia.org/wiki/Asynchronous_module_definition), which
includes all dependencies of the specified input.
```
> deno bundle https://deno.land/std/examples/colors.ts
Bundling "colors.bundle.js"
Emitting bundle to "colors.bundle.js"
9.2 kB emitted.
```
To run then bundle in Deno use
```
deno https://deno.land/std/bundle/run.ts colors.bundle.js
```
Bundles can also be loaded in the web browser with the assistance of
[RequireJS](https://requirejs.org/). Suppose we have a bundle called
`website.bundle.js`, then the following HTML should be able to load it:
```html
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js"></script>
<script src="website.bundle.js"></script>
<script>
requirejs(["website"], website => website.main());
</script>
```
Here we assume there's an exported function `main()` from `website.ts`.
```js
// website.ts
export main() {
console.log("hello from the web browser");
}
```
## Import maps
Deno supports [import maps](https://github.com/WICG/import-maps).
Expand Down

0 comments on commit 30ead14

Please sign in to comment.