Package configs ⚙️
Handle package configuration with ease
Table of Content
Development
Run the following to start development
nvm use
pnpm i
Local development
Run the following
pnpm dev
This will generate unminified output code, sourcemaps and will enable source file watcher.
Production build
Run the following to create a local production build
pnpm build
This will generate minified output code without sourcemaps.
Unit tests
Run all the defined test suites by running the following:
# Run tests and watch file changes.
pnpm test:watch
# Run tests in a CI environment.
pnpm test:ci
Run tests with coverage
An HTTP server is then started to serve coverage files from ./coverage folder.
⚠️ You may see a blank page the first time you run this command. Simply refresh the browser to see the updates.
pnpm test:coverage:serve
Contributing
Contributions are truly welcome!
Please refer to the Contributing Doc for more information on how to start contributing to this project.
Help keep this project up to date with GitHub Sponsor.
Security
If you believe you have found a security vulnerability, we encourage you to responsibly disclose this and NOT open a public issue. We will investigate all legitimate reports. Email [email protected] to disclose any security vulnerabilities.
API Reference
Installing optional dependencies
This packages offers a script that will guide you through the installation of dev dependencies based on your current project tooling.
Once you installed @alessiofrittoli/package-configs you can run the following:
node node_modules/@alessiofrittoli/package-configs/scripts/install-dependencies.cjs
TypeScript configurations
This project exports different configurations JSON files as well as some utility functions that you might need in your projects.
TypeScript configurations files
Base configuration file
This file is intended for base processes and it mainly contains all the required configuration for your IDE too.
{
"extends": "@alessiofrittoli/package-configs/tsconfig/base.json",
"compilerOptions": {
"paths": {
"@/*": ["./src/*"]
}
}
}
React bundler configuration file
{
"extends": "@alessiofrittoli/package-configs/tsconfig/react-bundler.json"
}
Next.JS bundler configuration file
{
"extends": "@alessiofrittoli/package-configs/tsconfig/nextjs-bundler.json"
}
TypeScript utility functions
parseTsConfig()
[!WARNING]
@deprecated
This function has been moved to
@alessiofrittoli/tsconfigpackage.
Parse TypeScript configuration file.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
options | ParseTsConfigOptions | {} | (Optional) An object defining required parameters. |
options.filepath | string | "./tsconfig.json" | (Optional) The TypeScript configuration file path. |
Throws
Throws an Error if the resolved filepath does not exists.
Returns
Type: ParsedCommandLine
The parsed TypeScript configuration file.
Examples
import { parseTsConfig } from '@alessiofrittoli/package-configs/tsconfig'
const parsedTsConfig = parseTsConfig({ filepath: './tsconfig.build.json' })
getTSConfigCompilerTarget()
[!WARNING]
@deprecated
This function has been moved to
@alessiofrittoli/tsconfigpackage.
Get TypeScript compiler target from resolved configuration file.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
options | ParseTsConfigOptions | {} | (Optional) An object defining required parameters. |
options.filepath | string | "./tsconfig.json" | (Optional) The TypeScript configuration file path. |
options.parsedTsConfig | ParsedCommandLine | - | (Optional) The already parsed TS config. |
Returns
Type: string | undefined
The resolved TypeScript compiler target if any, undefined otherwise.
Examples
import { getTSConfigCompilerTarget } from '@alessiofrittoli/package-configs/tsconfig'
const compilerTarget = getTSConfigCompilerTarget({
filepath: './tsconfig.build.json',
})
ESlint configurations
eslintConfig()
Get ESLint base configuration.
Parameters
| Parameter | Type | Description |
|---|---|---|
configs | LinterConfigArray | (Optional) Custom configurations. |
Returns
Type: LinterConfigArray
The ESLint configuration array.
Examples
Using standard profile
// my-project/eslint.config.ts
import { eslintConfig } from "@alessiofrittoli/package-configs/eslint";
export default eslintConfig( {...}, {...} );
Using React.js profile
// my-project/eslint.config.ts
import { reactProfile } from '@alessiofrittoli/package-configs/eslint/profiles/react'
import { eslintConfig } from '@alessiofrittoli/package-configs/eslint'
export default eslintConfig(...reactProfile)
Using Next.JS profile
// my-project/eslint.config.ts
import { nextjsProfile } from '@alessiofrittoli/package-configs/eslint/profiles/nextjs'
import { eslintConfig } from '@alessiofrittoli/package-configs/eslint'
export default eslintConfig(...nextjsProfile)
Oxlint configurations
oxlintConfig()
Get Oxlint base configuration.
Parameters
| Parameter | Type | Description |
|---|---|---|
configs | T & OxlintConfig | (Optional) Custom configurations. |
Returns
Type: OxlintConfig
The Oxlint configuration.
Examples
// my-project/oxlint.config.ts
import { oxlintConfig } from "@alessiofrittoli/package-configs/oxlint";
export default oxlintConfig( {...} );
Prettier configurations
prettierConfig()
Get Prettier base configuration.
Parameters
| Parameter | Type | Description |
|---|---|---|
configs | PrettierConfig | (Optional) Custom configurations. |
Returns
Type: PrettierConfig
The Prettier configuration.
Examples
// my-project/prettier.config.ts
import { prettierConfig } from "@alessiofrittoli/package-configs/prettier";
export default prettierConfig( {...} );
Tsdown configurations
tsdownConfig()
Get tsdown base configuration.
Parameters
| Parameter | Type | Description |
|---|---|---|
options | UserConfig|UserConfigFn | (Optional) An object defining custom options or a callable function that returns a custom options object. |
Returns
Type: UserConfigFn
A callable function executed by tsdown processes.
Default configurations
| Property | Value |
|---|---|
entry | ["src/**\/index.ts"] |
format | ["cjs", "esm"] |
dts | true |
shims | true |
clean | true |
treeshake | true |
minify | !watch |
sourcemap | !!watch |
target | resolved tsconfig target |
deps | { ... } |
Examples
// my-project/tsdown.config.ts
import { tsdownConfig } from '@alessiofrittoli/package-configs/tsdown'
import { join, resolve } from 'path'
const tsConfigFile = 'tsconfig.build.json'
export default tsdownConfig(({ outDir = 'example-custom-directory' }) => ({
tsconfig: resolve(process.cwd(), tsConfigFile),
outDir,
copy: [
{
from: 'src/assets',
to: join(outDir, 'assets'),
},
],
}))
Vite configurations
viteConfig()
Get vite base configuration.
Parameters
| Parameter | Type | Description |
|---|---|---|
options | UserConfig | (Optional) An object defining custom Vite configuration options. |
Returns
Type: UserConfigFnObject
An object with base and custom Vite configuration options.
Default configurations
| Property | Value |
|---|---|
resolve.tsconfigPaths | true |
test.reporters | ["tree"]|[] based on VITEST_VSCODE environment variable. |
test.coverage.exclude | ["**/*.mock.ts", "**/__tests__/**/*.mock.ts"] |
Examples
// my-project/vite.config.ts
/// <reference types="vitest/config" />
import { viteConfig } from "@alessiofrittoli/package-configs/vite";
export default viteConfig( {...} )
Markdownlint configurations
To help you having a better DX while writing markdown documentations this library provides you a set of base linting rules.
Simply create a .markdownlint.json file at the root of your project and configure it like so:
{
"extends": "@alessiofrittoli/package-configs/markdownlint/base.json"
}
[!WARNING]
The imported
base.jsonuseshttps://raw.githubusercontent.com/DavidAnson/markdownlint/v0.41.0/schema/markdownlint-config-schema.jsonas schema so make sure to add the following setting in your user/project JSON settings file:{ "json.schemaDownload.trustedDomains": { "https://raw.githubusercontent.com/DavidAnson/markdownlint/": true } }
Made with ☕
|
|
|