/developer.sketchapp.com

Documentation for Sketch's plugin architecture

Primary LanguageHTML

developer.sketchapp.com

This repository powers the development site for Sketch, that lives at developer.sketchapp.com.

Contribute!

We've made this repository public so you can contribute to it. If you find a typo, or an error, or want to improve the content, feel free to send us a pull request. Also, if there's anything you'd like to see covered or documented, file an issue and we'll do it for you.

We use Jekyll as our content backend, so make sure to read their docs if you need help understanding how the system works.

Setup

If you want to get the site working locally, you'll need to have node and bundler installed. On OS X you'll also need to have Xcode's command line tools installed (xcode-select --install).

Once you have them, run this:

sudo npm install --global gulp
bundle install --path _vendor
npm install

and then run

gulp

to start the server and open a browser automatically.

Note: you may find issues with nokogiri when running bundle install. If that's the case, try the following:

  bundle config build.nokogiri --use-system-libraries --with-xml2-include=/usr/include/libxml2/

If that doesn't work, check the troubleshooting tips on Nokogiri's page

Generated Sections

As well as the normal Jekyll processing, there are some areas of the site where the source files are themselves generated by other tools. In particular:

  • The API documentation is generated using esdoc, from the SketchAPI repo. This process can be triggered using the _external/build-api-docs.sh script, and will replace the contents of the _generated-api folder.
  • The plugin example documentation is generated using docco. This process can be triggered using the _external/build-plugin-examples.sh script, and will replace the contents of the _generated-plugins folder.

Both of these scripts have some dependencies, and neither are really set up to be run by other people (nor should it be necessary to do so). It's worth knowing that they are there however! Don't waste time hand-editing this generated content, as it will just get replaced next time the scripts are run. Instead, file pull-requests to change the things that the scripts generate the content from - eg the SketchAPI repo or the repos for the example plugins (all of which are open-source).