Git Product home page Git Product logo

zigbee2mqtt.io's Introduction

Zigbee2MQTT.io

Build โš™ and Deploy ๐Ÿš€

This repository contains the Zigbee2MQTT documentation.

It is based on VuePress v2.

Architecture

Directory-Structure:

  • docgen: Some scripts to test and generate the Device-Pages.
  • docs: The actual documentation.
  • docs/.vuepress: Some VuePress enhancements like Stylesheets.
  • public: Static assets.
  • supported-devices-component: Vue.js component rendering the devices-overview page.
  • navbar.ts: Configuration for the top navigation.
  • sidebar.ts: Configuration for the sidebars by individual sections (like Guide).
  • vuepress.config.ts: The VuePress config file.

Docgen

The docgen-scripts helps to generate and update the individual device-pages (/docs/devices/*.md). zigbee-herdsman-converters exposes a list with supported devices which is used for generation. It also updates the Devices-List used by the Supported-Devices overview page.

The ## Notes section of each page is written by hand and does not come from zigbee-herdsman-converters. This section gets preserved and can be edited.

Docgen is written in Typescript, so you need a recent version of Node.js and NPM.

# Install dependencies
npm ci

# Run docgen
npm run docgen

Docgen Tests

Docgen includes some scripts to help testing the page.

  • check-device-images: Checks for missing device images
  • check-links: Checks for broken internal links

Attention: check-links iterates over the generated VuePress files, so you have to build the page first!

VuePress

Use Node.js 18 for building VuePress (other versions are not officially supported).

# Switch to node 18 (for nvm or nvm-compatible tool users)
nvm use

# Install dependencies
npm ci

Building

# Run vuepress build
npm run build

The build-artifact gets written to dist directory.

Development

# Run vuepress in dev mode with hot-reloading
npm run dev

The dev-Mode excludes the huge amount device-pages which slows down the build process drastically. If you are interested in the device-pages you could include them by using the npm run dev:devices npm-run script.

Include specific device

When running in dev-Mode, you can also specify a device (but this device only) which you would like to include in the build process. Useful when working on improving notes of just one device.
INCLUDE_DEVICE variable should be supplied with device's filename (see /docs/devices folder), without the .md. extension.

# Run vuepress in dev mode with specific device included
npx cross-env INCLUDE_DEVICE=<DEVICE_FILE_NAME> npm run dev

# Example for TS011F_plug_1
npx cross-env INCLUDE_DEVICE=TS011F_plug_1 npm run dev

Change development port

You can change development server port when the default one (8080) is taken on your system.

# Run vuepress in dev mode on specified port
npx cross-env DEV_PORT=<PORT_NUMBER> npm run dev

# Example for port no 15080
npx cross-env DEV_PORT=15080 npm run dev

Docker

You can also just use a docker-image include Node.js.

$ docker run --rm -v $PWD:/app -u $UID -ti node:18-slim bash
node@87e1438ef553:/$ cd /app
node@87e1438ef553:/app$ npm ci
node@87e1438ef553:/app$ npm run dev

zigbee2mqtt.io's People

Contributors

andreasbrett avatar chartreusito avatar danieledwardgeorgehitchcock avatar davidjb avatar dependabot[bot] avatar dhanukapulkit avatar dubhad avatar ernstkl avatar felixstorm-c4a8-adm avatar github-actions[bot] avatar hedda avatar imgbot[bot] avatar jd1900 avatar koenkk avatar mercenaruss avatar nukusinji avatar nurikk avatar otnow avatar pixeldoc2000 avatar psi-4ward avatar robertalexa avatar rotzbua avatar sergge1 avatar sjorge avatar smartboxchannel avatar thestigh avatar timoline avatar tomtonic avatar troelss avatar u17194907425 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.