Skip to content

Local development script #7

Closed
Closed
@leoj3n

Description

@leoj3n

setup.zsh:

#!/usr/bin/env zsh

set -x

#
# this script:
#   - git clones bit-docs-website to ./web/bit-docs-website
#   - makes a ./tbd directory to hold packages that are "to be documented"
#   - git clones the repos specified in `packages` array (below) to ./tbd
#   - symlinks the local repos "to be documented" into bit-docs-website
#   - runs npm install inside each cloned repo directory
#   - runs the command to generate the website in bit-docs-website
#   - starts a web server to serve the generated ./web/bit-docs-website/gh-pages
#

thisdir="${0:A:h}"
tbd="${thisdir}/tbd"
web="${thisdir}/web"
website="${web}/bit-docs-website"
packages=('bit-docs' 'bit-docs-generate-html' 'bit-docs-process-tags' 'bit-docs-glob-finder' 'bit-docs-generate-readme')

#
# get local copy of bit-docs-website (will skip/fail if already exists)
#

mkdir "${web}" && git clone "https://github.com/bit-docs/bit-docs-website.git" "${website}"
npm update --prefix "${website}" && npm run bit-docs --prefix "${website}"

#
# clone repos locally (will skip/fail if already exists)
#

mkdir "${tbd}"

for repo in "${packages[@]}"
do
  git clone "https://github.com/bit-docs/${repo}.git" "${tbd}/${repo}" && npm install --prefix "${tbd}/${repo}"
done

#
# replace packages installed by npm with local repos
#

for dir in "${packages[@]}"
do
  rm -rf "${website}/node_modules/${dir}"
  ln -s "${tbd}/${dir}" "${website}/node_modules/"

  if ! [[ "${dir}" == 'bit-docs' ]]; then
    rm -rf "${website}/node_modules/bit-docs/lib/configure/node_modules/${dir}"
    ln -s "${tbd}/${dir}" "${website}/node_modules/bit-docs/lib/configure/node_modules/"
  fi
done

#
# make sure the bit-docs bin is linked
#

ln -sF '../bit-docs/bin/bit-docs' "${website}/node_modules/.bin/bit-docs"

#
# regenerate website documentation with new local repos
#

npm run bit-docs --prefix "${website}"

#
# start webserver hosting generated site
#

npm install -g http-server && http-server "${website}/gh-pages"

This script will result in a directory structure like:

.
├── setup.zsh
├── tbd
│   ├── bit-docs
│   ├── bit-docs-generate-html
│   ├── bit-docs-glob-finder
│   └── bit-docs-process-tags
└── web
    └── bit-docs-website

As you add packages into ./web/bit-docs-website/package.json like:

  "devDependencies": {
    ...
    "bit-docs-generate-readme": "^0.0.10"
  },
  "bit-docs": {
    ...
    "glob": {
      "pattern": "{node_modules,docs}/{bit-docs,bit-docs-generate-readme}/**/*.{js,md}",
      ...
    },
    ...
  }

Also add the new package into the setup script's packages array like:

packages=('bit-docs' ... 'bit-docs-generate-readme')

Then, you can re-run the script, and the new package repo will be injected to ./web/bit-docs-website and ready for local development at, for example, ./tbd/bit-docs-generate-readme.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions