https://packager.turbowarp.org/
Converts Scratch projects to standalone files or executable programs. Built using TurboWarp, webpack, and Svelte.
Install dependencies:
npm ci
Start in development mode:
npm start
Then visit http://localhost:8947. Must manually refresh to apply updates.
The general layout of src
is:
- packager: The project packager
- p4: The Svelte interface for the packager
- scaffolding: A minimal Scratch project player used by the packager. Handles most of the boring details of playing Scratch projects such as handling basic mouse input
- common: Files used by both scaffolding and the packager
- addons: Optional addons such as gamepad support or pointerlock
- build: Unusual webpack customizations
- locales: Translations
Packaged projects generated while in development mode should not be distributed. Instead, you should run a production build by setting the NODE_ENV environment variable to production to significantly reduce file size of both the website and the packager:
NODE_ENV=production npm run build
Output is in the dist
folder.
Some assorted tips for people who want to fork this project (it's really easy):
- The packager is deployed as a simple static website. You can host it anywhere by just copying the
dist
folder. We use GitHub Actions to deploy to GitHub Pages by running the "Deploy" workflow whenever we want to push to production (Actions > Deploy > Run workflow). This should be automatically available in forks after enabling GitHub Actions. - If you want to change the VM/renderer/etc. used, just
npm install
ornpm link
a different scratch-vm/scratch-render/etc and rebuild. You can even install a vanilla scratch-vm and all core functionality will still work (but optional features such as interpolation, high quality pen, stage size, etc. may not work) - src/packager/brand.js controls names and links that appear in various places
- static/privacy.html is the privacy policy
- Large files such as NW.js or Electron executables are stored on an external server outside of this repository and have no guarantee of existing long-term. It's easy to setup your own, see src/packager/large-assets.js for more information.
- Set the environment variable ENABLE_SERVICE_WORKER=1 to enable service worker for offline support
- Be aware of the license of this project (see below)
Copyright (C) 2021 Thomas Weber
This project is licensed under the GNU Lesser General Public License version 3. See COPYING and COPYING.LESSER for more information. We believe that packaging a project using the packager "makes use of an interface provided by the Library, but which is not otherwise based on the Library"