serverless-heaven / serverless-webpack

Serverless plugin to bundle your lambdas with Webpack

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support `serverless run`

kbrandwijk opened this issue · comments

This is a Feature Proposal

Description

For feature proposals:

I recently added the same feature to serverless-plugin-typescript (for reference):
https://github.com/graphcool/serverless-plugin-typescript/blob/master/src/index.ts#L31-L37

Hi @kbrandwijk . Great idea 🙌

This would indeed be a great addition. Having the hook implemented would be quite easy. What I'm thinking about is, if a watch option (like the one for sls-offline or sls invoke local) would be possible in the run scenario. I will dig into this a bit - as Docker support was added too recently by the possibility to enable watch polling instead of filesystem events with a switch, that might be possible.

I haven't got the watching part working with serverless-plugin-typescript in combination with serverless run, so any ideas we can share would benefit both plugins.

@kbrandwijk Could you check if my PR works as expected? On my Windows system I get up to where the functions are loaded into the emulator, but after that it breaks (Ubuntu shell).
There is a known issue/bug that the event gateway does not work in Windows. I have to check it on my native Ubuntu.

I think I can get the watch mode running - in a similar way as the local invoke does, but just with respawning the run command on a source change. But I have to add and check that on my Ubuntu.

I'm also on Windows. I have that same issue. I just start sle manually, then run sls run in a different console and it picks up the already running emulator. I'll check the PR version tomorrow.

I checked the contents of the emulator storage and they contain the compiled sources which looks ok so far. Starting sle separately did the trick, thanks.
However, the node modules are not copied -> because I did not invoke the packaging. As the event gateway is completely "external" for the sources, I have to add that to the PR.

Added it - now the needed node modules are correctly copied to the emulator.

The command seems to work for me now.

I played a bit with getting watch working. I managed to let webpack watch the directory, and it got triggered correctly, but it seems that the run command locks the directory. I have to check if I somehow can get arount the deletion of the service directory for the run command. Then it should work.... stand by, I'm working on it.

Serverless: Sources changed.

  Error --------------------------------------------------

  EBUSY: resource busy or locked, rmdir 'C:\Projects\serverless\test\babel-dynam
ically-entries\.webpack\service'

I solved that problem now and the recompile is suceesfully triggered, but as soon as it tries to register the functions again, SLS fails with:

 Serverless     Functions loading...
 Serverless     Functions loaded successfully in your current "serverless run" s
ession.

  Error --------------------------------------------------

  Failed to configure the Event Gateway. Failed to register the function babel-d
ynamically-entries-example-first due the error: Function "babel-dynamically-entr
ies-example-first" already registered.

I have to find out, how to unregister functions from the gateway or just deploy them again.

I got the watch option working correctly now and will update the PR after some cleanup!

Then you can use serverless run and serverless run --watch

PR has been updated. Could you please try with both variants?

Released with 4.1.0