@nasriya/postbuild
v1.1.5
Published
A package that does some tasks after compilation
Maintainers
Readme
PostBuild.
Visit us at www.nasriya.net.
PostBuild is a utility pacakge for TypeScript that runs useful tasks after transpiling TypeScript into ESM and CJS JavaScript file.
Made with ❤️ in Palestine 🇵🇸
[!IMPORTANT] 🌟 Support Our Open-Source Development! 🌟 We need your support to keep our projects going! If you find our > work valuable, please consider contributing. Your support helps us > continue to develop and maintain these tools.
Every contribution, big or small, makes a difference. Thank you for > your generosity and support!
Installation
Install the pacakge as a dev. dependency:
npm i --save-dev @nasriya/postbuildConfig File
The postbuild.configs.json is the file where all your configurations reside, and is needed to perform the tasks or the build process will fail.
If you don't have a file, just run the following command and a file will be generated with recommended configurations:
npm run postbuild-initConfig File Content
The above comand will generate a file with all the features set to their recommended values. This table below explains them in details.
| Property | Description | Posible values | Default value |
| ------------------- | ------------------------------------------------------------------------ | ------------------------ | ------------- |
| esmDir | The directory of the generated ESM folder. | auto or the directory | auto |
| cjsDir | The directory of the generated CJS folder. | auto or the directory | auto |
| verbose | An option to enable logging extra details . | true or false | true |
| addExtensions | Appending .js to all import statements. | true or false | true |
| copyFiles | An options object to copy assets to the dist folder after transpiling. | object or undefined | Notice below |
| copyFiles.from | The directory where you want to copy the assets to. | directory | src |
| copyFiles.exclude | An array of file extensions to exclude. | string[] | ['.ts'] |
| aliases | Define aliases to your imports | Record<string, string> | Nothing |
The default configurations works well if your project is structured like this:
├── dist/
│ ├── @types
│ ├── cjs
│ └── esm
├── src
│ ├── folder1
│ ├── folder2
│ ├── folder3
│ └── index.ts
├── package.json
└── README.mdUsage
The best way to use this package is to integrate it with your build process by appending the postbuild worker to the end of the build command:
// package.json
{
"scripts": {
"build": "npm run build:esm && npm run build:cjs && postbuild",
"build:esm": "tsc --project tsconfig.esm.json",
"build:cjs": "tsc --project tsconfig.cjs.json",
}
}Defining aliases
In postbuild.config.json, you can add your aliases as such:
{
"aliases": {
"my-module": "/modules/my-module",
"@elements/*": "/elements/"
}
}Using __dirname
All __dirname matches in ESM will be replaced with import.meta.dirname, for example:
// TypeScript
const dirname: string = __dirname;Will be compiled to:
// CommonJS (CJS)
const dirname = __dirname;// ECMAScript Modules (ESM)
const dirname = import.meta.dirname;License
Please read the license from here.

