Transpiles ES6+ JavaScript to ES5 for browser compatibility in MikoPBX projects.
Use the pre-built container from GitHub Container Registry:
docker pull ghcr.io/mikopbx/babel-compiler:latestdocker run --rm -v "/path/to/project:/project" ghcr.io/mikopbx/babel-compiler:latest "/project/path/to/file.js"docker run --rm -v "/Users/nb/PhpstormProjects/mikopbx/Core:/project" \
ghcr.io/mikopbx/babel-compiler:latest \
"/project/sites/admin-cabinet/assets/js/src/main/form.js"docker run --rm -v "/Users/nb/PhpstormProjects/mikopbx/Extensions:/project" \
ghcr.io/mikopbx/babel-compiler:latest \
"/project/ModuleExample/public/assets/js/src/module-example-index.js"The compiler automatically determines output paths based on input:
| Input Pattern | Output Directory |
|---|---|
Core/sites/admin-cabinet/assets/js/src/**/*.js |
js/pbx/ (same subfolder structure) |
Extensions/.../public/assets/js/src/*.js |
Parent js/ directory |
*/sites/admin-cabinet/assets/js/src/**/*.js |
js/pbx/ (same subfolder structure) |
{
"presets": [["airbnb", {
"targets": {
"chrome": 50,
"ie": 11,
"firefox": 45
}
}]]
}- Chrome 50+
- Internet Explorer 11
- Firefox 45+
If you need to build the container locally:
cd babel
docker build -t mikopbx-babel-compiler .docker run --rm -v "/path/to/project:/project" mikopbx-babel-compiler "/project/path/to/file.js"If you prefer not to use Docker:
cd babel
npm install
node babel-compile.js /path/to/file.jsOr use Babel CLI directly:
./node_modules/.bin/babel "$INPUT_FILE" --out-dir "$OUTPUT_DIR" --source-maps inline --presets airbnb- Go to Settings > Tools > File Watchers
- Add new watcher with:
- Program:
docker - Arguments:
run --rm -v "$ProjectFileDir$:/project" ghcr.io/mikopbx/babel-compiler:latest "/project/$FilePath$" - Working directory:
$ProjectFileDir$ - Output paths: Leave empty (auto-detected)
- Program:
Add to .vscode/tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "Babel Compile",
"type": "shell",
"command": "docker run --rm -v \"${workspaceFolder}:/project\" ghcr.io/mikopbx/babel-compiler:latest \"/project/${relativeFile}\""
}
]
}| File | Description |
|---|---|
Dockerfile |
Docker image definition |
docker-entrypoint.sh |
Container entry point script |
babel-compile.js |
Node.js compilation script |
babel.config.json |
Babel configuration |
package.json |
Node.js dependencies |