Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    serverless-cljs-pluginpublic

    serverless-cljs-plugin

    npm version

    A Serverless plugin which uses lein/cljs-lambda (or, optionally Lumo) to package services written in Clojurescript.

    JVM Template

    $ lein new serverless-cljs example
    example$ lein deps

    Will generate an example directory containing a minimal serverless.yml and project.clj demonstrating this plugin's functionality.

    Guide to using the plugin on the JVM.

    Usage

    functions:
      echo:
        cljs: example.core/echo
     
    plugins:
     - serverless-cljs-plugin

    With the above serverless.yml, serverless deploy will create a zip file containing your functions. Doing this is similar to setting the Serverless packaging.artifact option - cljs-lambda is responsible for the zip contents, and Serverless includes/excludes will be skipped (cljs-lambda offers equivalent functionality).

    In the example above, there needn't be a corresponding entry for echo in project.clj.

    Lumo

    Alternatively you can use the Lumo compiler.

    In order to enable it, pass the --lumo switch to either deploy or package:

    $ serverless deploy --lumo

    Or add the following to your serverless.yml:

    custom:
      cljsCompiler: lumo
    • Compiler options

      The source paths and compiler options will be read from the optional file serverless-lumo.edn. Below are the defaults:

      {:source-paths ["src"] 
       :compiler     {:output-to     "out/lambda.js" 
                      :output-dir    "out" 
                      :source-map    false ;; because of a bug in lumo <= 1.8.0
                      :target        :nodejs 
                      :optimizations :none}} 
    • Lumo Configuration

      As an alternative to cljsCompiler: lumo, cljsCompiler.lumo may be specified as a map of options. These options are passed directly to the lumo process. Currently supported:

      custom:
        cljsCompiler:
          lumo:
            dependencies:
              - andare:0.7.0
            classpath:
              - /tmp/
            localRepo: /xyz
            cache: /cache | none
            index: true | false
            exitOnWarning: true | false

      Note: caching is always on unless you specify "none" in the config.

    • The index.js file

      The index option will materialize a custom index.js in :output-dir's parent folder. This file should be thought as managed by serverless-cljs-plugin and it is necessary for some plugin (e.g.: serverless-offline) to work properly.

      Note: with the default compiler options, index.js will be saved in the project root, overwriting without warning.

    • Exit on compilation warnings

      Lumo generates warnings such as WARNING: Use of undeclared Var to signal failures. You can tune the ones you want to see by using the :warnings compiler option in serverless-lumo.edn, but by default the lumo process emits the warnings, does not throw and returns 0. This means that serverless will keep going in presence of warnings.

    License

    serverless-cljs-plugin is free and unencumbered public domain software. For more information, see http://unlicense.org/ or the accompanying LICENSE file.

    install

    npm i serverless-cljs-plugin

    Downloadsweekly downloads

    24

    version

    0.2.2

    license

    Unlicense

    repository

    githubgithub

    last publish

    collaborators

    • avatar