tinacms-plugin-utils
A utility library and packager for TinaCMS plugins
Usage
Installation
You must have [NodeJs LTS] or greater installed. Then you can add the utils to your plugin project by running:
npm install --dev tinacms-plugin-utils
Packaging Plugins
The Plugin Utils comes with a basic CLI-driven packager for your plugin:
Command | Description | Default |
---|---|---|
npx tinacms-plugin-utils build |
Outputs bundles based on the main , browser , and typings field of the plugin's package.json |
none |
npx tinacms-plugin-utils [dev|watch] |
Starts a development process that watches for file changes and re-runs builds each time | N/A |
We recommend adding them as scripts
in the plugin's package.json
:
"scripts": {
"lint": "tinacms-plugin-utils lint",
"watch": "tinacms-plugin-utils watch",
"dev": "tinacms-plugin-utils dev",
"build": "tinacms-plugin-utils build"
}
Bundles for your plugin can be built by adding one, or many, of the following fields to package.json
, and creating a corresponding entry/source file:
| Name | Description | Example |
| main
| The default entry point for the plugin package. Builds a commonJS module intended to be used as a Node library. | dist/index.js
=> src/index.(js|ts)
|
| browser
| The entry point for browser-ready code. Builds an IIFE (immediately invoked function expression). Intended to be used in the browser. | dist/index.browser.js
=> src/index.browser.(js|ts)
|
| module
| The entry point for a modern ES6 module bundle. Intended to be used in NodeJS or modern browsers. | | dist/index.mjs
=> src/index.(js|ts)
|
Note: these fields only support paths located in
dist
orlib
folder. All other paths will cause problems.
Using Typescript
Typescript requires you to add a tsconfig.json
next to the package.json
of the project, and will honor all of the settings in tsconfig, except for ignoring: noEmitHelpers
, importHelpers
, noEmit
, emitDeclarationOnly
, and noResolve
as these must be enabled for the build to work.
Emitting declarations
To emit declaration files for your project, you need to:
- Add a
typings
field topackage.json
that maps to the declaration file of yourmain
. For example, ifmain
isdist/index.js
, thentypings
must bedist/index.d.ts
. - Set
compilerOptions.rootDir
tosrc
in yourtsconfig.json
- Add
src/**/*
toinclude
intsconfig.json
Contributing
Prerequisites
You must have NodeJS LTS installed.
Installation
Install the project dependencies by running:
npm install
Development
Start a development server by running:
npm start
Production Builds
Build a production build by running:
npm run build