@nasriya/postbuild
v1.1.5
Published
A package that does some tasks after compilation
Downloads
13
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/postbuild
Config 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-init
Config 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.md
Usage
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.