Skip to content

Feature request: Skip npm install #7847

Closed as duplicate
Closed as duplicate

Description

@tapz

Describe your idea/feature/enhancement

As we have our own esbuild SAM build shoud not run npm install. Also, npm install does not seem to work with a monorepo. It tries to fetch the files from npm registry and thus requires .npmrc in all nested stacks. So, please add a flag to skip npm install. Would also be nice to be able to specify for some nested stacks that no build is needed as they are run in Docker containers.

Proposal

Additional Details

Activity

  1. added
    stage/needs-triageAutomatically applied to new issues and PRs, indicating they haven't been looked at.
    on Jan 24, 2025
  2. roger-zhangg commented on Jan 24, 2025

    @roger-zhangg
    Member

    Hi tapz, thanks for reaching out, do you mind explain the issue you have a bit more?

    From what I perceive, if want to use esbuild in sam build, you can refer to this doc for using esbuild for sam build: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-using-build-typescript.html

    And if esbuild is handling all the build, you can even skip the sam build and directly use the built assets for deploy or sync command.

    Please let me know,
    Thanks

  3. added
    stage/needs-feedbackNeeds feedback from the community (are you also interested in/experiencing this?)
    and removed
    stage/needs-triageAutomatically applied to new issues and PRs, indicating they haven't been looked at.
    on Jan 24, 2025
  4. tapz commented on Jan 25, 2025

    @tapz
    Author

    I first use custom pre build scripts, which use esbuild. The in the SAM templates I use makesfiles to copy lambda source files. So no need for SAM build to install dependencies when build is already done and files copied.

  5. vicheey commented on Feb 17, 2025

    @vicheey
    Contributor

    Thank you for the additional information. Let's keep this issue open to collect more feedback and support from our community. We will prioritize the feature accordingly.

  6. rev42 commented on Apr 8, 2025

    @rev42

    I'm in the same situation as @tapz

    We are in a monorepo as well.

    Context:
    Our nodejs lambda already has its own npm run build command and is deployed using gitlab.
    We wanted to plug AWS SAM to be able to test locally and to let developers deploy their own version of the service on our dev environment. However we did not want to change our current deployment pipeline to avoid a hard dependency with AWS SAM.

    To achieve this goal, we had to add to the template.yaml:

        Metadata:
          BuildMethod: makefile
    

    and in the makefile

    build-ourLambdaFunction:
            # Purpose: have the same build system for AWS SAM and Gitlab CI/CD
    	npm run build
    	cp ./dist/* $(ARTIFACTS_DIR)
    

    I wanted to add the launch.json file at the root of the monorepo to be able to debug the lambda with breakpoints. When running it, it actually executes:

    2025-04-08 14:43:00.067 [info] Command: (not started) [/usr/local/bin/sam build --build-dir /tmp/aws-toolkit-vscode/vsctke35b9267/output --template /tmp/aws-toolkit-vscode/vsctke35b9267/app___vsctk___template.yaml --base-dir /home/node/lambdas/my-validator]
    2025-04-08 14:43:00.700 [info] Building codeuri: /home/node/lambdas/my-validator runtime: nodejs20.x architecture: x86_64 functions: myvalidator
    2025-04-08 14:43:00.748 [info] Running NodejsNpmBuilder:NpmPack
    2025-04-08 14:43:10.844 [info] Running NodejsNpmBuilder:CopyNpmrcAndLockfile
    2025-04-08 14:43:10.845 [info] Running NodejsNpmBuilder:CopySource
    2025-04-08 14:43:10.848 [info] Running NodejsNpmBuilder:NpmInstall
    2025-04-08 14:44:40.854 [error] SamLaunchRequestError: "sam build" failed. Timed out waiting for build. [BuildFailure]
    

    The build is failing.

  7. bnusunny commented on Sep 27, 2026

    @bnusunny
    Contributor

    Closing this as a duplicate of #6567, which tracks the same request — a way to stop sam build from installing/updating dependencies when the project already manages them — and now carries a reproduction and the analysis of where the build time actually goes.

    @tapz @rev42 the relevant findings for your setups, in short:

    • In a monorepo the nodejs install step resolves up to the workspace root, so the work is root-scoped and is repeated once per function. npm's cache does not help, because the cost is tree reconciliation rather than downloads.
    • With --build-in-source the install runs with --no-package-lock, so it ignores your lockfile and can silently change dependency versions in your source tree during a build. That part is a defect and I am preparing a fix in aws-lambda-builders.
    • sam build --cached cannot currently skip the install under --build-in-source — the internal "dependencies unchanged" path is unreachable in that mode. Fixing that is the change that gets monorepo builds fast without any new flag.
    • The explicit opt-out you are both asking for is still on the table and tracked in Feature request: Skip NodejsNpmEsbuildBuilder:NpmUpdate step when using --build-in-source in a js/ts "monorepo" #6567, point 3.

    Please follow #6567 and add your use case there if it differs from what is described — a single thread is easier for us to prioritise than two.

  8. github-actions commented on Sep 27, 2026

    @github-actions
    Contributor

    ⚠️COMMENT VISIBILITY WARNING⚠️

    Comments on closed issues are hard for our team to see.
    If you need more assistance, please either tag a team member or open a new issue that references this one.
    If you wish to keep having a conversation with other community members under this issue feel free to do so.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    stage/needs-feedbackNeeds feedback from the community (are you also interested in/experiencing this?)type/featureFeature request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions