Плагин предназначен для автоматического формирования документации для javascript — файлов.
Документирование происходит при помощи синтаксиса JSDoc
Установка плагина
Устанавливаем jsdoc, если он еще не установлен. Для проверки наличия jsdoc можно выполнить следующую команду:
jsdoc -v
Для сборки проекта устанавливаем пакет vsce
npm install -g vsce
Далее собираем проект
git clone git://git.appcode.pw/docdash-plugin.git npm install vsce package
Инструкция по установке .vsix пакета тут
Внимание!!! Для корректной работа плагина требуется наличие утилиты jsdoc
npm install -g jsdoc
Основные задачи плагина:
- чтение разметки jsdoc
- передача разметки на сервер
- возможность просмотра документации
Формирование документации для javascript файлов
Оформление полей
Пример простого поля:
/** * оформления простого поля * @type {string} * @default 'simple' * @todo Примечание к полю * @example * var obj = new Simple(); * alert(obj.simple); */ simple: ''
Пример сложного поля:
/** * Настройки панели */ config: { /** * Наименование * @type {number|string} * @default 0 */ name: null }
Оформление функций
Функции для документирования бывают:
- публичные
- приватные — применяется только для проектов extjs
- статичные — применяется только для проектов extjs
- переопределенные — применяется только для проектов extjs
Пример оформления публичной функции в extjs
/** * Test method * @todo потом может быть удален * @param {number} i номер * @param {number|string} val значение * @returns {string} */ start: function (i, val) { var v = { /** * пример */ config: '' }; alert(v); return ''; }
Пример оформления в nodejs
/** * вывод уведомления * @param {string} msg текст уведомления */ exports.info = function (msg) { vscode.window.showInformationMessage(msg); }
Приватная функция в extjs упаковывается в объект privates.
Пример приватной функции в extjs
privates: { /** * остановка */ stop: function () { /** * следующий */ function next() { } next(); /** * событие остановки * @event stop * @property {any} sender текущий объект * @property {string} type Indicates whether the snowball is tightly packed. * @returns {boolean} */ this.fireEvent('stop', this, ''); } }
Статическая функция в extjs упаковывается в объект statics.
statics: { /** * Запуск */ run: function () {} }
Переопределенная функция отмечается атрибутом @override
/** * отрисовка * @override */ onRender: function () { this.callParent(arguments) }
Пример вывода функций в документации.
Оформление событий
Пример оформления события указан для extjs файла, но для других проектов применение аналогично.
/** * событие остановки * @event stop * @property {any} sender текущий объект * @property {string} type Indicates whether the snowball is tightly packed. * @returns {boolean} */ this.fireEvent('stop', this, '');
Оформление событий происходит в момент их вызова и помечается атрибутом @event Передаваемые параметры указываются через атрибут @property
Оформление класса
Данный тип оформления применяется только для extjs файлов
/** * Вспомогательный класс * @class Test.Index * @example * Test.Index.start(); * var v = ''; */ Ext.define('Test.Index', { extend: 'Ext.Panel', ...
Для указания документации, что элемент является классом, нужно добавить атрибут @class
«Шапка» приложения
Для идентификации файла в системе применяется дополнительный синтаксис, который указывается в самом начале файла
/** * @file /api/script-file * @project Test * @author Aleksandr * @todo простоя javascript файл */
, где
- file — путь к файлу относительно корневого каталога
- project — имя проекта
- author — автор
- todo — примечание к файлу
Примеры оформления
Автоматическая генерация документации поддерживает два типа файлов:
- простой файл js
- объект extjs
Пример оформления простого файла:
/** * @file api/script-file * @project Test */ /** * Описание * @return {any} */ function Test() { var v = ''; function start() {} this.start = start; return this; }
Пример оформления ExtJS:
/** * @todo Hello * @file script-file.js * @project test */ /** * Вспомогательный класс * @class Test.Index * @example * Test.Index.start(); * var v = ''; */ Ext.define('Test.Index', { extend: 'Ext.Panel', singleton: true, alternateClassName: ['Index'], xtype: 'index', mixins: ['Base'], requires: ['User'], alias: 'widget.index', /** * Настройки панели */ config: { /** * Наименование * @type {number|string} * @default 0 */ name: null }, /** * Test method * @todo потом может быть удален * @param {number} i номер * @param {number|string} val значение * @returns {string} */ start: function (i, val) { var v = { /** * пример */ config: '' }; alert(v); return ''; }, /** * отрисовка * @override */ onRender: function () { this.callParent(arguments) }, privates: { /** * остановка */ stop: function () { /** * следующий */ function next() { } next(); /** * событие остановки * @event stop * @property {any} sender текущий объект * @property {string} type Indicates whether the snowball is tightly packed. * @returns {boolean} */ this.fireEvent('stop', this, ''); } }, statics: { /** * Запуск */ run: function () {} } });
Оформление package.json
Данные для документирования так же берутся с файла package.json
Список полей:
- name: string — имя проекта
- description: string — описание
- author: string — автор
- version: string — версия приложения
- repository: any — объект хранения
Пример оформления:
{ "name": "my-jsdoc", "version": "1.0.0", "description": "Пакет генерации json-документации из js-файла", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "Aleksandr Krasnov", "license": "ISC", "dependencies": { "md5": "^2.2.1" }, "repository": { "type": "git", "url": "git://git.appcode.pw/my-jsdoc.git" } }
Создание руководства
Для создания руководства нужно создать файл readme.md
Рекомендации по созданию файла:
-
- создавать файл в формате Markdown
- не указывать заголовки выше ### (смотреться будет некрасиво)
Например:
### Описание Плагин для VSCode, который позволяет создавать тестирование для nodejs файлов и затем автоматически их выполнять с выводом отчетов Более подробную документацию смотреть на сайте [appcode.pw](http://www.appcode.pw/?p=615)
Создание инструкции по установке
Для создания инструкции требуется в корневом каталоге создать файл install.md и в нем расписать все шаги
Пример:
Устанавливаем генератор пакетов ``` npm install -g vsce ``` Скачиваем проект с сервера и генерируем файл ``` git clone git://git.appcode.pw/autotest-plugin.git npm install vsce package ``` Установить файл с расширением [*.vsix](https://code.visualstudio.com/docs/editor/extension-gallery#_install-from-a-vsix)
Пример вывода
Дополнительные ссылки:
Описание модуля
В любой папке можно создать файл readmemodule.md написать в нем описание этого модуля.