Coder Social home page Coder Social logo

victorpolerca / sage Goto Github PK

View Code? Open in Web Editor NEW

This project forked from roots/sage

0.0 2.0 0.0 66.09 MB

WordPress starter theme with a modern development workflow

Home Page: https://roots.io/sage/

License: MIT License

JavaScript 36.50% CSS 7.88% PHP 55.63%

sage's Introduction

Packagist devDependency Status Build Status

Sage is a WordPress starter theme with a modern development workflow.

Sage 9 is in active development and is only currently in alpha. The master branch tracks Sage 9 development. If you want a stable version, use the latest Sage 8 release.

Features

  • Sass for stylesheets
  • ES6 for JavaScript
  • Webpack for compiling assets, optimizing images, and concatenating and minifying files
  • BrowserSync for synchronized browser testing
  • Bootstrap 4 for a front-end framework (can be removed or replaced)
  • Template inheritance with the theme wrapper

See a working example at roots-example-project.com.

Requirements

Make sure all dependencies have been installed before moving on:

Theme installation

Install Sage using Composer from your WordPress themes directory (replace your-theme-name below with the name of your theme):

# @ example.com/site/web/app/themes/
$ composer create-project roots/sage your-theme-name dev-master

Theme structure

themes/your-theme-name/   # → Root of your Sage based theme
├── assets                # → Front-end assets
│   ├── config.json       # → Settings for compiled assets
│   ├── build/            # → Webpack and ESLint config
│   ├── fonts/            # → Theme fonts
│   ├── images/           # → Theme images
│   ├── scripts/          # → Theme JS
│   └── styles/           # → Theme stylesheets
├── composer.json         # → Autoloading for `src/` files
├── composer.lock         # → Composer lock file (never edit)
├── dist/                 # → Built theme assets (never edit)
├── functions.php         # → Composer autoloader, theme includes
├── index.php             # → Never manually edit
├── node_modules/         # → Node.js packages (never edit)
├── package.json          # → Node.js dependencies and scripts
├── screenshot.png        # → Theme screenshot for WP admin
├── src/                  # → Theme PHP
│   ├── lib/Sage/         # → Theme wrapper, asset manifest
│   ├── admin.php         # → Theme customizer setup
│   ├── filters.php       # → Theme filters
│   ├── helpers.php       # → Helper functions
│   └── setup.php         # → Theme setup
├── style.css             # → Theme meta information
├── templates/            # → Theme templates
│   ├── layouts/          # → Base templates
│   └── partials/         # → Partial templates
└── vendor/               # → Composer packages (never edit)

Theme setup

Edit src/setup.php to enable or disable theme features, setup navigation menus, post thumbnail sizes, post formats, and sidebars.

Theme development

Sage uses Webpack as a build tool and npm to manage front-end packages.

Install dependencies

From the command line on your host machine (not on your Vagrant development box), navigate to the theme directory then run npm install:

# @ example.com/site/web/app/themes/your-theme-name
$ npm install

You now have all the necessary dependencies to run the build process.

Build commands

  • npm start — Compile assets when file changes are made, start BrowserSync session
  • npm run build — Compile and optimize the files in your assets directory
  • npm run build:production — Compile assets for production

Additional commands

  • npm run clean — Remove your dist/ folder
  • npm run lint — Run eslint against your assets and build scripts
  • composer test — Check your PHP for code smells with phpmd and PSR-2 compliance with phpcs

Using BrowserSync

To use BrowserSync during npm start you need to update devUrl at the bottom of assets/config.json to reflect your local development hostname.

If your local development URL is https://project-name.dev, update the file to read:

...
  "devUrl": "https://project-name.dev",
...

If you are not using Bedrock, update publicPath to reflect your folder structure:

...
  "publicPath": "/wp-content/themes/sage/"
...

By default, BrowserSync will use webpack's HMR, which won't trigger a page reload in your browser.

If you would like to force BrowserSync to reload the page whenever certain file types are edited, then add them to watch in assets/config.json.

...
  "watch": [
    "assets/scripts/**/*.js",
    "templates/**/*.php",
    "src/**/*.php"
  ],
...

Documentation

Sage 8 documentation is available at https://roots.io/sage/docs/.

Sage 9 documention is currently in progress and can be viewed at https://github.com/roots/docs/tree/sage-9/sage.

Contributing

Contributions are welcome from everyone. We have contributing guidelines to help you get started.

Community

Keep track of development and community news.

sage's People

Contributors

alexsomeoddpilot avatar austinpray avatar cabgfx avatar cfxd avatar chriscarr avatar coreywagehoft avatar dvregan avatar emaildano avatar fingli avatar foxaii avatar fullyint avatar hariadi avatar jakecobley avatar johnraz avatar julienmelissas avatar kalenjohnson avatar lautreamont3 avatar leoj3n avatar limenet avatar magox-git avatar mallorydxw avatar mwrather avatar novrian avatar ntwb avatar paultibbetts avatar qwp6t avatar retlehs avatar swalkinshaw avatar weslly avatar zensimilia avatar

Watchers

 avatar  avatar

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.