elements icon indicating copy to clipboard operation
elements copied to clipboard

Loading WebComponents, consisting of multiple files

Open christianscharr opened this issue 4 years ago • 4 comments

When using @angular/cli to create WebComponents one ends up with at least 2 files for each WebComponent: main.js and styles.js. But the elementConfig only supports a single URL per element. Sure, I can concatenate the files builded into a single file, this works for production, but not when I want to debug the app locally via ng serve :(

christianscharr avatar Feb 02 '21 09:02 christianscharr

We also have that problem and never found a better solution than writing a cli for that use case: https://www.npmjs.com/package/@smallstack/ng-wc-serve

If you want to try it out, then please keep in mind that you need to package your webcomponent as production.

If you ever find a better solution, please let us know :)

maxfriedmann avatar Feb 10 '21 07:02 maxfriedmann

Hi, when I build for production I merge all files (with nodejs custom script) so the problem is only in dev environment. In dev you can create an initializer in order to load other files when module load.

my 2 cents. Francesco

fcioffi avatar Mar 06 '21 18:03 fcioffi

Hi @christianscharr

we are using ngx-build-plus and exporting as a single file, you might wanna try this out.

gs-smuthyam avatar Mar 16 '21 14:03 gs-smuthyam

Hey @christianscharr . You'd need to use the @angular-builders/custom-webpack to extend the inbuilt configuration. There're 3 Webpack entries, which are main, polyfills and styles. You only need to merge main and styles entries:

// extra-webpack.config.js
module.exports = (config) => {
  if (Array.isArray(config.entry.styles)) {
    config.entry.main = [...config.entry.main, ...config.entry.styles];
  }

  return config;
};

This will bundle styles and main into a common file at the end. This is what ngx-build-plus is doing already.

arturovt avatar Jun 17 '21 11:06 arturovt