summaryrefslogtreecommitdiff
path: root/cli_snapshots/lib.rs
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2019-09-02 17:07:11 -0400
committerGitHub <noreply@github.com>2019-09-02 17:07:11 -0400
commitd43b43ca781b025b9a6a54827ea3ef193972ef24 (patch)
tree84173b6a653802a41c23145dd3b2048d9075e2a4 /cli_snapshots/lib.rs
parent56508f113d9fe61ffcce4cbbb85e3d6961888e1d (diff)
Refactor snapshot build (#2825)
Instead of using core/snapshot_creator.rs, instead two crates are introduced which allow building the snapshot during build.rs. Rollup is removed and replaced with our own bundler. This removes the Node build dependency. Modules in //js now use Deno-style imports with file extensions, rather than Node style extensionless imports. This improves incremental build time when changes are made to //js files by about 40 seconds.
Diffstat (limited to 'cli_snapshots/lib.rs')
-rw-r--r--cli_snapshots/lib.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/cli_snapshots/lib.rs b/cli_snapshots/lib.rs
new file mode 100644
index 000000000..1147e7903
--- /dev/null
+++ b/cli_snapshots/lib.rs
@@ -0,0 +1,43 @@
+pub static CLI_SNAPSHOT: &[u8] =
+ include_bytes!(concat!(env!("OUT_DIR"), "/CLI_SNAPSHOT.bin"));
+pub static CLI_SNAPSHOT_MAP: &[u8] =
+ include_bytes!(concat!(env!("OUT_DIR"), "/CLI_SNAPSHOT.js.map"));
+pub static CLI_SNAPSHOT_DTS: &[u8] =
+ include_bytes!(concat!(env!("OUT_DIR"), "/CLI_SNAPSHOT.d.ts"));
+
+pub static COMPILER_SNAPSHOT: &[u8] =
+ include_bytes!(concat!(env!("OUT_DIR"), "/COMPILER_SNAPSHOT.bin"));
+pub static COMPILER_SNAPSHOT_MAP: &[u8] =
+ include_bytes!(concat!(env!("OUT_DIR"), "/COMPILER_SNAPSHOT.js.map"));
+pub static COMPILER_SNAPSHOT_DTS: &[u8] =
+ include_bytes!(concat!(env!("OUT_DIR"), "/COMPILER_SNAPSHOT.d.ts"));
+
+#[test]
+fn cli_snapshot() {
+ let mut isolate =
+ deno::Isolate::new(deno::StartupData::Snapshot(CLI_SNAPSHOT), false);
+ deno::js_check(isolate.execute(
+ "<anon>",
+ r#"
+ if (!window) {
+ throw Error("bad");
+ }
+ console.log("we have console.log!!!");
+ "#,
+ ));
+}
+
+#[test]
+fn compiler_snapshot() {
+ let mut isolate =
+ deno::Isolate::new(deno::StartupData::Snapshot(COMPILER_SNAPSHOT), false);
+ deno::js_check(isolate.execute(
+ "<anon>",
+ r#"
+ if (!compilerMain) {
+ throw Error("bad");
+ }
+ console.log(`ts version: ${ts.version}`);
+ "#,
+ ));
+}