From f2b56972fa2ef21799bc6e531644ef9e751bd25b Mon Sep 17 00:00:00 2001 From: David Luecke Date: Fri, 10 Jan 2020 08:41:41 -0800 Subject: [PATCH] feat: Add build script and publish a version for Deno (#6) --- .gitignore | 1 + packages/hooks/.npmignore | 1 + packages/hooks/build/deno.js | 22 ++++++++++++++++++++++ packages/hooks/package.json | 4 +++- readme.md | 13 +++++++++++++ 5 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 packages/hooks/build/deno.js diff --git a/.gitignore b/.gitignore index 9071a10..3482d02 100644 --- a/.gitignore +++ b/.gitignore @@ -62,4 +62,5 @@ typings/ # Build folders lib/ +deno/ *.sqlite diff --git a/packages/hooks/.npmignore b/packages/hooks/.npmignore index d423d51..0a4c254 100644 --- a/packages/hooks/.npmignore +++ b/packages/hooks/.npmignore @@ -1,2 +1,3 @@ test/ tsconfig.json +build/ diff --git a/packages/hooks/build/deno.js b/packages/hooks/build/deno.js new file mode 100644 index 0000000..a84cce9 --- /dev/null +++ b/packages/hooks/build/deno.js @@ -0,0 +1,22 @@ +// A silly build script that converts the incompatible +// TypeScript/Deno module references +const path = require('path'); +const fs = require('fs'); + +const moduleNames = [ + './base', './compose', './decorator', + './function', './object' +]; + +const folder = path.join(__dirname, '..', 'src'); +const out = path.join(__dirname, '..', 'deno'); + +for (const fileName of fs.readdirSync(folder)) { + const content = fs.readFileSync(path.join(folder, fileName)).toString(); + const replacedContent = moduleNames.reduce((current, mod) => + current.replace(new RegExp('\'' + mod + '\'', 'g'), `'${mod}.ts'`) + , content); + + console.log(path.join(out, fileName)) + fs.writeFileSync(path.join(out, fileName), replacedContent); +} diff --git a/packages/hooks/package.json b/packages/hooks/package.json index 207f29a..efe06c1 100644 --- a/packages/hooks/package.json +++ b/packages/hooks/package.json @@ -27,8 +27,10 @@ "main": "lib/", "types": "lib/", "scripts": { - "prepublish": "npm run compile", + "build:deno": "shx mkdir -p deno && node build/deno", "compile": "shx rm -rf lib/ && tsc", + "build": "npm run compile && npm run build:deno", + "prepublish": "npm run build", "test": "mocha --opts ../../mocha.opts --recursive test/**.test.ts test/**/*.test.ts" }, "directories": { diff --git a/readme.md b/readme.md index eb26fba..2e342ac 100644 --- a/readme.md +++ b/readme.md @@ -18,6 +18,8 @@ To a function or class without having to change its original code while also kee - [@feathersjs/hooks](#feathersjshooks) - [Installation](#installation) + - [Node](#node) + - [Deno](#deno) - [Quick Example](#quick-example) - [JavaScript](#javascript) - [TypeScript](#typescript) @@ -44,10 +46,21 @@ To a function or class without having to change its original code while also kee ## Installation +### Node + ``` npm install @feathersjs/hooks --save +yarn add @feathersjs/hooks +``` + +### Deno + +``` +import { hooks } from 'https://unpkg.com/@feathersjs/hooks@latest/deno/index.ts'; ``` +> __Note:__ You might want to replace `latest` with the actual version you want to use (e.g. `https://unpkg.com/@feathersjs/hooks@0.2.0/deno/index.ts`) + ## Quick Example ### JavaScript