📝

【Mattermost】Windows11でPluginを開発する

に公開

前提

  • 下記の記事の内容が完了しているとします。

https://zenn.dev/mshrynzw/articles/8d0d44e18222de

  • 関連リポジトリ:テンプレート

https://github.com/mattermost/mattermost-plugin-starter-template

  • 上記リポジトリ内のREADME.mdの内容だけではmakeできないので、本記事は自己流になります。

手順

事前準備(Git関連)

  1. Gitをインストールする。
sudo su
apt install -y git
git --version
#git --version
git version 2.43.0
  1. 関連リポジトリをクローンする。
sudo su
cd /home/ubuntu
git clone -b master https://github.com/mattermost/mattermost-plugin-starter-template.git

事前準備(設定関連)

  1. リポジトリ内に移動する。
sudo su
cd ~/mattermost-plugin-starter-template/
pwd
root@XXXXX:/home/ubuntu/mattermost-plugin-starter-template# pwd
/home/ubuntu/mattermost-plugin-starter-template
  1. plugin.jsonを変更する。
vi plugin.json
plugin.json
{
-    "id": "com.mattermost.plugin-starter-template",
+    "id": "com.mattermost.my-plugin",
-    "name": "Plugin Starter Template",
+    "name": "My Plugin",
-    "description": "This plugin serves as a starting point for writing a Mattermost plugin."
+    "description": "My Original Plugin"
}
  1. go.modを変更する。
vi go.mod
go.mod
-module github.com/mattermost/mattermost-plugin-starter-template
+module github.com/example/my-plugin

