@aegenet/yawt
v1.0.1
Published
Yawt - Yet Another Workspace Toolkit - The purpose of this package is to provide a set of tools to help you manage your workspace.
Maintainers
Readme
Yawt
Yet Another Workspace Toolkit - The purpose of this package is to provide a set of tools to help you manage your workspace.
💾 Installation
npm i @aegenet/yawt -D
# or
yarn add @aegenet/yawt -D📝 Config files (./)
./.build/yawt.config.json
[{
"name": "lib",
"links": [],
"dependencies": [],
"publish": false
}, {
"name": "app",
"links": ["lib"],
"dependencies": ["lib"],
"publish": true
}]eslint.config.mjs(ESM)
import { eslintConfigurator } from '@aegenet/yawt';
export default eslintConfigurator();prettier.config.mjs
import { prettierConfigurator } from '@aegenet/yawt';
export default prettierConfigurator();vite.config.mjs
import { viteConfigurator } from '@aegenet/yawt';
import { dirname } from 'node:path';
import { fileURLToPath } from 'node:url';
export default viteConfigurator({
cwd: dirname(fileURLToPath(import.meta.url)),
libName: '@sample/lib',
entryPoint: './src/index.ts',
nodeExternal: true,
});rollup.config.dts.mjs
import { rollupDTSConfigurator } from '@aegenet/yawt';
import { dirname } from 'node:path';
import { fileURLToPath } from 'node:url';
export default rollupDTSConfigurator({
cwd: dirname(fileURLToPath(import.meta.url)),
libName: '@sample/lib',
entryPoint: './src/index.ts',
nodeExternal: true,
});tsconfig.json
{
"extends": "./node_modules/@aegenet/yawt/tsconfig.base.json",
"exclude": [
"./node_modules",
],
"include": [
"src"
]
}🖹 Exports
| Name | Description |
| --- | --- |
| eslintConfigurator | Configuration for eslint |
| prettierConfigurator | Configuration for prettier |
| viteConfigurator | Configuration for vite (and vitest) |
| rollupDTSConfigurator | Configuration for generate typings |
| yawt | Yawt API |
CLI
# With workspace
yawt --task=build
# or without workspace
yawt --task=build --singleThe selected task will be executed on all projects in the workspace.
| Task | Description |
| --- | --- |
| version | Apply version to all projects. |
| build | npm run build |
| test | check package exports && npm run test |
| lint | npm run lint |
| dependencies | npm i & npm link all links |
| upgrade | remove ./node_modules, package-lock.json & npm i |
| publish | remove devDependencies, scripts, ./dist/**/*.map & npm publish (you can keep the .map with --param=keep-map or/and (re)generate the package-lock.json with --param=package-lock ) |
| Task | Description |
| --- | --- |
| upgradeForce | remove ./node_modules, package-lock.json & npm upgrade --latest |
| clean | npm run clean |
| deleteNodeModules | Remove ./node_modules |
| regenPackageLock | (Re)Generate the package-lock.json (even if it's a npm workspace) |
| forEach | The purpose of this task is to run a script for each project. Usage: yawt --task=forEach --param=cspell. |
| forEachRaw | The purpose of this task is to run a command for each project. Usage: yawt --task=forEachRaw --param="echo hello". |
Coverage
📝 License
The MIT License - Copyright © 2024 Alexandre Genet.
