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

Weird behavior when not using hash #154

Open
CodexHere opened this issue Jun 25, 2023 · 0 comments
Open

Weird behavior when not using hash #154

CodexHere opened this issue Jun 25, 2023 · 0 comments

Comments

@CodexHere
Copy link

CodexHere commented Jun 25, 2023

When I don't set chunkNames to include [hash] it seems my JS file is written with a module importing the entryfile (my index.html) instead of the expected ESM output:

// src/index.html
var src_default = "./index.html";
export {
  src_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFtdLAogICJzb3VyY2VzQ29udGVudCI6IFtdLAogICJtYXBwaW5ncyI6ICIiLAogICJuYW1lcyI6IFtdCn0K

Here's the options that produce this output:

buildOptions: {
    bundle: true,
    metafile: true,
    minify: false,
    outdir: '/app/dist',
    platform: 'browser',
    sourcemap: 'inline',
    target: 'esnext',
    assetNames: '[name]',
    chunkNames: '[name]',
    format: 'esm',
    logLevel: 'debug',
    entryPoints: [ '/app/src/index.html' ],
    external: [],
    loader: { '.png': 'file', '.svg': 'file', '.ts': 'ts', '.tsx': 'tsx' }
}

However if I set chunkNames: '[ext]/[name]-[hash]' it outputs the js file as an ESM as expected.

In my setup, I have a conditional check so that it's just [name] if NODE_ENV == 'development' and [ext]/[name]-[hash] if it's set to production. I'm not sure what the importance of the hash is, and while the README does show it being used it doesn't explicitly state that it's necessary.

What's more, is I get weird build output from esbuild, and it looks like it's double processing the index.ts file:

(without hash)

  dist/app.css  1.2kb                                                                                                                                                                                                                         
                                                                                                                                                                                                                                              
⚡ Done in 2ms                                                                                                                                                                                                                                
                                                                                                                                                                                                                                              
  dist/index.js  10.6mb ⚠️                                                                                                                                                                                                                     
                                                                                                                                                                                                                                              
⚡ Done in 296ms                                                                                                                                                                                                                              
                                                                                                                                                                                                                                              
  dist/index.html  957b                                                                                                                                                                                                                       
  dist/index.js    264b                                                                                                                                                                                                                       
                                                                                                                                                                                                                                              
⚡ Done in 625ms    

(with hash)

  dist/css/app-V3MYB2PJ.css  1.2kb                                                                                                                                                                                                            
                                                                                                                                                                                                                                              
⚡ Done in 2ms                                                                                                                                                                                                                                
                                                                                                                                                                                                                                              
  dist/js/index-QJUXMFXL.js  10.6mb ⚠️                                                                                                                                                                                                         
                                                                                                                                                                                                                                              
⚡ Done in 294ms                                                                                                                                                                                                                              
                                                                                                                                                                                                                                              
  dist/index-HXAY6RKV.html  1.0kb                                                                                                                                                                                                             
  dist/index.js             273b     

The 10.6mb (it includes inline sourcemaps, so it's big) output file is the appropriate build, and while the MUCH smaller build appears after, it only works as expected in the hashed output, and I never see a hashed index file (which is preferred, but weird it shows it being built).

Anyway, I'm going to have to hard-code the hash for now, but it's all weird compared to other plugins so I wanted to point it out, and hopefully something can be clarified out of it.

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

1 participant