Files
Claro/docs/V1_16_PACKAGES_PROJECTS.md
T

112 lines
2.0 KiB
Markdown

# Claro v1.18.26 - Packages and Projects
Claro v1.18.26 makes projects and packages safer and more useful while keeping the beginner syntax simple.
## Create a project
```bash
claro new MyProject
cd MyProject
claro run
```
A new project contains:
```text
main.claro
claro.project
claro.lock
packages/
README.md
```
## Project file
`claro.project` is intentionally plain text:
```text
manifest-version: 1
name: MyProject
main: main.claro
version: v1.18.26
packages:
package: text
package: net_tools
```
## Package commands
```bash
claro package init
claro package add text
claro package remove text
claro package list
claro package doctor
claro package lock
```
`claro package add NAME` creates a local folder:
```text
packages/NAME/
claro.package
README.md
```
Each `claro.package` file includes a tiny manifest and checksum:
```text
manifest-version: 1
name: text
version: 1
source: local
checksum: 1234abcd
```
`claro.lock` records the release version, lock format, packages, and checksums so future registry work has a stable safety foundation.
## Safety rules
Package names may use only:
```text
letters
numbers
dash
underscore
```
Package names must be 64 characters or fewer so Claro can create predictable local package folders and metadata paths.
This means simple names like these are allowed:
```text
text
sdl
net_tools
my-package
```
Unsafe names are rejected:
```text
../bad
folder/name
bad name
```
If an unsafe package name somehow gets into `claro.project`, package maintenance commands should not quietly continue. `claro package doctor` points out the bad name, `claro package lock` refuses to write lockfile data for it, and `claro package remove NAME` now exits with an error if the lockfile refresh still sees an unsafe package name after the removal.
## Why this matters
Packages are important for Claro's future, but the workflow must stay friendly:
```text
make a project
add a package
run the project
check the project
```
No complicated setup should be needed for a beginner.