@nomadmystic/wordpress-scaffold-cli
v0.8.6
Published
This project is created to speed up WordPress development
Downloads
10
Readme
WordPress Scaffold CLI
Installation
$ npm i -g @nomadmystic/wordpress-scaffold-cli
NOTE: This packages uses node version >=18.x
Commands
Help:
$ wps --help
Initialize Project
$ wps --pi
$ wps --project-init
Uses the WP-CLI to download the core files, creates the config needed for DB if specified, scaffolds internal files/folders, generates/updates JSON configs, adds common development files, installs the core DB and admin user, and initializes a git repo if not one already.
- User Prompts:
Project Name (String)
, Namespace of your WordPress site, used in namespacing PHP classesDatabase Setup (Boolean)
, Asks if you have setup a local DB for the site (NOTE: WILL OVERWRITE DB at the moment)Database Name (String)
, DB nameDatabase Password (String)
, DB passwordDatabase Username (String)
, DB Username
Site Title (String)
, Used inwp core install
commandSite Admin User (String)
, Admin user for the siteAdmin Email (String)
, Admin emailSite Admin Password (String)
, Admin password for the siteSite Url (String)
, Production URL for your siteDev Site Url (String)
, Development URL for your site
$ ws-scaffold-plugin
(Future Release)
Initialize Theme
$ wps --t
$ wps --theme
- User Prompts:
Project Name (String)
, Namespace of your WordPress site, used in namespacing PHP classesTheme Name (String)
, Name of your themeTheme Description (String)
, Description for your themeFrontEnd Framework (Array['None', 'Vue.js 3'])
, Choose if you want Vue.js added to your projectSite Url (String)
, Production URL for your siteDev Site Url (String)
, Development URL for your site
Bootstrap Class and hook reflection
In both the plugin and theme scaffolding I include a BootstrapClasses class which auto instantiates classes it finds in the composer.json psr-4 namespaces object.
This uses reflection to hook directly into the WordPress hook system.
Doc Properties:
@add_action
@add_filter
@priority (optional, defaults to 10)
Examples:
Filter:
/**
* @description This filters the content
* @add_filter the_content
*
* @param string $content
* @return string
*/
public function some_filter_method(string $content): string
{
// Do something with content
return $content;
}
Action:
/**
* @description This enqueues scripts
* @add_action wp_enqueue_scripts
*
* @return void
*/
public function some_action_method(): void
{
// Enqueue some scripts
}
Action with Priority:
/**
* @description This enqueues scripts
* @add_action wp_enqueue_scripts
* @priority 100
*
* @return void
*/
public function some_action_method(): void
{
// Enqueue some scripts
}
Setup
Create WordPress Project
User will need to take care of setting up hosts and DNS. Not going to scaffold this because of
varying local setups. i.e. apache/Nginx bare-metal, Docker e.t.c
DB Setup
$ sudo mysql
$ CREATE DATABASE <DATABSE_NAME>;
$ GRANT ALL PRIVILEGES ON <DATABSE_NAME>.* TO "<DATABASE_USER>"@"localhost" IDENTIFIED BY "<DATABASE_PASSWORD>";
$ FLUSH PRIVILEGES;
$ EXIT;
Project Setup
$ mkdir <YOUR_PROJECT_NAME>
$ cd <YOUR_PROJECT_NAME>
$ wps --project-init
Theme Setup
$ cd <YOUR_PROJECT_NAME>
$ wps --theme
Development
Initial Setup
$ git clone [email protected]:nomad-mystic/wordpress-scaffold-cli.git ./scaffold-cli
$ cd scaffold-cli
$ nvm use
$ npm i
$ npm run dev:tsc | npm run dev | npm run production:build
Local dev commands
$ npm run dev:wps -- --version
$ npm run dev:wps -- --help
$ npm run dev:wps -- --project-init
$ npm run dev:wps -- --theme
$ npm run dev:wps -- --plugin
Package Testing
$ npm pack ./ --pack-destination="<PATH_TO_FOLDER>"
$ cd <PATH_TO_FOLDER>
$ npm i -g <PACKAGE_NAME>
$ cd <YOUR_PROJECT_NAME>
$ wps --help
$ wps --version
For testing this package in a non-WordPress root folder copy ./env.example to ./.env and update values
Resources
- https://wordpress.org/support/article/creating-database-for-wordpress/
- https://wp-cli.org/
- https://getcomposer.org/doc/
- https://vuejs.org/
- https://sass-lang.com/
- https://webpack.js.org/
- https://github.com/nvm-sh/nvm