@notehub.md/cli
v0.1.11
Published
CLI tool for building Notehub plugins
Maintainers
Readme
📦 Installation
To use nhp command globally (recommended for frequent use):
# Windows (PowerShell)
npm install -g "@notehub.md/cli"
# macOS / Linux
npm install -g @notehub.md/cliThen you can simply run:
nhp create my-plugin🚀 Quick Start (via npx)
Create a new plugin
npx "@notehub.md/cli" create ext.my-pluginThis will scaffold a complete plugin project with:
manifest.json— Plugin metadatapackage.json— Project configurationtsconfig.json— TypeScript configsrc/index.ts— Plugin entry pointPLUGIN_GUIDE.md— Quick start guidedocs/index.html— Beautiful documentation page
Build your plugin
cd ext.my-plugin
npm install
npx "@notehub.md/cli" buildThis creates ext.my-plugin.nhp — a ready-to-install plugin archive.
📖 Commands
nhp create <id>
Create a new plugin from template.
nhp create ext.my-plugin # Basic creation
nhp create ext.my-plugin --name "My Plugin" # With custom name
nhp create ext.my-plugin --with-styles # Include styles.cssOptions:
-n, --name <name>— Human-readable plugin name-s, --with-styles— Includestyles.csstemplate
nhp build
Build and package the plugin in the current directory.
nhp build # Standard build
nhp build --no-minify # Disable minification
nhp build --sourcemap # Include source maps
nhp build --watch # Watch mode
nhp build -o ./releases # Custom output directoryOptions:
-o, --output <dir>— Output directory (default:.)--no-minify— Disable minification--sourcemap— Generate inline source maps-w, --watch— Watch mode (rebuild on changes)
📚 Documentation
Full documentation for plugin development:
| Language | Link | |----------|------| | 🇬🇧 English | Plugin Developer Guide | | 🇷🇺 Русский | Руководство разработчика плагинов |
🔌 Plugin Example
import { NotehubPlugin, PluginContext } from '@notehub/api';
class MyPlugin extends NotehubPlugin {
async onload(ctx: PluginContext): Promise<void> {
// Register an API
ctx.registerApi('my-plugin:greet', (name: string) => {
return `Hello, ${name}!`;
});
// Subscribe to events
ctx.subscribe('explorer:file-selected', (payload) => {
console.log('File selected:', payload.path);
});
}
}
export default new MyPlugin();📄 License
AGPL-3.0 — See LICENSE
