examples: add preinstall script

This commit is contained in:
nazeh
2024-07-25 14:36:39 +03:00
parent b03602045f
commit e407461c0d
5 changed files with 24 additions and 8 deletions

View File

@@ -1,6 +1,9 @@
{
"type": "module",
"main": "index.js",
"scripts": {
"preinstall": "cargo run --bin bundle_pubky_npm"
},
"dependencies": {
"@synonymdev/pubky":"file:../../pubky/pkg"
}

View File

@@ -6,7 +6,7 @@
"build": "vite build",
"start": "vite serve",
"preview": "vite preview",
"wasm": "wasm-pack build ../../../pubky/ --target web"
"preinstall": "cargo run --bin bundle_pubky_npm"
},
"dependencies": {
"@synonymdev/pubky": "file:../../../pubky/pkg",

View File

@@ -1,6 +1,7 @@
{
"scripts": {
"start": "vite serve"
"start": "vite serve",
"preinstall": "cargo run --bin bundle_pubky_npm"
},
"dependencies": {
"@synonymdev/pubky": "file:../../../pubky/pkg",

View File

@@ -1,3 +1,4 @@
use std::env;
use std::io;
use std::process::{Command, ExitStatus};
@@ -11,9 +12,12 @@ fn main() {
}
fn build_wasm(target: &str) -> io::Result<ExitStatus> {
let manifest_dir = env::var("CARGO_MANIFEST_DIR").expect("CARGO_MANIFEST_DIR not set");
let output = Command::new("wasm-pack")
.args([
"build",
&manifest_dir,
"--release",
"--target",
target,
@@ -38,8 +42,11 @@ fn build_wasm(target: &str) -> io::Result<ExitStatus> {
}
fn patch() -> io::Result<ExitStatus> {
let manifest_dir = env::var("CARGO_MANIFEST_DIR").expect("CARGO_MANIFEST_DIR not set");
println!("{manifest_dir}/src/bin/patch.mjs");
let output = Command::new("node")
.args(["./src/bin/patch.mjs"])
.args([format!("{manifest_dir}/src/bin/patch.mjs")])
.output()?;
println!(
@@ -49,7 +56,7 @@ fn patch() -> io::Result<ExitStatus> {
if !output.status.success() {
eprintln!(
"wasm-pack failed: {}",
"patch.mjs failed: {}",
String::from_utf8_lossy(&output.stderr)
);
}

View File

@@ -3,12 +3,17 @@
// Based on hacks from [this issue](https://github.com/rustwasm/wasm-pack/issues/1334)
import { readFile, writeFile } from "node:fs/promises";
import { fileURLToPath } from 'node:url';
import path, { dirname } from 'node:path';
const cargoTomlContent = await readFile("./Cargo.toml", "utf8");
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const cargoTomlContent = await readFile(path.join(__dirname, "../../Cargo.toml"), "utf8");
const cargoPackageName = /\[package\]\nname = "(.*?)"/.exec(cargoTomlContent)[1]
const name = cargoPackageName.replace(/-/g, '_')
const content = await readFile(`./pkg/nodejs/${name}.js`, "utf8");
const content = await readFile(path.join(__dirname, `../../pkg/nodejs/${name}.js`), "utf8");
const patched = content
// use global TextDecoder TextEncoder
@@ -46,9 +51,9 @@ var __toBinary = /* @__PURE__ */ (() => {
};
})();
const bytes = __toBinary(${JSON.stringify(await readFile(`./pkg/nodejs/${name}_bg.wasm`, "base64"))
const bytes = __toBinary(${JSON.stringify(await readFile(path.join(__dirname, `../../pkg/nodejs/${name}_bg.wasm`), "base64"))
});
`,
);
await writeFile(`./pkg/${name}.mjs`, patched);
await writeFile(path.join(__dirname, `../../pkg/${name}.mjs`), patched);