@jag-k/rollup-plugin-scriptable
Version:
Create a Scriptable bundle from your project
106 lines (86 loc) • 2.43 kB
Markdown
[]: https://img.shields.io/npm/v/@jag-k/rollup-plugin-scriptable
[]: https://www.npmjs.com/package/@jag-k/rollup-plugin-scriptable
[]: https://img.shields.io/github/package-json/v/jag-k/rollup-plugin-scriptable?label=main%20version
[]: https://packagephobia.com/badge?p=@jag-k/rollup-plugin-scriptable
[]: https://packagephobia.com/result?p=@jag-k/rollup-plugin-scriptable
[]: https://img.shields.io/github/license/jag-k/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
```shell
npm i -D @jag-k/rollup-plugin-scriptable
```
```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.
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)