2
0
mirror of https://github.com/iconify/iconify.git synced 2024-12-13 22:18:24 +00:00
iconify/packages/library-builder/readme.md

56 lines
1.9 KiB
Markdown

# ES Builder
This is a library for transpiling TypeScript files.
It is not a bundler! It builds libraries that export multiple single files, not bundles.
What does it do?
- Creates both ES and CommonJS modules in target directory. CommonJS files use '.js' extension, ES files use '.mjs' extension.
- Creates TypeScript definition files for each file.
- Rewrites imports paths in ES modules.
- Updates exports field in package.json
- Tests ES imports
Why is it needed?
- ES modules should have full import paths, including extension, but TypeScript compiler cannot rewrite imports, so it cannot change target extension, so `tsc` cannot be reliably used to create ES modules.
- Using other tools, such as `esbuild` requires custom plugin. This package is used by multiple packages, so it makes sense to split code into a separate package to make it easily reusable.
- Currently `tsup` is the only viable alternative, but it is meant to be used as bundler. Without bundle option it currently fails to generate TypeScript definition files.
- Reusable functions for updating package.json and for testing ES imports.
## Documentation
Requirements for using build process:
- Create `tsconfig.json` that creates CommonJS modules, saves declarations, has `importsNotUsedAsValues` set to `error`.
- Add script to `package.json` for building source code, such as `"build:source": "tsc -b",`. If you have multipe
To build packages, create `build.js` in your package:
```js
/* eslint-disable */
const { buildFiles } = require('@iconify/library-builder');
buildFiles({
root: __dirname,
source: './src',
target: './lib',
})
.then(() => {
console.log('Done');
})
.catch((err) => {
console.error(err);
process.exit(1);
});
```
Source and target paths must be relative to root directory and start with `./`.
## License
The library is released with MIT license.
© 2021 Vjacheslav Trushkin / Iconify OÜ