mirror of
https://github.com/unraid/api.git
synced 2026-01-03 23:19:54 -06:00
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit • New Features - Enhanced the login experience with improved session management and two-factor authentication. - Introduced a comprehensive README for the Unraid Plugin Builder, detailing development workflows and commands. • Chores - Streamlined build, packaging, and deployment processes with updated dependency and environment configurations. - Updated Docker configurations to support pnpm as the package manager. - Added new environment variables for better configuration management. - Introduced new scripts for improved build and packaging processes. • Tests - Removed outdated test cases and simplified test setups. • Refactor - Modernized internal code structure and asynchronous handling for improved overall performance. - Transitioned imports from lodash to lodash-es for better module handling. - Updated environment variable management and configuration settings. - Enhanced the build script for improved deployment processes. - Updated the notification handling structure to improve efficiency. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
124 lines
2.9 KiB
Markdown
124 lines
2.9 KiB
Markdown
# Unraid Plugin Builder
|
|
|
|
Tool for building and testing Unraid plugins locally as well as packaging them for deployment.
|
|
|
|
## Development Workflow
|
|
|
|
### 1. Watch for Changes
|
|
|
|
The watch command will automatically sync changes from the API, UI components, and web app into the plugin source:
|
|
|
|
```bash
|
|
# Start watching all components
|
|
pnpm run watch:all
|
|
|
|
# Or run individual watchers:
|
|
pnpm run api:watch # Watch API changes
|
|
pnpm run ui:watch # Watch Unraid UI component changes
|
|
pnpm run wc:watch # Watch web component changes
|
|
```
|
|
|
|
This will copy:
|
|
|
|
- API files to `./source/dynamix.unraid.net/usr/local/unraid-api`
|
|
- UI components to `./source/dynamix.unraid.net/usr/local/emhttp/plugins/dynamix.my.servers/unraid-components`
|
|
- Web components to the same UI directory
|
|
|
|
### 2. Build the Plugin
|
|
|
|
Once your changes are ready, build the plugin package:
|
|
|
|
```bash
|
|
# Build using Docker - on non-Linux systems
|
|
pnpm run docker:build-and-run
|
|
|
|
# Or build with the build script
|
|
pnpm run build:validate
|
|
```
|
|
|
|
This will create the plugin files in `./deploy/release/`
|
|
|
|
### 3. Serve and Install
|
|
|
|
Start a local HTTP server to serve the plugin files:
|
|
|
|
```bash
|
|
# Serve the plugin files
|
|
pnpm run http-server
|
|
```
|
|
|
|
Then install the plugin on your Unraid development machine by visiting:
|
|
|
|
`http://SERVER_NAME.local/Plugins`
|
|
|
|
Then paste the following URL into the Unraid Plugins page:
|
|
|
|
`http://YOUR_LOCAL_DEV_MACHINE_IP:8080/plugins/local/dynamix.unraid.net.plg`
|
|
|
|
Replace `SERVER_NAME` with your development machine's hostname.
|
|
|
|
## Development Tips
|
|
|
|
- Run watchers in a separate terminal while developing
|
|
- The http-server includes CORS headers for local development
|
|
- Check the Unraid system log for plugin installation issues
|
|
|
|
## Environment Setup
|
|
|
|
1. Initialize environment:
|
|
|
|
```bash
|
|
pnpm run env:init
|
|
```
|
|
|
|
2. Validate environment:
|
|
|
|
```bash
|
|
pnpm run env:validate
|
|
```
|
|
|
|
## Available Commands
|
|
|
|
### Build Commands
|
|
|
|
- `build` - Build the plugin package
|
|
- `build:validate` - Build with environment validation
|
|
- `docker:build` - Build the Docker container
|
|
- `docker:run` - Run the builder in Docker
|
|
- `docker:build-and-run` - Build and run in Docker
|
|
|
|
### Watch Commands
|
|
|
|
- `watch:all` - Watch all component changes
|
|
- `api:watch` - Watch API changes
|
|
- `ui:watch` - Watch UI component changes
|
|
- `wc:watch` - Watch web component changes
|
|
|
|
### Server Commands
|
|
|
|
- `http-server` - Serve the plugin files locally
|
|
|
|
### Environment Commands
|
|
|
|
- `env:init` - Create initial .env file
|
|
- `env:validate` - Validate environment setup
|
|
- `env:clean` - Remove .env file
|
|
|
|
## Troubleshooting
|
|
|
|
1. **Watch not updating files**
|
|
|
|
- Check that source directories exist
|
|
- Verify file permissions
|
|
|
|
2. **Build failures**
|
|
|
|
- Ensure .env file exists
|
|
- Check Docker setup if using containerized build
|
|
- Verify source files are present
|
|
|
|
3. **Installation issues**
|
|
- Confirm http-server is running
|
|
- Check your local IP is correct
|
|
- Verify plugin file permissions
|