go 1.25
require (
  1. .golangci.ymlを変更する。
vi .golangci.yml
.golangci.yml
linters-settings:
  gofmt:
    simplify: true
  goimports:
-    local-prefixes: github.com/mattermost/mattermost-starter-template
+    local-prefixes: github.com/example/my-plugin

Plugin開発

  1. Server関連は、serverディレクトリ内での開発をする。(Go言語)
  2. Webapp関連は、webappディレクトリ内での開発をする。(React.js)

ビルド

  1. NPMではなく、Yarnを利用するために以下のコマンドを実行する。
sed -i".org" -e "s/npm/yarn/g" Makefile
sed -i".org" -e "s/NPM/YARN/g" Makefile
diff Makefile Makefile.org
sed -i".org" -e "s/NPM/YARN/g" build/setup.mk
sed -i".org" -e "s/npm/yarn/g" build/setup.mk
diff build/setup.mk build/setup.mk.org
  1. 動作確認としてデプロイする。
make deploy
root@DESKTOP-XXXXX:/home/ubuntu/mattermost-plugin-starter-template# root@PC:/home/ubuntu/mattermost-plugin-starter-template# make deploy
./build/bin/manifest apply
rm -rf server/dist;
mkdir -p server/dist;
cd server && env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 /usr/local/go/bin/go build   -trimpath -o dist/plugin-linux-amd64;
cd server && env CGO_ENABLED=0 GOOS=linux GOARCH=arm64 /usr/local/go/bin/go build   -trimpath -o dist/plugin-linux-arm64;
cd server && env CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 /usr/local/go/bin/go build   -trimpath -o dist/plugin-darwin-amd64;
cd server && env CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 /usr/local/go/bin/go build   -trimpath -o dist/plugin-darwin-arm64;
cd server && env CGO_ENABLED=0 GOOS=windows GOARCH=amd64 /usr/local/go/bin/go build   -trimpath -o dist/plugin-windows-amd64.exe;
cd webapp && /root/.nvm/versions/node/v24.15.0/bin/yarn install
➤ YN0065: Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry
➤ YN0065: Run yarn config set --home enableTelemetry 0 to disable

➤ YN0000: · Yarn 4.14.1
➤ YN0000: ┌ Resolution step
➤ YN0085: │ + @babel/cli@npm:7.25.6, @babel/core@npm:7.25.2, @babel/preset-env@npm:7.25.4, and 836 more.
➤ YN0000: └ Completed in 3s 466ms
➤ YN0000: ┌ Post-resolution validation
➤ YN0002: │ root-workspace-0b6124@workspace:. doesn't provide eslint (pb41791), requested by @typescript-eslint/eslint-plugin and other dependencies.
➤ YN0086: │ Some peer dependencies are incorrectly met by your project; run yarn explain peer-requirements <hash> for details, where <hash> is the six-letter p-prefixed code.
➤ YN0086: │ Some peer dependencies are incorrectly met by dependencies; run yarn explain peer-requirements for details.
➤ YN0000: └ Completed
root@PC:/home/ubuntu/mattermost-plugin-starter-template#^Ce/commander-npm-10.0.1-f17613b72b-10c0.zip/node_modules/comman
root@PC:/home/ubuntu/mattermost-plugin-starter-template# nvm install 20
Downloading and installing node v20.20.2...
Downloading https://nodejs.org/dist/v20.20.2/node-v20.20.2-linux-x64.tar.xz...
################################################################################################################# 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v20.20.2 (npm v10.8.2)
root@PC:/home/ubuntu/mattermost-plugin-starter-template# nvm use 20
Now using node v20.20.2 (npm v10.8.2)
root@PC:/home/ubuntu/mattermost-plugin-starter-template# nvm alias default 20
default -> 20 (-> v20.20.2)
root@PC:/home/ubuntu/mattermost-plugin-starter-template# make clean
build/setup.mk:48: *** "yarn is not available: see https://www.yarnjs.com/get-yarn".  Stop.
root@PC:/home/ubuntu/mattermost-plugin-starter-template# make deploy
build/setup.mk:48: *** "yarn is not available: see https://www.yarnjs.com/get-yarn".  Stop.
root@PC:/home/ubuntu/mattermost-plugin-starter-template# corepack enable
root@PC:/home/ubuntu/mattermost-plugin-starter-template# corepack prepare yarn@stable --activate
Preparing yarn@stable for immediate activation...
root@PC:/home/ubuntu/mattermost-plugin-starter-template# yarn -v
4.14.1
root@PC:/home/ubuntu/mattermost-plugin-starter-template# make clean
rm -fr dist/
rm -fr server/coverage.txt
rm -fr server/dist
rm -fr webapp/junit.xml
rm -fr webapp/dist
rm -fr webapp/node_modules
rm -fr build/bin/
root@PC:/home/ubuntu/mattermost-plugin-starter-template# make deploy
./build/bin/manifest apply
rm -rf server/dist;
mkdir -p server/dist;
cd server && env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 /usr/local/go/bin/go build   -trimpath -o dist/plugin-linux-amd64;
cd server && env CGO_ENABLED=0 GOOS=linux GOARCH=arm64 /usr/local/go/bin/go build   -trimpath -o dist/plugin-linux-arm64;
cd server && env CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 /usr/local/go/bin/go build   -trimpath -o dist/plugin-darwin-amd64;
cd server && env CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 /usr/local/go/bin/go build   -trimpath -o dist/plugin-darwin-arm64;
cd server && env CGO_ENABLED=0 GOOS=windows GOARCH=amd64 /usr/local/go/bin/go build   -trimpath -o dist/plugin-windows-amd64.exe;
cd webapp && /root/.nvm/versions/node/v20.20.2/bin/yarn install
➤ YN0000: · Yarn 4.14.1
➤ YN0000: ┌ Resolution step
➤ YN0000: └ Completed
➤ YN0000: ┌ Post-resolution validation
➤ YN0002: │ root-workspace-0b6124@workspace:. doesn't provide eslint (pb41791), requested by @typescript-eslint/eslint-plugin and other dependencies.
➤ YN0086: │ Some peer dependencies are incorrectly met by your project; run yarn explain peer-requirements <hash> for details, where <hash> is the six-letter p-prefixed code.
➤ YN0086: │ Some peer dependencies are incorrectly met by dependencies; run yarn explain peer-requirements for details.
➤ YN0000: └ Completed
➤ YN0000: ┌ Fetch step
➤ YN0000: └ Completed in 0s 375ms
➤ YN0000: ┌ Link step
➤ YN0092: │ ESM support for PnP uses the experimental loader API and is therefore experimental
➤ YN0000: └ Completed
➤ YN0000: · Done with warnings in -1s 726ms
touch webapp/node_modules
cd webapp && /root/.nvm/versions/node/v20.20.2/bin/yarn run build;
asset main.js 25.8 KiB [emitted] [minimized] (name: main)
orphan modules 1.4 KiB [orphan] 1 module
runtime modules 221 bytes 1 module
modules by path ../../../../root/.yarn/berry/cache/core-js-npm-3.26.0-bb48de0ef9-10c0.zip/node_m...(truncated) 60.1 KiB
  ../../../../root/.yarn/berry/cache/core-js-npm-3.26.0-bb48de0ef9-10c0.zip/node_m...(truncated) 2.61 KiB [built] [code generated]
  ../../../../root/.yarn/berry/cache/core-js-npm-3.26.0-bb48de0ef9-10c0.zip/node_m...(truncated) 590 bytes [built] [code generated]
  ../../../../root/.yarn/berry/cache/core-js-npm-3.26.0-bb48de0ef9-10c0.zip/node_m...(truncated) 206 bytes [built] [code generated]
  ../../../../root/.yarn/berry/cache/core-js-npm-3.26.0-bb48de0ef9-10c0.zip/node_m...(truncated) 379 bytes [built] [code generated]
  + 101 modules
modules by path ../../../../root/.yarn/berry/cache/core-js-npm-3.26.0-bb48de0ef9-10c0.zip/node_m...(truncated) 14.8 KiB
  ../../../../root/.yarn/berry/cache/core-js-npm-3.26.0-bb48de0ef9-10c0.zip/node_m...(truncated) 332 bytes [built] [code generated]
  ../../../../root/.yarn/berry/cache/core-js-npm-3.26.0-bb48de0ef9-10c0.zip/node_m...(truncated) 9.54 KiB [built] [code generated]
  ../../../../root/.yarn/berry/cache/core-js-npm-3.26.0-bb48de0ef9-10c0.zip/node_m...(truncated) 1.39 KiB [built] [code generated]
  ../../../../root/.yarn/berry/cache/core-js-npm-3.26.0-bb48de0ef9-10c0.zip/node_m...(truncated) 1.14 KiB [built] [code generated]
  + 3 modules
./src/index.tsx + 1 modules 1.88 KiB [built] [code generated]
webpack 5.95.0 compiled successfully in 803 ms
rm -rf dist/
mkdir -p dist/com.mattermost.plugin-starter-template
./build/bin/manifest dist
cp -r assets dist/com.mattermost.plugin-starter-template/
cp -r public dist/com.mattermost.plugin-starter-template/
mkdir -p dist/com.mattermost.plugin-starter-template/server
cp -r server/dist dist/com.mattermost.plugin-starter-template/server/
mkdir -p dist/com.mattermost.plugin-starter-template/webapp
cp -r webapp/dist dist/com.mattermost.plugin-starter-template/webapp/
cd dist && tar -cvzf com.mattermost.plugin-starter-template-0.5.0+22ef315.tar.gz com.mattermost.plugin-starter-template
com.mattermost.plugin-starter-template/
com.mattermost.plugin-starter-template/plugin.json
com.mattermost.plugin-starter-template/webapp/
com.mattermost.plugin-starter-template/webapp/dist/
com.mattermost.plugin-starter-template/webapp/dist/main.js
com.mattermost.plugin-starter-template/assets/
com.mattermost.plugin-starter-template/assets/.gitkeep
com.mattermost.plugin-starter-template/assets/starter-template-icon.svg
com.mattermost.plugin-starter-template/public/
com.mattermost.plugin-starter-template/public/hello.html
com.mattermost.plugin-starter-template/server/
com.mattermost.plugin-starter-template/server/dist/
com.mattermost.plugin-starter-template/server/dist/plugin-windows-amd64.exe
com.mattermost.plugin-starter-template/server/dist/plugin-darwin-arm64
com.mattermost.plugin-starter-template/server/dist/plugin-darwin-amd64
com.mattermost.plugin-starter-template/server/dist/plugin-linux-amd64
com.mattermost.plugin-starter-template/server/dist/plugin-linux-arm64
plugin built at: dist/com.mattermost.plugin-starter-template-0.5.0+22ef315.tar.gz
Makefile:280: WARNING
Makefile:281: You are building with the default plugin ID "com.mattermost.plugin-starter-template".
Makefile:282: Consider editing plugin.json to configure your project with a unique plugin ID.
./build/bin/pluginctl deploy com.mattermost.plugin-starter-template dist/com.mattermost.plugin-starter-template-0.5.0+22ef315.tar.gz
2026/05/10 16:11:59 Authenticating as iq87io25@gmail.com against http://localhost:8065.
2026/05/10 16:11:59 Uploading plugin via API.
2026/05/10 16:12:01 Enabling plugin.
root@DESKTOP-XXXXX:/home/ubuntu/mattermost-plugin-starter-template
  1. プラグインがシステムコンソールで起動中になっているので、動作確認をする。
curl http://localhost:8065/plugins/com.mattermost.plugin-starter-template

  1. 本番環境のためにtar.gzファイルを作成するため、下記コマンドでを実行する。
make dist
  1. distディレクトリにtar.gzファイルがあるので、本番環境ではシステムコンソールからtar.gzファイルをアップロードし、さらに有効にする。
ls -la dist

備考

関連記事

https://zenn.dev/mshrynzw/articles/8d0d44e18222de

Discussion