Giter Site home page Giter Site logo

serverless-scriptable-plugin's Introduction

Build Status

What's the plugins for?

This plugin add script support to Serverless 1.0 which enables you to customize Serverless behavior without writing a plugin.

It allows you to run nodejs script in any build stage.

Quick Start

  1. Install

     npm install --save-dev serverless-scriptable-plugin
    
  2. Add to Serverless config

     plugins:
       - serverless-scriptable-plugin
    
     custom:
       scriptHooks:
         before:deploy:createDeploymentArtifacts: build/package.js
    

    Example File Structure

       Project Root 
           |___serverless.yml
           |___serverless.env.yml
           |___build
               |___package.js
    

Example

  1. Customized package behavior

    Currently, Serverless 1.0 package everything under service folder without any extra process. There are serveral problems:

    • Not easy for transcompiling, e.g. using Babel/Typescript to transcompile code
    • The default package is big because it packaged dev dependencies

    In babel-then-package-to-zip example, serverless will run customized package process: transcompile and package to zip

    exec("Clean Up Environment", "rm -rf ._target lib *.zip && mkdir -p lib");
    exec("Compiling", "node_modules/.bin/babel --presets es2015,react --plugins transform-async-to-generator,transform-runtime,transform-class-properties,transform-flow-strip-types -d lib/ src/");
       
    const packageBuilder = new PackageBuilder(servicePath);
    packageBuilder.addFolder("lib");
    
    //I only tested npm 3, not sure if npm 2 works or not.
    packageBuilder.addDependenciesExclude(["node_modules/aws-sdk"]);
       
    packageBuilder.writeToFileSync(artifactFilePath);
  2. Run any command as a hook script

    It's possible to run any command as the hook script, e.g. use the following command to zip the required folders

     plugins:
       - serverless-scriptable-plugin
    
     custom:
       scriptHooks:
         before:deploy:createDeploymentArtifacts: zip -q -r .serverless/package.zip src node_modules
     
     service: service-name
     package:
       artifact: .serverless/package.zip
    

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.