Skip to content

Commit

Permalink
feat: 添加 hugo-pnpm 开发容器模板
Browse files Browse the repository at this point in the history
  • Loading branch information
nafnix committed Feb 5, 2024
1 parent 4085a27 commit 44d5587
Show file tree
Hide file tree
Showing 5 changed files with 174 additions and 0 deletions.
56 changes: 56 additions & 0 deletions src/hugo-pnpm/.devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# syntax=docker/dockerfile:1
FROM mcr.microsoft.com/devcontainers/base:${templateOption:imageVariant}

ARG USER=vscode
ARG DEBIAN_FRONTEND=noninteractive
RUN usermod -s /usr/bin/zsh ${USER}

# VARIANT can be either 'hugo' for the standard version or 'hugo_extended' for the extended version.
ARG VARIANT=${templateOption:hugoVariant}
# VERSION can be either 'latest' or a specific version number
ARG VERSION=${templateOption:hugoVersion}

# Download Hugo
RUN case ${VERSION} in \
latest) \
export VERSION=$(curl -s https://api.github.com/repos/gohugoio/hugo/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}') ;;\
esac && \
echo ${VERSION} && \
case $(uname -m) in \
aarch64) \
export ARCH=ARM64 ;; \
*) \
export ARCH=64bit ;; \
esac && \
echo ${ARCH} && \
wget -O ${VERSION}.tar.gz https://github.com/gohugoio/hugo/releases/download/v${VERSION}/${VARIANT}_${VERSION}_Linux-${ARCH}.tar.gz && \
tar xf ${VERSION}.tar.gz && \
mv hugo /usr/bin/hugo

# Hugo dev server port
EXPOSE 1313


USER ${USER}
ARG HOME=/home/${USER}
WORKDIR ${HOME}

ARG PNPM_HOME=${HOME}/.local/share/pnpm
ENV PATH="${PNPM_HOME}:$PATH"
RUN <<EOT
wget -qO- https://get.pnpm.io/install.sh | ENV="${HOME}/.zshrc" SHELL=/bin/zsh sh -
pnpm env use -g lts
EOT

ARG OHMYZSH_HOME=${HOME}/.oh-my-zsh

# ARG OHMYZSH_THEME=${OHMYZSH_HOME}/custom/themes
# RUN <<EOT
# git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${OHMYZSH_THEME}/powerlevel10k
# sed -i 's|ZSH_THEME="devcontainers"|ZSH_THEME="powerlevel10k/powerlevel10k"|g' .zshrc
# echo 'POWERLEVEL9K_DISABLE_CONFIGURATION_WIZARD=true' >> .zshrc
# EOT

RUN <<EOT
hugo completion zsh > ${OHMYZSH_HOME}/plugins/git/_hugo
EOT
51 changes: 51 additions & 0 deletions src/hugo-pnpm/.devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
{
"name": "Hugo & pnpm",

"build": {
"dockerfile": "Dockerfile"
},

// 👇 Features to add to the Dev Container. More info: https://containers.dev/implementors/features.
// "features": { "ghcr.io/devcontainers/features/docker-in-docker:2": {} },

// 👇 Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],

// Configure tool-specific properties.
"customizations": {
// Configure properties specific to VS Code.
"vscode": {
// Set *default* container specific settings.json values on container create.
"settings": {
"html.format.templating": true
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
// https://marketplace.visualstudio.com/items?itemName=eliostruyf.vscode-front-matter
"eliostruyf.vscode-front-matter",
// https://marketplace.visualstudio.com/items?itemName=rusnasonov.vscode-hugo
"rusnasonov.vscode-hugo",
// https://marketplace.visualstudio.com/items?itemName=budparr.language-hugo-vscode
"budparr.language-hugo-vscode",
// https://marketplace.visualstudio.com/items?itemName=eliostruyf.vscode-hugo-themer
"eliostruyf.vscode-hugo-themer",
// https://marketplace.visualstudio.com/items?itemName=kaellarkin.hugo-shortcode-syntax
"kaellarkin.hugo-shortcode-syntax",

// "csstools.postcss",

// "esbenp.prettier-vscode",
// "tamasfe.even-better-toml",
// "naumovs.color-highlight",
// "GitHub.vscode-pull-request-github",
// "eamodio.gitlens",
"davidanson.vscode-markdownlint",
"streetsidesoftware.code-spell-checker"
]
}
},

"remoteUser": "vscode",

"postCreateCommand": "pnpm install-completion zsh"
}
16 changes: 16 additions & 0 deletions src/hugo-pnpm/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@

# Basic Node.js (basic-nodejs)

A basic Node.js development container.

## Options

| Options Id | Description | Type | Default Value |
|-----|-----|-----|-----|
| imageVariant | Node.js version and Debian release tag. Optional value reference: https://hub.docker.com/_/node. | string | lts-bookworm |



---

_Note: This file was auto-generated from the [devcontainer-template.json](https://github.com/nafnix/devcontainers-templates/blob/main/src/basic-nodejs/devcontainer-template.json). Add additional notes to a `NOTES.md`._
41 changes: 41 additions & 0 deletions src/hugo-pnpm/devcontainer-template.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"id": "hugo-pnpm",
"version": "0.0.1",
"name": "Hugo & pnpm",
"description": "带有 pnpm 的 Hugo 开发容器,默认 pnpm 安装 LTS 版 nodejs",
"documentationURL": "https://github.com/nafnix/devcontainers-templates/tree/main/src/hugo-pnpm",
"licenseURL": "https://github.com/nafnix/devcontainers-templates/blob/main/LICENSE",
"options": {
"imageVariant": {
"type": "string",
"description": "系统,可选值参考: https://mcr.microsoft.com/en-us/product/devcontainers/base/about 和 https://mcr.microsoft.com/v2/devcontainers/base/tags/list",
"proposals": [
"ubuntu",
"ubuntu-22.04",
"jammy",
"ubuntu-20.04",
"focal",

"debian",
"debian-12",
"bookworm",
"debian-11",
"bullseye"
],
"default": "ubuntu-22.04"
},
"hugoVariant": {
"type": "string",
"description": "Hugo 变体",
"proposals": ["hugo", "hugo_extended"],
"default": "hugo_extended"
},
"hugoVersion": {
"type": "string",
"description": "Hugo 版本,可选值参考: https://github.com/gohugoio/hugo/releases/",
"proposals": ["latest", "0.122.0", "0.121.2", "0.120.4"],
"default": "latest"
}
},
"platforms": ["Hugo", "Node.js", "pnpm", "JavaScript"]
}
10 changes: 10 additions & 0 deletions test/hugo-pnpm/test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/bash
cd $(dirname "$0")
source test-utils.sh

# Template specific tests
check "pnpm" type pnpm
check "hugo" type hugo

# Report result
reportResults

0 comments on commit 44d5587

Please sign in to comment.