跳到主要内容

Preparing for release

Overview​

Before distributing your plugin, verify that it is complete, stable, and ready for other users.

Required files​

FileRequiredDescription
config.jsonYesPlugin configuration and metadata
index.htmlYesPlugin entry point
resources/light/icon.pngYesLight theme icon
resources/dark/icon.pngYesDark theme icon
resources/store/icons/For marketplaceStore listing icons

Additional: translations/ folder, additional HTML files, assets.

config.json checklist​

{
"name": "My Plugin",
"guid": "asc.{FFE1F462-1EA2-4391-990D-4CC84940B754}",
"version": "1.0.0",
"variations": [{
"description": "What the plugin does",
"url": "index.html",
"icons": "resources/%theme-type%(light|dark)/icon%scale%(default).%extension%(png)",
"isViewer": false,
"EditorsSupport": ["word"]
}]
}

guid - Must follow asc.{UUID} format. Generate at uuidgenerator.net.

Wrong
{ "guid": "my-plugin-guid" }
Correct
{ "guid": "asc.{FFE1F462-1EA2-4391-990D-4CC84940B754}" }

version - Semantic versioning (MAJOR.MINOR.PATCH). Start at 1.0.0.

variations[].EditorsSupport - Only list tested editors: "word", "cell", "slide", "pdf".

Optional recommended fields:

{ "minVersion": "7.0.0", "help": "https://example.com/plugin-help" }

Icon requirements​

PropertyRequirement
FormatPNG (SVG also supported)
Locationresources/light/ and resources/dark/
Scale variantsicon.png, icon@1.25x.png, icon@1.5x.png, icon@1.75x.png, icon@2x.png
Store iconsresources/store/icons/
Wrong
{ "icons": ["icon.svg"] }
Correct
{ "icons": "resources/%theme-type%(light|dark)/icon%scale%(default).%extension%(png)" }

Code quality​

Remove debug code​

Wrong
window.Asc.plugin.init = function() {
debugger;
console.log('DEBUG: init called', arguments);
console.table(window.Asc.plugin);
};
Correct
window.Asc.plugin.init = function() {
loadData();
};

Plugin must close correctly​

window.Asc.plugin.button = function(id) {
if (id === 0) {
window.Asc.plugin.callCommand(function() { /* apply changes */ });
} else {
window.Asc.plugin.executeCommand("close", "");
}
};

External resources​

  • All external resources must be loaded over HTTPS
  • Avoid unreliable CDNs
  • Bundle critical dependencies locally when possible

Final folder structure​

your-plugin-name/
├── config.json ✓ Required
├── index.html ✓ Required
├── scripts/ ✓ Required (plugin logic)
│ └── code.js
├── resources/ ✓ Required (icons and assets)
│ ├── light/
│ │ └── icon.png
│ ├── dark/
│ │ └── icon.png
│ └── store/ For marketplace submission
│ └── icons/
└── translations/ Optional
├── en.json
└── fr.json

Next steps​

Additional resources​