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

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