diff --git a/.github/workflows/demo.yaml b/.github/workflows/demo.yaml index 781599d..953334f 100644 --- a/.github/workflows/demo.yaml +++ b/.github/workflows/demo.yaml @@ -1,4 +1,4 @@ -name: Rust +name: Test and build demo on: push: @@ -23,9 +23,14 @@ jobs: npm i - name: Build wasm run: npm run build:cargo &&npm run build + - name: Test Node.js + run: | + cd cd ${GITHUB_WORKSPACE}/demo/node + npm install + npm test - name: Build web run: | - cd demo/web + cd ${GITHUB_WORKSPACE}/demo/web npm install PUBLIC_URL='/jieba-wasm/' npm run build - name: Deploy diff --git a/demo/node/package-lock.json b/demo/node/package-lock.json new file mode 100644 index 0000000..1569fc5 --- /dev/null +++ b/demo/node/package-lock.json @@ -0,0 +1,27 @@ +{ + "name": "node", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "node", + "version": "1.0.0", + "dependencies": { + "jieba-wasm": "file:../.." + }, + "devDependencies": {} + }, + "../..": { + "version": "2.0.0", + "license": "MIT", + "devDependencies": { + "wireit": "^0.14.4" + } + }, + "node_modules/jieba-wasm": { + "resolved": "../..", + "link": true + } + } +} diff --git a/demo/node/package.json b/demo/node/package.json new file mode 100644 index 0000000..e95638f --- /dev/null +++ b/demo/node/package.json @@ -0,0 +1,12 @@ +{ + "name": "node", + "private": true, + "version": "1.0.0", + "scripts": { + "test": "node tests/index.mjs" + }, + "dependencies": { + "jieba-wasm": "file:../.." + }, + "devDependencies": {} +} diff --git a/demo/node/tests/index.mjs b/demo/node/tests/index.mjs new file mode 100644 index 0000000..affa53a --- /dev/null +++ b/demo/node/tests/index.mjs @@ -0,0 +1,2 @@ +import "./node-require.js"; +import "./node-import.mjs"; diff --git a/demo/node/tests/node-import.mjs b/demo/node/tests/node-import.mjs new file mode 100644 index 0000000..45382ba --- /dev/null +++ b/demo/node/tests/node-import.mjs @@ -0,0 +1,15 @@ +import test from "node:test"; +import assert from "node:assert"; +import { cut } from "jieba-wasm"; + +test("node", async (t) => { + await t.test("import", () => { + assert.strictEqual(typeof cut, "function"); + assert.deepStrictEqual(cut("武汉市长江大桥"), ["武汉市", "长江大桥"]); + }); + await t.test("dynamic import", async () => { + const { cut } = await import("jieba-wasm"); + assert.strictEqual(typeof cut, "function"); + assert.deepStrictEqual(cut("武汉市长江大桥"), ["武汉市", "长江大桥"]); + }); +}); diff --git a/demo/node/tests/node-require.js b/demo/node/tests/node-require.js new file mode 100644 index 0000000..2a2c518 --- /dev/null +++ b/demo/node/tests/node-require.js @@ -0,0 +1,15 @@ +const test = require("node:test"); +const assert = require("node:assert"); + +test("node", async (t) => { + await t.test("require", () => { + const { cut } = require("jieba-wasm"); + assert.strictEqual(typeof cut, "function"); + assert.deepStrictEqual(cut("武汉市长江大桥"), ["武汉市", "长江大桥"]); + }); + await t.test("dynamic import", async () => { + const { cut } = await import("jieba-wasm"); + assert.strictEqual(typeof cut, "function"); + assert.deepStrictEqual(cut("武汉市长江大桥"), ["武汉市", "长江大桥"]); + }); +}); diff --git a/demo/web/package-lock.json b/demo/web/package-lock.json index 3cbbbdf..c95139e 100644 --- a/demo/web/package-lock.json +++ b/demo/web/package-lock.json @@ -23,7 +23,7 @@ } }, "../..": { - "version": "1.0.0", + "version": "2.0.0", "license": "MIT", "devDependencies": { "wireit": "^0.14.4" diff --git a/package.json b/package.json index 978c606..f5591e1 100644 --- a/package.json +++ b/package.json @@ -6,22 +6,30 @@ "types": "./pkg/nodejs/jieba_rs_wasm.d.ts", "exports": { ".": { - "import": { + "node": { + "types": "./pkg/nodejs/jieba_rs_wasm.d.ts", + "default": "./pkg/nodejs/jieba_rs_wasm.js" + }, + "browser": { "types": "./pkg/web/jieba_rs_wasm.d.ts", "default": "./pkg/web/jieba_rs_wasm.js" }, - "browser": { + "import": { "types": "./pkg/web/jieba_rs_wasm.d.ts", "default": "./pkg/web/jieba_rs_wasm.js" }, "require": { "types": "./pkg/nodejs/jieba_rs_wasm.d.ts", "default": "./pkg/nodejs/jieba_rs_wasm.js" - }, - "node": { - "types": "./pkg/nodejs/jieba_rs_wasm.d.ts", - "default": "./pkg/nodejs/jieba_rs_wasm.js" } + }, + "./web": { + "types": "./pkg/web/jieba_rs_wasm.d.ts", + "default": "./pkg/web/jieba_rs_wasm.js" + }, + "./node": { + "types": "./pkg/nodejs/jieba_rs_wasm.d.ts", + "default": "./pkg/nodejs/jieba_rs_wasm.js" } }, "directories": { diff --git a/tests/web.rs b/tests/web.rs deleted file mode 100644 index de5c1da..0000000 --- a/tests/web.rs +++ /dev/null @@ -1,13 +0,0 @@ -//! Test suite for the Web and headless browsers. - -#![cfg(target_arch = "wasm32")] - -extern crate wasm_bindgen_test; -use wasm_bindgen_test::*; - -wasm_bindgen_test_configure!(run_in_browser); - -#[wasm_bindgen_test] -fn pass() { - assert_eq!(1 + 1, 2); -}