UNPKG

@jag-k/rollup-plugin-scriptable

Version:
106 lines (86 loc) 2.43 kB
[npm]: https://img.shields.io/npm/v/@jag-k/rollup-plugin-scriptable [npm-url]: https://www.npmjs.com/package/@jag-k/rollup-plugin-scriptable [main-version]: https://img.shields.io/github/package-json/v/jag-k/rollup-plugin-scriptable?label=main%20version [size]: https://packagephobia.com/badge?p=@jag-k/rollup-plugin-scriptable [size-url]: https://packagephobia.com/result?p=@jag-k/rollup-plugin-scriptable [license]: https://img.shields.io/github/license/jag-k/rollup-plugin-scriptable # Rollup Plugin Scriptable [![NPM][npm]][npm-url] [![Main version][main-version]](package.json) [![License][license]](LICENSE) [![Install size][size]][size-url] Create a [Scriptable](https://scriptable.app) bundle from your project ## Installation ```shell npm i -D @jag-k/rollup-plugin-scriptable ``` ## Usage ```js // rollup.config.js import scriptableBundle from "@jag-k/rollup-plugin-scriptable"; import * as config from "./config.json"; export default { input: 'src/index.js', output: [ { file: `dist/widget.js`, format: 'es', plugins: [scriptableBundle(config)] } ] }; ``` ```json5 // config.json { "always_run_in_app": false, "icon": { "color": "blue", "glyph": "users" }, "name": "Widget", "share_sheet_inputs": [] } ``` After build, you will get 2 files: ``` dist ├── HASS Persons.js └── HASS Persons.scriptable ``` In `.js` file added banner for Scriptable app. `.scriptable` file contains bundle for Scriptable app. This is `config.json` file with `script` key which value is compiled code. ## Quick Tips You can use [`rollup-plugin-copy`](https://npmjs.com/package/rollup-plugin-copy) to copy files to iCloud for easy development and debugging Scriptable scripts. ```js // rollup.config.js import { homedir } from 'os'; import scriptableBundle from '@jag-k/rollup-plugin-scriptable'; import copy from 'rollup-plugin-copy'; import * as config from './config.json'; export default { input: 'src/main.js', output: [ { file: `dist/${config.name}.js`, format: 'es', plugins: [scriptableBundle(config)] }, ], plugins: process.env.COPY_TO_ICLOUD === 'true' ? [ copy({ hook: 'writeBundle', targets: [ { src: `dist/*.js`, dest: `${homedir()}/Library/Mobile Documents/iCloud~dk~simonbs~Scriptable/Documents/` }, ] }) ] : [] }; ``` ## License [Apache 2.0](LICENSE)