add knowledge
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
# Task Automation
|
||||
|
||||
One entry point for all dev workflows — so you don't have to remember long commands or teach them to teammates.
|
||||
|
||||
## Tools by Language
|
||||
|
||||
| Language | Recommended | Alternatives |
|
||||
|---|---|---|
|
||||
| Python | `invoke` | make, tox |
|
||||
| JavaScript/TS | `npm scripts`, `turbo` | nx |
|
||||
| Go | `make`, `task` | mage |
|
||||
| C++ | `cmake`, `make` | ninja |
|
||||
|
||||
## Python — `invoke`
|
||||
|
||||
Define tasks in `tasks.py`:
|
||||
|
||||
```python
|
||||
from invoke import task
|
||||
|
||||
@task
|
||||
def lint(c):
|
||||
c.run("ruff check . && mypy .")
|
||||
|
||||
@task
|
||||
def test(c):
|
||||
c.run("pytest")
|
||||
|
||||
@task
|
||||
def ci(c, lint=True, test=True):
|
||||
if lint:
|
||||
lint(c)
|
||||
if test:
|
||||
test(c)
|
||||
```
|
||||
|
||||
```bash
|
||||
invoke lint
|
||||
invoke test
|
||||
invoke ci
|
||||
```
|
||||
|
||||
## Make (universal fallback)
|
||||
|
||||
Works everywhere, no install needed.
|
||||
|
||||
```makefile
|
||||
.PHONY: lint test ci
|
||||
|
||||
lint:
|
||||
ruff check . && mypy .
|
||||
|
||||
test:
|
||||
pytest
|
||||
|
||||
ci: lint test
|
||||
```
|
||||
|
||||
```bash
|
||||
make ci
|
||||
```
|
||||
|
||||
## JavaScript — npm scripts
|
||||
|
||||
```json
|
||||
{
|
||||
"scripts": {
|
||||
"lint": "biome check .",
|
||||
"test": "vitest run",
|
||||
"ci": "npm run lint && npm run test"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
npm run ci
|
||||
```
|
||||
|
||||
## Tips
|
||||
|
||||
- Keep task names consistent across projects (`lint`, `test`, `ci`, `build`)
|
||||
- Tasks should call your other tools — they're orchestration, not implementation
|
||||
- `make` is the lowest common denominator; use it when portability matters
|
||||
Reference in New Issue
Block a user