coreygrunewald / tinacms

Tina is a site editing toolkit for modern React-based sites (Gatsby and Next.js)

Home Page:https://tinacms.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

TINA CMS   Tweet

Build Status Slack Lerna All Contributors

Getting Started

Tina Demo

Development

To get started:

git clone git@github.com:tinacms/tinacms.git
cd tinacms
npm install && npm run bootstrap
npm run build

# Start Gatsby demo
cd packages/demo-gatsby
npm run start

Do not run npm install from inside the packages directory

TinaCMS uses Lerna to manage dependencies when developing locally. This allows the various packages to reference each other via symlinks. Running npm install from within a package replaces the symlinks with references to the packages in the npm registry.

Commands

Commands Description
npm run bootstrap Install dependencies and link local packages.
npm run build Build all packages.
npm run watch Watch all packages for rebuilds.
npm run test Run tests for all packages.
lerna run build --scope <package> Build only <package>.

Testing With External Projects

Currently, testing with external projects is somewhat inelegant, but this repo includes a folder designed for importing external projects into the monorepo so the development versions of Tina packages can be bootstrapped into the project. To import an external project:

  1. git clone or simply copy the project into the packages/@testing folder. Everything in this folder is ignored by git.
  2. In the root of the monorepo, run npm run bs to link the necessary development packages
  3. Navigate to your project folder and develop normally

Pitfalls of Testing with External Projects

  • Running npm run build in the root of the monorepo will run a build script if your project has one defined. If this causes problems (tina may be causing your build to fail in the first place, and you want to skip the build for now but still build the other packages,) you can get around this by either running lerna run build --ignore=YOUR_PACKAGE_NAME or adding the name of your package to the ignore array for the run command in lerna.json.
//lerna.json
{
  "command": {
    "run": {
      "ignore": ["YOUR_PACKAGE_NAME"]
    }
  }
}
  • Gatsby and React both rely on some globally-persisted values which can cause errors if you have multiple copies of these dependencies installed. When testing a Gatsby site, many issues can be worked around by temporarily deleting the demo-gatsby package and bootstrapping again.

Release Process

Tina has three main branches:

  • master: The bleeding edge of tinacms
  • next: A preview of the next release
  • latest: The current stable release

The flow of changes therefore looks like:

fix-some-bug => master => next => latest

The process happens over a week:

  • On Monday
    1. next is merged into latest; then latest is published to npm
    2. master is merged into next; then next is published to npm
  • Any hot fixes for bugs will be cherry picked into next and latest and the published accordingly.
  • Every pull request merged to master automatically triggers a canary release.

With this process:

  • all accepted changes are available as canary releases for early testing
  • critical fixes are published as soon as possible
  • new features and minor fixes take ~1.5 weeks to be published

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Forestry.io
Forestry.io

πŸ’΅
NCPhillips
NCPhillips

πŸ“† πŸ’» πŸ“ πŸ› πŸ“– πŸ€” πŸš‡ 🚧 πŸ‘€ ⚠️
DJ
DJ

πŸ“† πŸ’» πŸ“ πŸ› πŸ“– πŸ€” 🚧 πŸ‘€ ⚠️
Scott Byrne
Scott Byrne

🎨 πŸ’» πŸ‘€ 🚧 πŸ“–
James O'Halloran
James O'Halloran

πŸ“† πŸ› πŸ€” 🚧 πŸ‘€ ⚠️ πŸ’»
Kendall Strautman
Kendall Strautman

🎨 πŸ“† πŸ› πŸ€” 🚧 πŸ“’ πŸ‘€ πŸ’»
Nichlas Wærnes Andersen
Nichlas Wærnes Andersen

πŸ’» 🎨 πŸ€”
Jordan
Jordan

πŸ“† πŸ“’ πŸ€” πŸ›
Frank Taillandier
Frank Taillandier

πŸ‘€ πŸ“– πŸ“† πŸ““
Scott Gallant
Scott Gallant

πŸ“– πŸ“’ πŸ”
Mitch MacKenzie
Mitch MacKenzie

πŸ““
zacchg
zacchg

πŸ““
Lyle Underwood
Lyle Underwood

πŸ› πŸ’»
Laura1111999
Laura1111999

πŸ“–
Thom Krupa
Thom Krupa

πŸ““
Michael Gauthier
Michael Gauthier

πŸ““
dcgoodwin2112
dcgoodwin2112

πŸ“–
akshayknz
akshayknz

πŸ“–
Adam Silverstein
Adam Silverstein

πŸ“–
Brad McGonigle
Brad McGonigle

πŸ’»
Jake Coxon
Jake Coxon

πŸ’»
Ladislav Prskavec
Ladislav Prskavec

πŸ’»
Bolarinwa Balogun
Bolarinwa Balogun

πŸš‡
Mason Medeiros
Mason Medeiros

πŸ““
ironsean
ironsean

πŸ““
kyp
kyp

πŸ›
Vladislav Shkodin
Vladislav Shkodin

πŸ›
maciek_grzybek
maciek_grzybek

πŸ€” πŸ’»
weibenfalk
weibenfalk

πŸ“Ή

This project follows the all-contributors specification. Contributions of any kind welcome!

About

Tina is a site editing toolkit for modern React-based sites (Gatsby and Next.js)

https://tinacms.org

License:Apache License 2.0


Languages

Language:TypeScript 91.0%Language:JavaScript 8.2%Language:CSS 0.5%Language:HTML 0.3%