Publishing Your Tool
Once you've tested your tool locally and are ready to share it with the community, follow this guide to publish it to npm and submit it to the ToolBox registry.
Prerequisites
Before publishing, ensure your tool:
- ✅ Builds successfully without errors
- ✅ Has been tested in local debug mode
- ✅ Follows the Tool Development Guide
- ✅ Has complete
package.jsonmetadata - ✅ Has appropriate license (open source recommended)
- ✅ Has documentation (README.md)
Step 1: Prepare Your Package
Update package.json
Ensure all required fields are present:
{
"name": "@your-org/your-tool-name",
"version": "1.0.0",
"displayName": "Your Tool Name",
"description": "Clear, concise description of what your tool does",
"main": "index.html",
"author": "Your Name <your.email@example.com>",
"license": "MIT",
"keywords": [
"powerplatform",
"dataverse",
"toolbox",
"power-apps"
],
"repository": {
"type": "git",
"url": "https://github.com/yourusername/your-tool"
},
"homepage": "https://github.com/yourusername/your-tool#readme",
"bugs": {
"url": "https://github.com/yourusername/your-tool/issues"
}
}
- Name
name- Type
- string
- Description
Package name (use scoped naming:
@org/tool-name)
- Name
displayName- Type
- string
- Description
Human-readable name shown in ToolBox
- Name
description- Type
- string
- Description
Brief description (1-2 sentences)
- Name
main- Type
- string
- Description
Entry point file (usually
index.html)
- Name
keywords- Type
- array
- Description
Tags for discoverability (include
powerplatform,dataverse,toolbox)
- Name
repository- Type
- object
- Description
GitHub repository URL for source code review
Step 2: Build Your Tool
Build your tool to create the distributable files:
npm run build
Verify that your dist/ directory contains:
index.html(entry point)- All compiled JavaScript/CSS files
- Any required assets (images, icons, etc.)
Step 3: Finalize Package
Run the finalization script to prepare your package:
npm run finalize-package
This ensures your package is ready for npm with correct file structure and dependencies.
Step 4: Publish to npm
First-Time Setup
If you haven't published to npm before:
# Create npm account (if needed)
npm login
Publish Your Package
# For scoped packages
npm publish --access public
# For unscoped packages
npm publish
Scoped packages (e.g., @myorg/tool-name) require the --access public flag to be publicly accessible.
Verify Publication
Check that your package is live:
npm view @your-org/your-tool-name
Or visit: https://www.npmjs.com/package/@your-org/your-tool-name
Step 5: Test Published Version
Before submitting to the registry, test your published npm package:
- Open Power Platform Tool Box
- Navigate to Debug section
- In "Install from npm" section:
- Enter your package name:
@your-org/your-tool-name - Click Install
- Enter your package name:
- Test thoroughly to ensure everything works as expected
Step 6: Submit to ToolBox Registry
Once your tool is working correctly from npm:
Fill Out the Tool Submission Form
Visit the Tool Submission Form and provide:
- Name
npm Package Name- Type
- string
- Description
Your published npm package name (e.g.,
@your-org/tool-name)
- Name
Display Name- Type
- string
- Description
How your tool appears in ToolBox
- Name
Description- Type
- string
- Description
Brief description of functionality (markdown supported)
- Name
Author Name/Organization- Type
- string
- Description
Your name or organization
- Name
GitHub Repository URL- Type
- string
- Description
Link to source code for security review
- Name
Homepage/Documentation URL- Type
- string
- Description
Optional link to documentation or homepage
- Name
Tags/Categories- Type
- array
- Description
Select from: Data Management, Development, Utilities, Reporting, Administration
Automated Validation
After submission, automated checks will validate:
- ✅ npm package exists and is accessible
- ✅ Package follows naming conventions
- ✅ License is appropriate (open source preferred)
- ✅ No known security vulnerabilities
- ✅ Package structure is correct
Manual Review
Maintainers will review your submission for:
- Security (no malicious code)
- Quality (follows guidelines)
- Functionality (works as described)
- Documentation (README is clear)
Review typically takes 48-72 hours.
Versioning and Updates
Semantic Versioning
Follow Semantic Versioning:
-
Patch (1.0.
X): Bug fixesnpm version patch -
Minor (1.
X.0): New features (backward compatible)npm version minor -
Major (
X.0.0): Breaking changesnpm version major
Publishing Updates
# Update version
npm version patch # or minor, or major
# Build
npm run build
# Publish
npm publish --access public
The ToolBox registry automatically syncs with npm. Users will receive update notifications when new versions are published.
Best Practices
Before Publishing
- ✅ Test thoroughly in debug mode
- ✅ Write comprehensive README with usage instructions
- ✅ Include screenshots or demo GIFs
- ✅ Document all features and limitations
- ✅ Add proper error handling
- ✅ Follow UI/UX guidelines for consistency
After Publishing
- ✅ Monitor GitHub issues for bug reports
- ✅ Respond to user feedback promptly
- ✅ Keep dependencies up to date
- ✅ Maintain a CHANGELOG
- ✅ Provide migration guides for breaking changes
- ✅ Consider semantic versioning strictly
Security
- ⚠️ Never include hardcoded credentials or API keys
- ⚠️ Validate all user inputs
- ⚠️ Use HTTPS for external API calls
- ⚠️ Don't access sensitive system resources
- ⚠️ Follow principle of least privilege
Troubleshooting
npm publish fails
Error: You must be logged in to publish packages.
Solution:
npm login
# Re-try publish
Error: Package name too similar to existing package.
Solution: Choose a more unique name or use scoped naming: @your-org/tool-name
Tool not appearing in registry
Check:
- Ensure automated validation passed
- Check submission issue for maintainer feedback
- Verify npm package is publicly accessible
- Confirm package.json has all required fields
Users reporting issues
Steps:
- Reproduce the issue in debug mode
- Fix in your local version
- Update version number
- Publish update to npm
- Notify users in the issue thread
Next Steps
Support
Need help publishing your tool?
- GitHub Discussions: Ask the community
- Issues: Report problems
- Documentation: Full tool dev guide