stencil icon indicating copy to clipboard operation
stencil copied to clipboard

bug: dist-custom-elements generated types missing some types when run in GitHub Actions

Open James-Wilkinson-git opened this issue 1 year ago • 14 comments

Prerequisites

Stencil Version

4.19.2

Current Behavior

We are missing two type files from the dist/types folder when running on GitHub Actions, these files are generated locally on our Windows machine, GitHub is running Ubuntu.

Run npx stencil build --debug --no-cache
[34:10.1]  @stencil/core
[34:10.3]  v4.19.2 🏉
[34:10.3]  node 20.15.1  MEM: 122.3MB
[34:10.3]  linux, AMD EPYC [7]()763 64-Core Processor  MEM: 122.3MB
[34:10.3]  cpus: 2, freemem: 7210MB, totalmem: [8]()315MB  MEM: 122.3MB
[34:10.3]  compiler:
           /home/runner/work//lib/common/components/stencil-components/node_modules/@stencil/core/compiler/stencil.js
            MEM: 122.3MB
[34:10.3]  build: 171[9]()938890  MEM: 122.3MB
[34:10.6]  cache optimizations disabled
[34:[10]().6]  create workers, maxWorkers: 1  MEM: 143.8MB
[34:10.6]  Starting compilation in watch mode...  MEM: 143.8MB
[34:12.6]  build, stencil-components, prod mode, started ...
[34:12.6]  start build, 2024-07-25T13:34:12  MEM: 283.2MB
[34:12.6]  cleaning 6 dirs ...  MEM: 283.2MB
[34:12.6]  cleaning dirs finished in 3 ms  MEM: 283.2MB
[34:12.6]  transpile started ...
[34:17.0]  Transpiled modules: 
[34:17.0]  generated app types started ...  MEM: 373.7MB
[34:17.1]  generateAppTypes: src/components.d.ts has changed  MEM:
           373.8MB
[34:17.1]  generated app types finished: src/components.d.ts in 24 ms
            MEM: 373.8MB
[34:17.1]  transpile finished in 4.42 s
[34:17.1]  generate outputs started ...  MEM: 373.8MB
[34:17.1]  getComponentAssetsCopyTasks: 0  MEM: 374.0MB
[34:17.1]  getComponentAssetsCopyTasks: 0  MEM: 374.0MB
[34:17.1]  getComponentAssetsCopyTasks: 0  MEM: 374.0MB
[34:17.1]  copy started ...
[34:17.1]  generate collections + source maps started ...  MEM:
           374.2MB
[34:17.8]  generate custom elements + source maps started ...
[34:17.8]  generate lazy + source maps started ...
[34:17.8]  generateEntryModules, 7 entryModules  MEM: 392.2MB
[34:17.8]  generate collections + source maps finished in 707 ms 
           MEM: 392.2MB
[34:18.7]  copy finished (2 files) in 1.66 s
[34:21.6]  generate custom elements + source maps finished in 3.81 s
[34:22.6]  generate lazy + source maps finished in 4.81 s
[34:22.6]  generate www started ...  MEM: 531.3MB
[34:22.6]  generateIndexHtml, write: www/index.html  MEM: 531.4MB
[34:22.6]  generate www finished in 22 ms  MEM: 531.4MB
[34:22.6]  generate types started ...  MEM: 531.7MB
[34:22.6]  generated app types started ...  MEM: 531.7MB
[34:22.6]  generated app types started ...  MEM: 531.7MB
[34:22.6]  generated app types finished: dist/types/components.d.ts in 7
           ms  MEM: 531.7MB
[34:22.6]  generated app types finished: dist/types/components.d.ts in 4
           ms  MEM: 531.7MB
[34:22.6]  generate types finished in 10 ms  MEM: 531.7MB
[34:22.6]  generate outputs finished in 5.57 s  MEM: 531.7MB
[34:22.6]  writeBuildFiles started ...  MEM: 531.7MB
[34:22.7]  in-memory-fs: data length: 1466  MEM: 537.6MB
[34:22.7]  cache: data length: 1  MEM: 537.6MB
[34:22.7]  writeBuildFiles finished, files wrote: 273 in 59 ms 
           MEM: 537.6MB
