Sketch Plugin Boilerplate
  • Get Started
  • Documentation
  • Tutorials
  • Github

Basic

  • Communication
  • Utils

    • Core
    • WebView
    • Fetch

    Setup

    • Webpack
    • ESLint
    • Jest

    ESLint

    Plugin

    Uses semistandard. On top of that defines all globals for exposed sketch classes and some other globals available through Cocoascript environment.

    Also disables eqeqeq rule, as it is not really feasable in Cocoascript, due to the various different types you are dealing with (NSString == string, but NSString !== string).

    module.exports = {
      extends: ['semistandard'],
      globals: {
        NSHTTPCookieStorage: false,
        NSURLSessionConfiguration: false,
        NSURLSession: false,
        __mocha__: false,
        coscript: false,
        MSDocument: false,
        MSDocumentWindow: false,
        MSPage: false,
        MSSymbolInstance: false,
        MSSymbolMaster: false,
        MSTextLayer: false,
        NSAlert: false,
        NSApp: false,
        NSClassFromString: false,
        NSColor: false,
        NSData: false,
        NSDocument: false,
        NSDocumentController: false,
        NSFileManager: false,
        NSImage: false,
        NSJSONSerialization: false,
        NSMakeRect: false,
        NSMutableData: false,
        NSMutableURLRequest: false,
        NSSaveOperation: false,
        NSString: false,
        NSTextField: false,
        NSTextView: false,
        NSThread: false,
        NSTitledWindowMask: false,
        NSURL: false,
        NSURLRequest: false,
        NSUTF8StringEncoding: false,
        NSUserDefaults: false,
        NSView: false,
        NSViewHeightSizable: false,
        NSViewWidthSizable: false,
        NSWindow: false,
        NSWorkspace: false,
        WKWebView: false,
        WKWebViewConfiguration: false,
        Mocha: false,
        log: false,
        NSBackingStoreBuffered: false,
        NSPanel: false,
        NSResizableWindowMask: false,
        NSWindowStyleMaskClosable: false,
        SPBWebViewMessageHandler: false,
        SPBWebViewMessageUtils: false
      },
      parser: 'babel-eslint',
      plugins: [
        'no-unused-vars-rest'
      ],
      rules: {
        semi: [2, "never"],
        "eol-last": 0,
        "space-before-function-paren": ["error", "never"],
        eqeqeq: [
          0
        ]
      }
    }
    

    Webviews

    Standard react app eslint rule set.

    module.exports = {
      plugins: ['react'],
      extends: [
        'semistandard',
        'plugin:react/recommended'
      ],
      env: {
        es6: true
      },
      parser: 'babel-eslint',
      parserOptions: {
        sourceType: 'module',
        ecmaVersion: 6,
        ecmaFeatures: {
          impliedStrict: true,
          experimentalObjectRestSpread: true,
          jsx: true
        }
      },
      rules: {
        semi: [2, "never"],
        "eol-last": 0,
        "space-before-function-paren": ["error", "never"],
        "react/prop-types": 0
      }
    }