Skip to content

Vite build fails, recursively creates public build directories when using assetsBuildDirectory #8023

@justinwaite

Description

@justinwaite

Reproduction

https://stackblitz.com/edit/remix-run-remix-fa3huu?file=package.json

System Info

System:
    OS: Linux 5.0 undefined
    CPU: (8) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
    Memory: 0 Bytes / 0 Bytes
    Shell: 1.0 - /bin/jsh
  Binaries:
    Node: 18.18.0 - /usr/local/bin/node
    Yarn: 1.22.19 - /usr/local/bin/yarn
    npm: 9.4.2 - /usr/local/bin/npm
    pnpm: 8.9.2 - /usr/local/bin/pnpm
  npmPackages:
    @remix-run/css-bundle: * => 2.2.0 
    @remix-run/dev: * => 2.2.0 
    @remix-run/eslint-config: * => 2.2.0 
    @remix-run/node: * => 2.2.0 
    @remix-run/react: * => 2.2.0 
    @remix-run/serve: * => 2.2.0 
    vite: ^4.5.0 => 4.5.0

Used Package Manager

npm

Expected Behavior

When running npm run build in an app setup with vite that has assetsBuildDirectory set to public/mybase/build, it is expected that the build would succeed and produce the public build artifacts at public/mybase/build.

Actual Behavior

If the public folder does not exist at all, then the build passes and creates public/mybase/build.

However, if the public directory exists, it tries to recursively create directories:

public
- mybase 
- - build
- - - mybase
- - - - build

Eventually, the build fails with the error:

error during build:
Error: ENAMETOOLONG: name too long, mkdir '/path/to/app/public/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase/build/mybase'

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions