📝
【Mattermost】Windows11でPluginを開発する
前提
- 下記の記事の内容が完了しているとします。
- 関連リポジトリ:テンプレート
- 上記リポジトリ内のREADME.mdの内容だけではmakeできないので、本記事は自己流になります。
手順
事前準備(Git関連)
- Gitをインストールする。
sudo su
apt install -y git
git --version
#git --version git version 2.43.0
- 関連リポジトリをクローンする。
sudo su
cd /home/ubuntu
git clone -b master https://github.com/mattermost/mattermost-plugin-starter-template.git
事前準備(設定関連)
- リポジトリ内に移動する。
sudo su
cd ~/mattermost-plugin-starter-template/
pwd
root@XXXXX:/home/ubuntu/mattermost-plugin-starter-template# pwd /home/ubuntu/mattermost-plugin-starter-template
-
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" }
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 (
.golangci.ymlを変更する。
vi .golangci.yml
.golangci.ymllinters-settings: gofmt: simplify: true goimports: - local-prefixes: github.com/mattermost/mattermost-starter-template + local-prefixes: github.com/example/my-plugin
Plugin開発
- Server関連は、
serverディレクトリ内での開発をする。(Go言語) - Webapp関連は、
webappディレクトリ内での開発をする。(React.js)
ビルド
- 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
- 動作確認としてデプロイする。
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
- プラグインがシステムコンソールで起動中になっているので、動作確認をする。
curl http://localhost:8065/plugins/com.mattermost.plugin-starter-template

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