From b11b17229ac4a85e82a5a148cc5c274c2ca6814d Mon Sep 17 00:00:00 2001 From: adbenitez Date: Fri, 15 Nov 2024 02:58:10 +0100 Subject: [PATCH] convert to module --- .gitignore | 4 +++- .prettierignore | 2 +- README.md | 2 +- example/index.html | 10 +++++++--- example/vite.config.js | 8 +------- package.json | 26 ++++++++++++++++++++++++- pnpm-lock.yaml | 27 ++++++++++++++------------ src/{build_xdc.js => build-xdc.js} | 6 +++--- src/eruda.js | 9 ++++++--- src/index.js | 19 ++++++++---------- src/legacy.js | 6 +++--- src/{mock_webxdc.js => mock-webxdc.js} | 8 ++++---- {emulator => src}/webxdc.js | 0 13 files changed, 77 insertions(+), 50 deletions(-) rename src/{build_xdc.js => build-xdc.js} (73%) rename src/{mock_webxdc.js => mock-webxdc.js} (73%) rename {emulator => src}/webxdc.js (100%) diff --git a/.gitignore b/.gitignore index b2298ac..9962069 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,8 @@ pnpm-debug.log* .pnpm-debug.log node_modules +*~ + +example/pnpm-lock.yaml example/dist example/dist-xdc -*~ \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index 9603446..fce726d 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,4 +1,4 @@ example/dist example/dist-xdc -emulator/webxdc.js +src/webxdc.js pnpm-lock.yaml \ No newline at end of file diff --git a/README.md b/README.md index ea65bb2..d1a1648 100644 --- a/README.md +++ b/README.md @@ -58,4 +58,4 @@ export default defineConfig({ }); ``` -For a full example check the [example](https://github.com/webxdc/vite-plugins/tree/master/example) folder. +For a full example check the [example](https://github.com/webxdc/vite-plugins/tree/main/example) folder. diff --git a/example/index.html b/example/index.html index 95933b2..8f76d86 100644 --- a/example/index.html +++ b/example/index.html @@ -9,9 +9,13 @@

Hello World

diff --git a/example/vite.config.js b/example/vite.config.js index 0a60579..68e0e3b 100644 --- a/example/vite.config.js +++ b/example/vite.config.js @@ -1,12 +1,6 @@ // example vite configuration -import { - buildXDC, - eruda, - mockWebxdc, - legacy, - injectScript, -} from "@webxdc/vite-plugins"; +import { buildXDC, eruda, mockWebxdc, legacy } from "@webxdc/vite-plugins"; import { defineConfig } from "vite"; // https://vitejs.dev/config/ diff --git a/package.json b/package.json index a4edc7c..e9833a1 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,38 @@ { "name": "@webxdc/vite-plugins", + "description": "Collection of vite plugins for webxdc development", "version": "0.3.0", + "license": "MIT", + "author": "adbenitez", + "keywords": [ + "webxdc", + "deltachat" + ], + "repository": { + "type": "git", + "url": "https://github.com/webxdc/vite-plugins.git" + }, + "bugs": { + "url": "https://github.com/webxdc/vite-plugins/issues" + }, + "homepage": "https://github.com/webxdc/vite-plugins", + "main": "./src/index.js", + "module": "./src/index.js", + "source": "./src/index.js", + "type": "module", + "exports": { + ".": { + "import": "./src/index.js" + } + }, "scripts": { "fix": "prettier --write .", "check": "prettier --check ." }, - "main": "src/index.js", "dependencies": { "@vitejs/plugin-legacy": "^5.4.3", "eruda": "^3.4.1", + "terser": "^5.36.0", "vite-plugin-zip-pack": "^1.2.4" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0d9cd96..74a7063 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,13 +10,16 @@ importers: dependencies: '@vitejs/plugin-legacy': specifier: ^5.4.3 - version: 5.4.3(terser@5.19.4)(vite@5.4.8(@types/node@20.6.2)(terser@5.19.4)) + version: 5.4.3(terser@5.36.0)(vite@5.4.8(@types/node@20.6.2)(terser@5.36.0)) eruda: specifier: ^3.4.1 version: 3.4.1 + terser: + specifier: ^5.36.0 + version: 5.36.0 vite-plugin-zip-pack: specifier: ^1.2.4 - version: 1.2.4(vite@5.4.8(@types/node@20.6.2)(terser@5.19.4)) + version: 1.2.4(vite@5.4.8(@types/node@20.6.2)(terser@5.36.0)) devDependencies: prettier: specifier: 3.3.3 @@ -1018,8 +1021,8 @@ packages: systemjs@6.15.1: resolution: {integrity: sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==} - terser@5.19.4: - resolution: {integrity: sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==} + terser@5.36.0: + resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} engines: {node: '>=10'} hasBin: true @@ -1895,7 +1898,7 @@ snapshots: '@types/node@20.6.2': optional: true - '@vitejs/plugin-legacy@5.4.3(terser@5.19.4)(vite@5.4.8(@types/node@20.6.2)(terser@5.19.4))': + '@vitejs/plugin-legacy@5.4.3(terser@5.36.0)(vite@5.4.8(@types/node@20.6.2)(terser@5.36.0))': dependencies: '@babel/core': 7.26.0 '@babel/preset-env': 7.26.0(@babel/core@7.26.0) @@ -1905,8 +1908,8 @@ snapshots: magic-string: 0.30.12 regenerator-runtime: 0.14.1 systemjs: 6.15.1 - terser: 5.19.4 - vite: 5.4.8(@types/node@20.6.2)(terser@5.19.4) + terser: 5.36.0 + vite: 5.4.8(@types/node@20.6.2)(terser@5.36.0) transitivePeerDependencies: - supports-color @@ -2164,7 +2167,7 @@ snapshots: systemjs@6.15.1: {} - terser@5.19.4: + terser@5.36.0: dependencies: '@jridgewell/source-map': 0.3.6 acorn: 8.14.0 @@ -2190,12 +2193,12 @@ snapshots: util-deprecate@1.0.2: {} - vite-plugin-zip-pack@1.2.4(vite@5.4.8(@types/node@20.6.2)(terser@5.19.4)): + vite-plugin-zip-pack@1.2.4(vite@5.4.8(@types/node@20.6.2)(terser@5.36.0)): dependencies: jszip: 3.10.1 - vite: 5.4.8(@types/node@20.6.2)(terser@5.19.4) + vite: 5.4.8(@types/node@20.6.2)(terser@5.36.0) - vite@5.4.8(@types/node@20.6.2)(terser@5.19.4): + vite@5.4.8(@types/node@20.6.2)(terser@5.36.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 @@ -2203,6 +2206,6 @@ snapshots: optionalDependencies: '@types/node': 20.6.2 fsevents: 2.3.3 - terser: 5.19.4 + terser: 5.36.0 yallist@3.1.1: {} diff --git a/src/build_xdc.js b/src/build-xdc.js similarity index 73% rename from src/build_xdc.js rename to src/build-xdc.js index c8fe4d7..8cc8d98 100644 --- a/src/build_xdc.js +++ b/src/build-xdc.js @@ -1,14 +1,14 @@ -const zipPack = require("vite-plugin-zip-pack").default; +import zipPack from "vite-plugin-zip-pack"; function defaultFilter(fileName, filePath, isDirectory) { return !fileName.endsWith("~"); } // package your app as .xdc file on build -exports.buildXDC = function (opts = {}) { +export function buildXDC(opts = {}) { opts = Object.assign( { outDir: "dist-xdc", outFileName: "app.xdc", filter: defaultFilter }, opts, ); return zipPack(opts); -}; +} diff --git a/src/eruda.js b/src/eruda.js index 6dba187..553985f 100644 --- a/src/eruda.js +++ b/src/eruda.js @@ -1,7 +1,10 @@ -const readFileSync = require("node:fs").readFileSync; +import { readFileSync } from "node:fs"; +import { createRequire } from "node:module"; + +const require = createRequire(import.meta.url); // inject eruda dev tools in your app for debugging in end devices if NODE_ENV=debug is set -exports.eruda = function (debug = undefined) { +export function eruda(debug = undefined) { const erudaSrc = readFileSync(require.resolve("eruda"), "utf-8"); return { name: "vite-plugin-eruda", @@ -38,4 +41,4 @@ exports.eruda = function (debug = undefined) { } }, }; -}; +} diff --git a/src/index.js b/src/index.js index 66a9dc4..b300059 100644 --- a/src/index.js +++ b/src/index.js @@ -1,19 +1,14 @@ -const buildXDC = require("./build_xdc").buildXDC; -const eruda = require("./eruda").eruda; -const mockWebxdc = require("./mock_webxdc").mockWebxdc; -const legacy = require("./legacy").legacy; - -exports.buildXDC = buildXDC; -exports.eruda = eruda; -exports.mockWebxdc = mockWebxdc; -exports.legacy = legacy; +import { buildXDC } from "./build-xdc.js"; +import { eruda } from "./eruda.js"; +import { mockWebxdc } from "./mock-webxdc.js"; +import { legacy } from "./legacy.js"; /** * The recommended Vite config for a Webxdc app. * * @returns The recommended Vite config for a Webxdc app. */ -exports.webxdcViteConfig = function (options = {}) { +export const webxdcViteConfig = function (options = {}) { options = Object.assign( { plugins: [buildXDC(), eruda(), legacy(), mockWebxdc()] }, options, @@ -26,10 +21,12 @@ exports.webxdcViteConfig = function (options = {}) { * * @returns Vite config for a Webxdc app. */ -exports.webxdcViteConfigNoLegacy = function (options = {}) { +export const webxdcViteConfigNoLegacy = function (options = {}) { options = Object.assign( { plugins: [buildXDC(), eruda(), mockWebxdc()] }, options, ); return options; }; + +export { buildXDC, eruda, mockWebxdc, legacy }; diff --git a/src/legacy.js b/src/legacy.js index 6649ace..93645b9 100644 --- a/src/legacy.js +++ b/src/legacy.js @@ -1,10 +1,10 @@ -const _legacy = require("@vitejs/plugin-legacy"); +import _legacy from "@vitejs/plugin-legacy"; // convert your code to be compatible with legacy browsers and adds polyfills -exports.legacy = function (opts = {}) { +export function legacy(opts = {}) { opts = Object.assign( { targets: ["ChromeAndroid >=37", "iOS >=11"], renderModernChunks: false }, opts, ); return _legacy(opts); -}; +} diff --git a/src/mock_webxdc.js b/src/mock-webxdc.js similarity index 73% rename from src/mock_webxdc.js rename to src/mock-webxdc.js index 1655489..0fee323 100644 --- a/src/mock_webxdc.js +++ b/src/mock-webxdc.js @@ -1,8 +1,8 @@ -const readFileSync = require("node:fs").readFileSync; +import { readFileSync } from "node:fs"; // serve a mock webxdc.js file in development mode to fake webxdc API while developing in the browser -exports.mockWebxdc = function ( - path = "./node_modules/@webxdc/vite-plugins/emulator/webxdc.js", +export function mockWebxdc( + path = "./node_modules/@webxdc/vite-plugins/src/webxdc.js", ) { const scriptSrc = readFileSync(path, "utf-8"); return { @@ -17,4 +17,4 @@ exports.mockWebxdc = function ( }); }, }; -}; +} diff --git a/emulator/webxdc.js b/src/webxdc.js similarity index 100% rename from emulator/webxdc.js rename to src/webxdc.js