DEV Community

Discussion on: How to easily create JS libraries with bundled dependencies compatible with ES/AMD/UMD/CJS module systems using Nx

 
ipreda profile image
Iulian Preda

D.ts files should be created automatically. Please check your ts-vonfig files to have them emitted. That should be done using the "declaration":true flag

Thread Thread
 
andyclausen profile image
Andreas Clausen

I have declarations on, and they are being generated when I call tsc with the same tsconfig. We are talking about the @nrwl/web:rollup executor, right?
Maybe this is only an issue when using swc, but I'm pretty sure it didn't work for me with babel either.

Thread Thread
 
ipreda profile image
Iulian Preda

Swc is nice, but until now I didn't have the best experience with it, maybe it's just my luck of experience, at least with babel with the version stated in the article I can guarantee that the declarations are emitted using the @nrwl/web:rollup executor

Thread Thread
 
samhecquet profile image
Samuel Hecquet

I use @nrwl/web:rollup to build my library and it's very powerful. However, I'm having an issue now because I want to add font files in it and I can't find a way to compile it because I need webpack.
Have you already faced this situation?

Thread Thread
 
ipreda profile image
Iulian Preda

I think that is outside it's scope. Personally I would use @nrwl/web:webpack with a custom webpack config as presented in the article, you would need some more code to handle font import. Another solution would be to use some custom scripts that would be run after everything is bundled.

Thread Thread
 
samhecquet profile image
Samuel Hecquet • Edited

you're right!
For people being in the same situation that I was and ending up in this article, I fixed it by pointing to a customized rollup config file and using "@rollup/plugin-url" for the fonts:

const url = require('@rollup/plugin-url');
const nrwlConfig = require('@nrwl/react/plugins/bundle-rollup');

module.exports = (config) => {
  const originalConfig = nrwlConfig(config);
  return {
    ...originalConfig,
    plugins: [
      ...originalConfig.plugins,
      url({
        limit: 100000,
        include: ['**/*.woff', '**/*.woff2'],
      }),
    ],
  };
};
Enter fullscreen mode Exit fullscreen mode

I think it also works with jpg

Thread Thread
 
ipreda profile image
Iulian Preda

Thank you for your contribution!