Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/cvzi/rollup-userscript-template

Bundle javascript, typescript, react and JSX/TSX script files into a single userscript file with rollup
https://github.com/cvzi/rollup-userscript-template

rollup tampermonkey-userscript typescript userscript

Last synced: 3 days ago
JSON representation

Bundle javascript, typescript, react and JSX/TSX script files into a single userscript file with rollup

Awesome Lists containing this project

README

        

# rollup-userscript-template

This is a template repository for a userscript.
It bundles typescript, react and JSX/TSX script files into a single userscript file with [rollup](https://rollupjs.org/)

## Features:
* Bundle everything into a single userscript files in [dist/bundle.user.js](dist/bundle.user.js)
* Typescript support
* React support
* JSX/TSX support
* Metablock generation from [package.json](package.json) and [meta.json](meta.json) with [rollup-plugin-userscript-metablock](https://github.com/FlandreDaisuki/rollup-plugin-userscript-metablock)
* Development script in [dist/dev.user.js](dist/dev.user.js). Automatically fetches the newest version on F5
* Source map support

## Installation

Clone the repository and install dependencies with npm
```sh
git clone [email protected]:cvzi/rollup-userscript-template.git
cd rollup-userscript-template
npm install
```

## Usage

### Bundle

Bundle everything from `src/` into `dist/bundle.user.js`:

`npm run build`

or

`npx rollup --config`

### Development server
`npm run serve`

or

`node -r esm server.js`

This will automatically update `dist/bundle.user.js` when code changes and serve it on [localhost:8124](http://localhost:8124/).

It also creates a second userscript `dist/dev.user.js`, if you install it in Tampermonkey, it will automatically fetch the latest version from http://localhost:8124/bundle.user.js once you reload a website with F5.

### Bundle without source map

Bundle for publishing without sourcemapping to `dist/release-3.2.1.user.js`

`npm run build:release`

or on Windows

`npm run build:release:win32`

## Other

* Typescript types for GM.* object are incomplete. See [types/GM/index.d.ts](types/GM/index.d.ts)
* Currently react is not bundled, but imported with @require. To bundle it, remove `output.globals` and `external` from [rollup.config.mjs](rollup.config.mjs)