[34:22.7]  finished build, 10100ms  MEM: 538.8MB
[34:22.7]  build finished in 10.[11](https://github.com/EnableInternational/edamame-design-system/actions/runs/10095135893/job/27914546389#step:8:12) s

Stencil Config

import { Config } from '@stencil/core';
import { sass } from '@stencil/sass';

export const config: Config = {
    namespace: 'stencil-components',
    globalStyle: 'src/global/app.scss',
    enableCache: false,
    outputTargets: [
        {
          type: 'dist',
          esmLoaderPath: '../loader',
        },
        {
            type: 'dist-custom-elements',
            dir: 'dist/custom-elements',
            empty: true,
            generateTypeDeclarations: true
        }
    ],
    plugins: [
        sass()
    ],
};

When I ls the dist/types directory it is missing two component directories, these are not missing on local.

I've also tried running the CI on Windows instead of Ubuntu to match my local same issue. And checked both machines have 16GB or ram and this says it uses 500MB of memory :/

Any ideas?

Expected Behavior

Should generate all type files in CI

System Info

No response

Steps to Reproduce

Compile custom components in github CI

Code Reproduction URL

na

Additional Information

No response

James-Wilkinson-git avatar Jul 25 '24 13:07 James-Wilkinson-git

Hey @James-Wilkinson-git , thanks for reporting.

Unfortunately I can't really say why this happens. I wonder if it is possible to create a reproducible example, maybe via Docker to reproduce this problem, otherwise it seems difficult to investigate this issue. Wdyt?

christian-bromann avatar Jul 25 '24 15:07 christian-bromann

Thanks for the issue! This issue has been labeled as needs reproduction. This label is added to issues that need a code reproduction.

Please reproduce this issue in an Stencil starter component library and provide a way for us to access it (GitHub repo, StackBlitz, etc). Without a reliable code reproduction, it is unlikely we will be able to resolve the issue, leading to it being closed.

If you have already provided a code snippet and are seeing this message, it is likely that the code snippet was not enough for our team to reproduce the issue.

For a guide on how to create a good reproduction, see our Contributing Guide.

ionitron-bot[bot] avatar Jul 25 '24 15:07 ionitron-bot[bot]

Hey @James-Wilkinson-git , thanks for reporting.

Unfortunately I can't really say why this happens. I wonder if it is possible to create a reproducible example, maybe via Docker to reproduce this problem, otherwise it seems difficult to investigate this issue. Wdyt?

I know but I’m not good at docker. Can’t think of any other reasons it’s missing two files only when built in the cloud and not locally.

James-Wilkinson-git avatar Jul 25 '24 15:07 James-Wilkinson-git

I’m wondering if related to this and it’s generating before it’s ready?

https://github.com/ionic-team/stencil/issues/5592

James-Wilkinson-git avatar Jul 25 '24 16:07 James-Wilkinson-git

@James-Wilkinson-git mind checking using our nightly build 4.19.2-dev.1721883721.7ae36aa?

christian-bromann avatar Jul 25 '24 16:07 christian-bromann

No luck :(

James-Wilkinson-git avatar Jul 25 '24 17:07 James-Wilkinson-git

I just added a new component and it made it's type file and moved it over. So any ideas what could cause 2 components to not generate in a CI?

James-Wilkinson-git avatar Jul 25 '24 18:07 James-Wilkinson-git

export declare class EdsMultiSelect {
    searchComponentRef: HTMLEdsSearchElement;
    popoverRef: HTMLEdsPopoverElement;

I think the issue may be something failing silently, in VSCode the HTMLEDSSearchElement is erroring these two components that are missing types are compound components

@Component({
  tag: 'eds-multi-select',
  styleUrl: '../../../../../styles/eds-multi-select.scss',
  shadow: false,
})
export class EdsMultiSelect {
  searchComponentRef: HTMLEdsSearchElement;
  popoverRef: HTMLEdsPopoverElement;

In this file we aren't importing these definitions and VSCode is not erroring them. However appears to be reading it from component.d.ts

James-Wilkinson-git avatar Jul 25 '24 18:07 James-Wilkinson-git

Ok confirmed the problem is in the generating of types if ther compiler runs into another type that it can't resolve it is failing silently and not generating that type.

To Reproduce make a component define something to a type that doesnt exist compile and see that it won't generate a types file for that component.

Should error or warn in the console.

Not sure how to define the type here though either so that I don't have to use any.

export class EdsMultiSelect {
  searchComponentRef: any;
  popoverRef: any;

James-Wilkinson-git avatar Jul 25 '24 18:07 James-Wilkinson-git

This bug has been previous reported but was closed with no action https://github.com/ionic-team/stencil/issues/2769

James-Wilkinson-git avatar Jul 26 '24 13:07 James-Wilkinson-git

Thanks for investigating this issue @James-Wilkinson-git ! Do you think it is possible to provide a minimal reproducible example of this case?

christian-bromann avatar Jul 30 '24 20:07 christian-bromann

There is one in the linked bug.

James-Wilkinson-git avatar Jul 30 '24 21:07 James-Wilkinson-git

The linked bug has been resolved, if what you experience differs from that we need a new reproduction case that show cases that.

christian-bromann avatar Aug 01 '24 17:08 christian-bromann

That bug isn’t resolved it’s literally the same behaviour. The bug is closed not resolved.

James-Wilkinson-git avatar Aug 01 '24 20:08 James-Wilkinson-git

Thanks for the issue! This issue is being closed due to inactivity. If this is still an issue with the latest version of Stencil, please create a new issue and ensure the template is fully filled out.

Thank you for using Stencil!

ionitron-bot[bot] avatar Aug 31 '24 20:08 ionitron-bot[bot]