From d3d321da144bfe291198434a0731f311353c40ed Mon Sep 17 00:00:00 2001 From: Ben Thomson Date: Mon, 7 Aug 2023 09:59:49 +0800 Subject: [PATCH] Pack for both browser and ESM --- .eslintrc.json | 2 +- babel.config.js | 4 +-- package.json | 27 ++++++++++++++++--- ...up.config.mjs => rollup.browser.config.mjs | 2 +- rollup.esm.config.mjs | 14 ++++++++++ src/browser.js | 3 +++ src/esm.js | 9 +++++++ src/main.js | 9 ------- src/main/Snowboard.js | 4 +++ 9 files changed, 57 insertions(+), 17 deletions(-) rename rollup.config.mjs => rollup.browser.config.mjs (95%) create mode 100644 rollup.esm.config.mjs create mode 100644 src/browser.js create mode 100644 src/esm.js delete mode 100644 src/main.js diff --git a/.eslintrc.json b/.eslintrc.json index bca339f..5c199ab 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -22,7 +22,7 @@ }] }, "ignorePatterns": [ - "rollup.config.mjs", + "rollup.*.config.mjs", "jest.config.js", "tests/*.js", "dist/" diff --git a/babel.config.js b/babel.config.js index cee9f92..d86a7f6 100644 --- a/babel.config.js +++ b/babel.config.js @@ -3,9 +3,7 @@ module.exports = { [ '@babel/preset-env', { - targets: { - node: 'current', - }, + targets: '> 0.5%, last 2 versions, not dead, Firefox ESR, not ie > 0', }, ], ], diff --git a/package.json b/package.json index 697775e..0ff30b7 100644 --- a/package.json +++ b/package.json @@ -2,14 +2,28 @@ "name": "@wintercms/snowboard", "version": "0.1.0", "description": "The Winter CMS Snowboard.js framework as a standalone module", - "browser": "src/browser.js", + "keywords": [ + "winter", + "wintercms", + "snowboard", + "framework", + "organization", + "management" + ], + "main": "dist/snowboard.esm.js", + "browser": "dist/snowboard.min.js", "scripts": { - "build": "rollup -c", - "watch": "rollup -c -w", + "build": "npm run build:esm && npm run build:browser", + "build:browser": "rollup -c rollup.browser.config.mjs", + "build:esm": "rollup -c rollup.esm.config.mjs", + "watch": "rollup -c rollup.esm.config.js -w", "lint": "eslint --ext .js src tests", "test": "jest" }, "author": "Ben Thomson ", + "homepage": "https://wintercms.com", + "repository": "github:wintercms/snowboard.js", + "bugs": "https://github.com/wintercms/snowboard.js/issues", "license": "MIT", "dependencies": { "js-cookie": "^3.0.5" @@ -30,5 +44,12 @@ "jest": "^29.6.2", "jest-environment-jsdom": "^29.6.2", "rollup": "^3.27.2" + }, + "files": [ + "dist/*.js" + ], + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" } } diff --git a/rollup.config.mjs b/rollup.browser.config.mjs similarity index 95% rename from rollup.config.mjs rename to rollup.browser.config.mjs index 4caaa44..05c8fb6 100644 --- a/rollup.config.mjs +++ b/rollup.browser.config.mjs @@ -3,7 +3,7 @@ import terser from '@rollup/plugin-terser'; import { nodeResolve } from '@rollup/plugin-node-resolve'; export default { - input: 'src/main.js', + input: 'src/browser.js', output: [ { file: 'dist/snowboard.js', diff --git a/rollup.esm.config.mjs b/rollup.esm.config.mjs new file mode 100644 index 0000000..7ed03ff --- /dev/null +++ b/rollup.esm.config.mjs @@ -0,0 +1,14 @@ +import { nodeResolve } from '@rollup/plugin-node-resolve'; + +export default { + input: 'src/esm.js', + output: [ + { + file: 'dist/snowboard.esm.js', + format: 'esm', + } + ], + plugins: [ + nodeResolve(), + ], +}; diff --git a/src/browser.js b/src/browser.js new file mode 100644 index 0000000..76a9870 --- /dev/null +++ b/src/browser.js @@ -0,0 +1,3 @@ +import Snowboard from './main/Snowboard'; + +export default new Snowboard(); diff --git a/src/esm.js b/src/esm.js new file mode 100644 index 0000000..cffb121 --- /dev/null +++ b/src/esm.js @@ -0,0 +1,9 @@ +import Snowboard from './main/Snowboard'; +import PluginBase from './abstracts/PluginBase'; +import Singleton from './abstracts/Singleton'; + +export { + Snowboard, + PluginBase, + Singleton, +}; diff --git a/src/main.js b/src/main.js deleted file mode 100644 index 327c04c..0000000 --- a/src/main.js +++ /dev/null @@ -1,9 +0,0 @@ -import Snowboard from './main/Snowboard'; -import ProxyHandler from './main/ProxyHandler'; - -const instance = new Proxy( - new Snowboard(), - ProxyHandler, -); - -export default instance; diff --git a/src/main/Snowboard.js b/src/main/Snowboard.js index 8c7b36c..60dcff7 100644 --- a/src/main/Snowboard.js +++ b/src/main/Snowboard.js @@ -1,3 +1,4 @@ +import ProxyHandler from './ProxyHandler'; import PluginBase from '../abstracts/PluginBase'; import Singleton from '../abstracts/Singleton'; import PluginLoader from './PluginLoader'; @@ -52,6 +53,9 @@ export default class Snowboard { this.initialise(); this.debug('Snowboard framework initialised'); + + /* eslint-disable no-constructor-return */ + return new Proxy(this, ProxyHandler); } /**