@middleware.io/sourcemap-uploader
v0.1.9
Published
CLI to upload Javascript sourcemaps and iOS dSYM files to Middleware
Readme
Source Maps & dSYM Uploader
Upload Javascript sourcemaps and iOS/tvOS/macOS dSYM files to Middleware RUM for stack-trace symbolication.
Uses the same SAS URL + Azure BlockBlob PUT protocol as the Android mapping.txt Gradle plugin.
npm i -D @middleware.io/sourcemap-uploader
# or
npx @middleware.io/sourcemap-uploader …Upload Javascript sourcemaps
npx @middleware.io/sourcemap-uploader upload \
--apiKey=<mw_rum_api_key> \
--path="/path/to/sourcemaps"upload options
| Flag | Description |
|------|-------------|
| -k, --apiKey | (Required) Middleware RUM API key (or MW_API_KEY) |
| -av, --appVersion | Deploy / app version (must match RUM app.version) |
| -p, --path | Directory with .js.map / .css.map (default .) |
| -bu, --backendUrl | Self-hosted / regional …/api/v1/rum/getSasUrl |
| -bp, --basePath | Optional object-storage prefix |
| -d, --deleteAfterUpload | Delete .map files after upload |
Examples
sourcemap-uploader upload -k your_api_key
sourcemap-uploader upload -k your_api_key -av 1.0.0
sourcemap-uploader upload -k your_api_key -p ./dist/sourcemaps
sourcemap-uploader upload -k your_api_key -bu https://your-backend-url.com/api/v1/rum/getSasUrl{
"scripts": {
"upload-sourcemaps": "sourcemap-uploader upload --apiKey=$MW_API_KEY --path=./dist"
}
}Upload iOS dSYM files
npx @middleware.io/sourcemap-uploader upload-dsym \
--apiKey=<mw_rum_api_key> \
--appVersion=1.0.0 \
--path="/path/to/YourApp.app.dSYM"--path may be:
- a
.dSYMbundle directory - a
.dSYM.ziparchive - a folder of symbols (e.g.
YourApp.xcarchive/dSYMs)
.dSYM directories are zipped automatically (ditto on macOS, zip elsewhere) before upload.
upload-dsym options
| Flag | Description |
|------|-------------|
| -k, --apiKey | (Required) Middleware RUM API key (or MW_API_KEY) |
| -av, --appVersion | App version matching RUM app.version (or MW_APP_VERSION) |
| -p, --path | (Required) .dSYM / .dSYM.zip / directory |
| -bu, --backendUrl | Override SAS endpoint |
| -bp, --basePath | Optional object-storage prefix |
| -d, --deleteAfterUpload | Delete source .dSYM.zip after success |
Xcode Run Script
export MW_API_KEY="<your_rum_account_key>"
npx --yes @middleware.io/sourcemap-uploader upload-dsym \
-k "$MW_API_KEY" \
-av "${MARKETING_VERSION}" \
-p "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"The middleware-ios sample app uses Tools/dsym-upload/xcode-upload-dsym.sh, which wraps this CLI.
Align versions with the iOS SDK
MiddlewareRumBuilder()
.globalAttributes(["app.version": "1.0.0"]) // must match --appVersion
.build()Webpack plugin
const MiddlewareWebpackPlugin = require("@middleware.io/sourcemap-uploader/dist/webpack-plugin").default;
module.exports = {
plugins: [
new MiddlewareWebpackPlugin(apiKey, appVersion, path, basePath, backendUrl, deleteAfterUpload),
],
};Vite plugin
import { defineConfig } from "vite";
import middlewareVitePlugin from "@middleware.io/sourcemap-uploader/dist/vite-plugin";
export default defineConfig({
plugins: [
middlewareVitePlugin({
apiKey: process.env.MW_API_KEY || "your_api_key",
appVersion: "1.0.0",
basePath: "",
backendUrl: undefined,
deleteAfterUpload: false,
}),
],
});Local development
npm install
npm run build
node dist/index.js upload …
node dist/index.js upload-dsym -k "$MW_API_KEY" -av 1.0.0 -p ./MyApp.app.dSYMLicense
Apache 2.0
