Skip to content
New issue

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

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

Already on GitHub? # to your account

ForceExclude #247

Closed
colinfindlay-nz opened this issue Oct 2, 2017 · 9 comments · Fixed by #248
Closed

ForceExclude #247

colinfindlay-nz opened this issue Oct 2, 2017 · 9 comments · Fixed by #248
Assignees
Labels
Milestone

Comments

@colinfindlay-nz
Copy link

colinfindlay-nz commented Oct 2, 2017

This is a Feature Proposal

Description

Under the current method for bundling externals, while you can exclude dependencies by marking them as devDependencies, if a downstream dependency re-includes it, it will be bundled regardless.

While 99% of the time this makes sense, there are still a lot of projects out there, that are not lambda exclusive, which include aws-sdk as a dependency. While I could ask every project maintainer to move aws-sdk to peerDependency or devDependency - I think adding a forceExclude would be a simple fix for a wide(ish) problem

i.e.

webpackIncludeModules:
    forceInclude:
      - module1
      - module2
    forceExclude:
      - aws-sdk
      - module2
@HyperBrain
Copy link
Member

Hi @silver2k . Thanks for the good idea 🙌 .
Indeed, it would perfectly complement the forceInclude option.

@HyperBrain HyperBrain added this to the 3.2.0 milestone Oct 2, 2017
@HyperBrain
Copy link
Member

@silver2k Can you try with the PR I opened, if that works correctly on your platform? I did some tests locally and it seems to work. Use "serverless-webpack": "serverless-heaven/serverless-webpack#force-exclude to test.

@HyperBrain HyperBrain self-assigned this Oct 4, 2017
@HyperBrain
Copy link
Member

@silver2k Any chance that you can run some tests? I don't want to merge it only tested by me ;-)

@colinfindlay-nz
Copy link
Author

colinfindlay-nz commented Oct 10, 2017 via email

@HyperBrain
Copy link
Member

No, I did not. The only difference between 3.1.0 and 3.1.1 is, that the package-lock.json is honored correctly and sets all installed dependencies fixed, if a lock file is available.
Regarding the dependency drops, it would be great if you'd check the packaged package.json file included in the zip files, to see if these are ok.

@colinfindlay-nz
Copy link
Author

colinfindlay-nz commented Oct 10, 2017

Packaged package.json between 3.1.0 & 3.1.1 are identical.
Raised #251

@HyperBrain HyperBrain modified the milestones: 3.2.0, 4.0.0 Oct 23, 2017
@HyperBrain
Copy link
Member

Released with serverless-webpack@4.0.0

@samuraitruong
Copy link

samuraitruong commented May 11, 2018

hi @HyperBrain ,

this feature doesn't seem works for me

`plugins:

  • serverless-webpack
    custom:
    webpack:
    includeModules:
    forceInclude:
    - "alexa-sdk"
    forceExclude:
    - "aws-sdk"`

In above config, I have aws-sdk is the dependencies of alexa-sdk. I want to exclude aws-sdk in the package out however it still included.

Could you please advise me the best way to exclude aws-sdk .

I am using "serverless-webpack": "^5.1.5",

Thanks

@HyperBrain
Copy link
Member

Hi @samuraitruong . This is related to #306 . As long as the aws-sdk is not a peer dependency of alexa-sdk but a real dependency it will be packaged.

However, you can try to actually bundle the alexa-sdk - then the aws-sdk will become a first level dependency and the forceExclude could work.

// webpack.config.js

externals: [ nodeExternals( { whitelist: [ "alexa-sdk" ] } ) ],

and then without the forceInclude

forceExclude:
  - aws-sdk

Can you try that?

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

Successfully merging a pull request may close this issue.

3 participants