Как создавать, упаковывать и разворачивать решения для SharePoint с помощью typescript, vscode, gulp или библиотек pnp.
Исходники - https://github.com/gandjustas/spug-oct-2016-demo
1. Разработка для SharePoint
в облаке и на земле
Станислав Выщепан
Office Dev MVP
stanislav.v@vnextsoft.ru
http://blob.gandjustas.ru
2. Два типа решений на SharePoint
• Пользовательские
• Накликали списки в браузере
• Сделали Workflow в SharePoint Designer
• Сделали формочки в InfoPath
• Внести изменения – 5 минут
• Программистские
• Все артефакты в WSP
• Серверный код
• Тестирование
• Болезненная установка
• Внести изменения – 1 день
3. Как хотелось бы
1. «Накликать» большую часть решения в браузере
2. Дописать код, там где нельзя накликать
3. Быстро обновлять код в SharePoint без установки WSPApp
4. Сохранить все в виде пакета
5. Перенести на другую ферму или тенант
6. Все должно работать на земле и в облаке
Фантастика?
5. «Накликанное» решение
• Что есть
• Список запросов на отпуск или отгул
• Рабочий процесс согласования
• Что улучшить
• Автозаполнение поля Название
• Запретить изменять флажок «Согласовано?»
• Не открывать на редактирование согласованные элементы
7. Кастомизация формы на TypeScript
• Разработка в VSCode
• nodenpm для инструментов, библиотек и типов
• gulp для сборки
• spsave для сохранения файлов в SharePoint
• pnp-powershell для изменений на сервере
9. Как перенести на другую ферму
• Команда PnP разработала свои шаблоны сайтов и пакеты
• Вместо WSPCAML
• Шаблон создается на XML
• Нашли критический недостаток
• Get-SPOProvisioningTemplate – сохранить шаблон
• Apply-SPOProvisioningTemplate – применить шаблон
11. Что получилось
1. «Накликать» большую часть решения в браузере
2. Дописать код, там где нельзя накликать
3. Быстро обновлять код в SharePoint без установки WSPApp
4. Сохранить все в виде пакета
5. Перенести на другую ферму или тенант
6. Почти все работает на земле и в облаке
12. О чем надо помнить
• Не все API в облаке работают на земле
• В пакет попадают учетные записи разработческой фермы или
тенента
• В большинстве случаев можно удалить
• Если удалить нельзя, то
• Сделать учетки параметрами шаблона
• Сделать Extensibility Handler