* Separate "p4" and "packager" * Continue p4, packager, common refactoring * Plist does not need to be a class * Document what the `common` folder is for * Fix typo in "uril-utils" * Move more p4 JS to the p4 folder * Move everything from packager/lib to just packager * Fix imports in tests
58 lines
2.7 KiB
Markdown
58 lines
2.7 KiB
Markdown
# TurboWarp Packager
|
|
|
|
https://packager.turbowarp.org/
|
|
|
|
Converts Scratch projects to standalone files or executable programs. Built using TurboWarp, webpack, and Svelte.
|
|
|
|
## Development
|
|
|
|
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.
|
|
|
|
## Tips for forks
|
|
|
|
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` or `npm 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)
|
|
|
|
## License
|
|
|
|
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"
|