Giter Club home page Giter Club logo

generator-wp-make's Introduction

WP-Make

WP-Make is a Yeoman generator for quickly creating new WordPress projects based on some established template designs currently used by 10up.

Briefly, WP-Make can be used to create a new theme, child theme, plugin, or library project - complete with unit tests - in seconds!

Getting Started

If you need it, install Yeoman through npm:

$ npm install -g yo

To install generator-wp-make clone this repository, enter the directory, and link it to npm:

$ git clone [email protected]:10up/generator-wp-make.git && cd generator-wp-make
$ npm link

Finally, in the desired project directory, initiate the generator:

$ yo wp-make

Project Types

WP-Make ships with four default project types, each invoked with a subgenerator.

For each project type you get:

  • Composer to manage server-side dependencies
  • Bower to manage front-end dependencies
  • NPM to manage development dependencies (like Grunt)
  • Grunt to streamline development
  • phpunit, paratest, and WP_Mock for PHP unit testing
  • Mocha and Chai for JS unit testing
  • A fully-fleshed out, namespaced setup for WordPress plugin development

Plugin

This subgenerator scaffolds out a standard WordPress plugin.

The project even includes some basic unit test examples to help get you started!

Theme

This subgenerator scaffolds out a standard WordPress theme.

The project even includes some basic unit test examples to help get you started!

Child Theme

This subgenerator scaffolds out a standard WordPress child theme.

The project even includes some basic unit test examples to help get you started!

Library

This subgenerator scaffolds out a WordPress library. Libraries are a bit different from plugins in that they're meant to be included via Composer and embedded directly into a theme or a plugin.

Profiles

All four sub-generators support the use of a .wpmakerc file for defining project defaults. This file should be placed in your system's home directory (~/ on *nix systems, C:\Users\{username} on Windows). The file follows a standard INI format and should look like the following:

; You can define a default profile to use if no other is specified
default = Basic

[Basic]
  ; Define the license to be used for the project (use SPDX formats)
  license        = MIT
  ; Define the standard root namespace for PHP files, otherwise `\TenUp` will be used
  root_namespace = EricMann
  ; Define the minimum versions of PHP/WordPress required, as well as the highest WP version tested
  php_min        = 7.0
  wp_tested      = 4.5
  wp_min         = 4.5
  ; Override standard author information, otherwise the current Git user will be used
  authorName     = Eric Mann
  authorEmail    = [email protected]
  authorUrl      = https://eamann.com
  ; Set a standard project homepage - this will be used as the prompt default
  projectHome    = https://ttmm.io
  
[Enterprise]
  ; If no license is required, pass `false` for both licensing fields to omit them from all output
  license        = false
  licenseuri     = false
  ; Specify the string `prompt` for fields that need to be prompted at runtime
  root_namespace = prompt
  php_min        = 5.3
  wp_tested      = 4.4.2
  wp_min         = 4.2.0
  authorName     = My Agency
  authorEmail    = [email protected]
  authorUrl      = https://myagency.org
  projectHome    = https://myagency.org/projects

If no profile is specified at runtime, the profile listed as default will be used. However you specify a non-default profile with the --profile flag at the command line:

$ yo wp-make:plugin --profile Enterprise

Some fields will always prompt - the profile will merely set the default:

  • projectHome

Some fields will prompt only when a default is NOT set in a profile:

  • root_namespace

Some fields will never prompt but will use either the profile or a hard-coded default:

  • license
  • licenseuri
  • php_min
  • wp_tested
  • wp_min

License

MIT

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.