Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build shared .ts files #87

Open
joshua-holly89 opened this issue Feb 16, 2018 · 3 comments
Open

Build shared .ts files #87

joshua-holly89 opened this issue Feb 16, 2018 · 3 comments

Comments

@joshua-holly89
Copy link

Hi!

I have shared code in my project, e.g. a folder structure like this:
/shared
shared1.ts
shared2.ts
/microservice1
/node_modules
package.json
microservice1.ts
tsconfig.json
serverless.yml
/microservice2
/node_modules
package.json
microservice2.ts
tsconfig.json
serverless.yml

According to what I read it is not possible to pass a YAML file via command line to serverless deploy / offline start. So the current working directory has to be inside "/microservice1" or "/microservice2".

This results in not being able to build with error:
'File '...shared1.ts' is not under 'rootDir' '...microservice1'. 'rootDir' is expected to contain all source files.',

I also can not set rootDir in tsconfig.json to "../" since it is overwritten with default './'. So the only work around I see is to work with symlinks which is IMHO a little hacky.

So is there a possibility to build these shared files?

@andrewoh531
Copy link

andrewoh531 commented Aug 13, 2019

Is there a solution/workaround for this?

@joshua-holly89
Copy link
Author

joshua-holly89 commented Aug 13, 2019

I only found a workaround:

  • Install serverless in the root folder of "/shared", "microservice1" and "microservice2"
  • in the package.json folder in "microservice1" and "microservice2" I have such a npm script "node ../node_modules/serverless/bin/serverless offline start"

@andrewoh531
Copy link

andrewoh531 commented Aug 14, 2019

Thanks @joshinator. I considered that path but my project has a backend, frontend, lambdas and shared folder and so I didn't want to corrupt the project by enveloping it with serverless configurations at the root.

The workaround I used was to use yarn link for the shared package and treat it like an independent package. I personally think this is a slightly cleaner approach.

Unfortunately this only works for sls invoke local but errors out when attempting to run sls package. Looking to see if it can be fixed. This didn't work with serverless-plugin-typescript version 1.1.9. Downgrading to version 1.1.7 worked. Related to this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants