|
|
@@ -0,0 +1,122 @@
|
|
|
+# Development Guide
|
|
|
+
|
|
|
+This document describes how to use the package manager (npm) for development tasks.
|
|
|
+
|
|
|
+## Prerequisites
|
|
|
+
|
|
|
+- Node.js 14.0.0 or higher
|
|
|
+- npm (comes with Node.js)
|
|
|
+
|
|
|
+## Getting Started
|
|
|
+
|
|
|
+Install development dependencies:
|
|
|
+
|
|
|
+```bash
|
|
|
+npm install
|
|
|
+```
|
|
|
+
|
|
|
+## Available Scripts
|
|
|
+
|
|
|
+### Linting
|
|
|
+
|
|
|
+Check code for potential issues:
|
|
|
+
|
|
|
+```bash
|
|
|
+npm run lint
|
|
|
+```
|
|
|
+
|
|
|
+Automatically fix linting issues where possible:
|
|
|
+
|
|
|
+```bash
|
|
|
+npm run lint:fix
|
|
|
+```
|
|
|
+
|
|
|
+### Code Formatting
|
|
|
+
|
|
|
+Check code formatting (JavaScript files only):
|
|
|
+
|
|
|
+```bash
|
|
|
+npm run format:check
|
|
|
+```
|
|
|
+
|
|
|
+Format JavaScript files:
|
|
|
+
|
|
|
+```bash
|
|
|
+npm run format
|
|
|
+```
|
|
|
+
|
|
|
+> **Note**: The existing codebase uses its original formatting style. Prettier and ESLint are provided as optional tools for new code or improvements.
|
|
|
+
|
|
|
+### Validation
|
|
|
+
|
|
|
+Run all checks (formatting and linting):
|
|
|
+
|
|
|
+```bash
|
|
|
+npm run validate
|
|
|
+```
|
|
|
+
|
|
|
+### Testing
|
|
|
+
|
|
|
+Currently, there are no automated tests configured:
|
|
|
+
|
|
|
+```bash
|
|
|
+npm run test
|
|
|
+```
|
|
|
+
|
|
|
+### Docker
|
|
|
+
|
|
|
+Build Docker images:
|
|
|
+
|
|
|
+```bash
|
|
|
+npm run docker:build # Standard Debian-based image
|
|
|
+npm run docker:build-alpine # Alpine-based image
|
|
|
+```
|
|
|
+
|
|
|
+## Development Tools
|
|
|
+
|
|
|
+The package manager setup includes:
|
|
|
+
|
|
|
+- **ESLint**: JavaScript linting tool to catch common errors
|
|
|
+- **Prettier**: Code formatting tool to maintain consistent style
|
|
|
+
|
|
|
+These tools are configured but non-intrusive to the existing codebase.
|
|
|
+
|
|
|
+## Project Structure
|
|
|
+
|
|
|
+```
|
|
|
+.
|
|
|
+├── speedtest.js # Main speedtest library
|
|
|
+├── speedtest_worker.js # Web Worker for speed testing
|
|
|
+├── index.html # Default UI
|
|
|
+├── backend/ # PHP backend files
|
|
|
+├── examples/ # Example implementations
|
|
|
+├── results/ # Results/telemetry handling
|
|
|
+├── docker/ # Docker-related files
|
|
|
+└── package.json # npm package configuration
|
|
|
+```
|
|
|
+
|
|
|
+## Why Use a Package Manager?
|
|
|
+
|
|
|
+The package manager provides several benefits:
|
|
|
+
|
|
|
+1. **Standardized tooling**: Common commands across different environments
|
|
|
+2. **Development dependencies**: Easy installation of linting and formatting tools
|
|
|
+3. **Project metadata**: Version, description, and licensing information
|
|
|
+4. **Future extensibility**: Foundation for adding build tools, tests, or bundlers if needed
|
|
|
+5. **npm distribution**: Makes the library easy to use in other Node.js projects
|
|
|
+
|
|
|
+## Contributing
|
|
|
+
|
|
|
+When making changes:
|
|
|
+
|
|
|
+1. Run `npm run lint` to check for potential issues
|
|
|
+2. Consider running `npm run format` on new files for consistency
|
|
|
+3. Test your changes manually in a browser
|
|
|
+4. For PHP backend changes, test with the appropriate server setup
|
|
|
+
|
|
|
+## Notes
|
|
|
+
|
|
|
+- The core library has **no runtime dependencies** - it's pure vanilla JavaScript
|
|
|
+- Development dependencies (ESLint, Prettier) are only needed for development
|
|
|
+- The library can still be used standalone without npm (just include the JS files)
|
|
|
+- npm setup is completely optional and doesn't change how the library is deployed
|