Giter Site home page Giter Site logo

mattermost / mattermost-plugin-starter-template Goto Github PK

View Code? Open in Web Editor NEW
126.0 40.0 117.0 2.02 MB

Build scripts and templates for writing Mattermost plugins.

Home Page: https://developers.mattermost.com/extend/plugins/

License: Apache License 2.0

Makefile 34.64% Go 53.92% HTML 0.21% JavaScript 8.93% TypeScript 2.30%
hacktoberfest mattermost mattermost-plugin template

mattermost-plugin-starter-template's Introduction

Plugin Starter Template CircleCI branch

This plugin serves as a starting point for writing a Mattermost plugin. Feel free to base your own plugin off this repository.

To learn more about plugins, see our plugin documentation.

This template requires node v16 and npm v8. You can download and install nvm to manage your node versions by following the instructions here. Once you've setup the project simply run nvm i within the root folder to use the suggested version of node.

Getting Started

Use GitHub's template feature to make a copy of this repository by clicking the "Use this template" button.

Alternatively shallow clone the repository matching your plugin name:

git clone --depth 1 https://github.com/mattermost/mattermost-plugin-starter-template com.example.my-plugin

Note that this project uses Go modules. Be sure to locate the project outside of $GOPATH.

Edit the following files:

  1. plugin.json with your id, name, and description:
{
    "id": "com.example.my-plugin",
    "name": "My Plugin",
    "description": "A plugin to enhance Mattermost."
}
  1. go.mod with your Go module path, following the <hosting-site>/<repository>/<module> convention:
module github.com/example/my-plugin
  1. .golangci.yml with your Go module path:
linters-settings:
  # [...]
  goimports:
    local-prefixes: github.com/example/my-plugin

Build your plugin:

make

This will produce a single plugin file (with support for multiple architectures) for upload to your Mattermost server:

dist/com.example.my-plugin.tar.gz

Development

To avoid having to manually install your plugin, build and deploy your plugin using one of the following options. In order for the below options to work, you must first enable plugin uploads via your config.json or API and restart Mattermost.

    "PluginSettings" : {
        ...
        "EnableUploads" : true
    }

Deploying with Local Mode

If your Mattermost server is running locally, you can enable local mode to streamline deploying your plugin. Edit your server configuration as follows:

{
    "ServiceSettings": {
        ...
        "EnableLocalMode": true,
        "LocalModeSocketLocation": "/var/tmp/mattermost_local.socket"
    },
}

and then deploy your plugin:

make deploy

You may also customize the Unix socket path:

export MM_LOCALSOCKETPATH=/var/tmp/alternate_local.socket
make deploy

If developing a plugin with a webapp, watch for changes and deploy those automatically:

export MM_SERVICESETTINGS_SITEURL=http://localhost:8065
export MM_ADMIN_TOKEN=j44acwd8obn78cdcx7koid4jkr
make watch

Deploying with credentials

Alternatively, you can authenticate with the server's API with credentials:

export MM_SERVICESETTINGS_SITEURL=http://localhost:8065
export MM_ADMIN_USERNAME=admin
export MM_ADMIN_PASSWORD=password
make deploy

or with a personal access token:

export MM_SERVICESETTINGS_SITEURL=http://localhost:8065
export MM_ADMIN_TOKEN=j44acwd8obn78cdcx7koid4jkr
make deploy

Releasing new versions

The version of a plugin is determined at compile time, automatically populating a version field in the plugin manifest:

  • If the current commit matches a tag, the version will match after stripping any leading v, e.g. 1.3.1.
  • Otherwise, the version will combine the nearest tag with git rev-parse --short HEAD, e.g. 1.3.1+d06e53e1.
  • If there is no version tag, an empty version will be combined with the short hash, e.g. 0.0.0+76081421.

To disable this behaviour, manually populate and maintain the version field.

How to Release

To trigger a release, follow these steps:

  1. For Patch Release: Run the following command:

    make patch
    

    This will release a patch change.

  2. For Minor Release: Run the following command:

    make minor
    

    This will release a minor change.

  3. For Major Release: Run the following command:

    make major
    

    This will release a major change.

  4. For Patch Release Candidate (RC): Run the following command:

    make patch-rc
    

    This will release a patch release candidate.

  5. For Minor Release Candidate (RC): Run the following command:

    make minor-rc
    

    This will release a minor release candidate.

  6. For Major Release Candidate (RC): Run the following command:

    make major-rc
    

    This will release a major release candidate.

Q&A

How do I make a server-only or web app-only plugin?

Simply delete the server or webapp folders and remove the corresponding sections from plugin.json. The build scripts will skip the missing portions automatically.

How do I include assets in the plugin bundle?

Place them into the assets directory. To use an asset at runtime, build the path to your asset and open as a regular file:

bundlePath, err := p.API.GetBundlePath()
if err != nil {
    return errors.Wrap(err, "failed to get bundle path")
}

profileImage, err := ioutil.ReadFile(filepath.Join(bundlePath, "assets", "profile_image.png"))
if err != nil {
    return errors.Wrap(err, "failed to read profile image")
}

if appErr := p.API.SetProfileImage(userID, profileImage); appErr != nil {
    return errors.Wrap(err, "failed to set profile image")
}

How do I build the plugin with unminified JavaScript?

Setting the MM_DEBUG environment variable will invoke the debug builds. The simplist way to do this is to simply include this variable in your calls to make (e.g. make dist MM_DEBUG=1).

mattermost-plugin-starter-template's People

Contributors

amwolff avatar coltoneshaw avatar cpanato avatar cpoile avatar crspeller avatar dependabot[bot] avatar ethervoid avatar grubbins avatar hanzei avatar hmhealey avatar ilgooz avatar jasonblais avatar jespino avatar jwilander avatar kaakaa avatar levb avatar lieut-data avatar m-zubairahmed avatar marianunez avatar mickmister avatar moussetc avatar nathanmkaya avatar niklabh avatar phoinixgrr avatar scottleedavis avatar shieldsjared avatar spirosoik avatar tasdomas avatar tnir avatar trilopin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mattermost-plugin-starter-template's Issues

golangci-lint version 1.25.1 causes error in build/manifest/main.go

@jfrerich Would you please report the gosec issue on https://github.com/mattermost/mattermost-plugin-starter-template?

Originally posted by @hanzei in mattermost/mattermost-plugin-demo#100 (comment)

Summary

This issue was found after integrating golangci-lint into the mattermost-plugin-demo repo (mattermost/mattermost-plugin-demo#100).

If running v1.25.1 the following gosec error shows up. This issue needs a resolution (still to be determined).

image

Update manifest.go to include entire plugin manifest.

Update build/manifest.main.go to dump the entire manifest from plugin.json into server/manifest.go instead of just the two fields listed there now. The declared type can just be model.Manifest from the github.com/mattermost/mattermost-server/model package.

This will enable plugins to reference their own manifests programmatically without having to parse the plugin.json manually.


If you're interested please comment here and come join our "Contributors" community channel on our daily build server, where you can discuss questions with community members and the Mattermost core team. For technical advice or questions, please join our "Developers" community channel.

New contributors please see our Developer's Guide.

JIRA: https://mattermost.atlassian.net/browse/MM-20035

Sync tool checks are failing even if the repositories are clean

Hi! I am trying the relatively new synchronisation tool, but it always fails with this message:

failed check: "source" repository is not clean
exit status 1

Both of the source and target repositories are clean (git status outputs nothing to commit, working tree clean).

Go version: tested with v1.16.4 and v15.5.5
Concerned plugin: https://github.com/nathanaelhoun/mattermost-plugin-broomer
Starter-template is updated to latest master

Error on plugin activation

When trying out a self-compiled version of the master branch of the sample plugin, there are the following errors:

  • When enabling the plugin:
{"level":"error","ts":1541187867.5791962,"caller":"plugin/client_rpc_generated.go:67","msg":"RPC call OnConfigurationChange to plugin failed.","plugin_id":"com.mattermost.sample-plugin","error":"unexpected EOF"}
{"level":"error","ts":1541187868.0012312,"caller":"plugin/client_rpc_generated.go:67","msg":"RPC call OnConfigurationChange to plugin failed.","plugin_id":"com.mattermost.sample-plugin","error":"connection is shut down"}
{"level":"error","ts":1541187868.238017,"caller":"plugin/client_rpc_generated.go:67","msg":"RPC call OnConfigurationChange to plugin failed.","plugin_id":"com.mattermost.sample-plugin","error":"connection is shut down"}
  • When disabling the plugin:
{"level":"warn","ts":1541187955.0697181,"caller":"go-plugin/client.go:371","msg":"error closing client during Kill","plugin_id":"com.mattermost.sample-plugin","wrapped_extras":"errconnection is shut down"}`

Mattermost Server is a 5.4.0-rc1 Docker running on a Manjaro.
Does anyone else have that issue?

.editorconfig file is probably incorrectly formatted

My IDE (GoLand 2020.2.3) complains about the .editorconfig file.

This is the problematic line:

Parser's error:

<pattern>, EditorConfigTokenType.ASTERISK, EditorConfigTokenType.DOUBLE_ASTERISK, EditorConfigTokenType.L_BRACKET, EditorConfigTokenType.L_CURLY, EditorConfigTokenType.PATTERN_IDENTIFIER, EditorConfigTokenType.QUESTION or EditorConfigTokenType.R_BRACKET expected, got ','

This fixes the problem:

-[Makefile,*.mk]
+[{Makefile, *.mk}]

Am I correct with this one?

Ensure Manifest is valid

The plugin manifest has an IsValid() method that checks if the manifest is semantically correct. The tooling should use that method to validate the manifest.

This could be implemented via a go test.

Can't upload plugin via API.

โžœ  g-plugin git:(master) โœ— export MM_SERVICESETTINGS_SITEURL=http://localhost:8065
โžœ  g-plugin git:(master) โœ— export MM_ADMIN_USERNAME=hobbes
โžœ  g-plugin git:(master) โœ— export MM_ADMIN_PASSWORD=building_character
โžœ  g-plugin git:(master) โœ— make deploy
Installing plugin via API
http --print b --check-status http://localhost:8065/api/v4/users/me || ( \
	    TOKEN=`http --print h POST http://localhost:8065/api/v4/users/login login_id=hobbes password=building_character | grep Token | cut -f2 -d' '` && \
	    http --print b GET http://localhost:8065/api/v4/users/me Authorization:"Bearer $TOKEN" \
	)
{
    "detailed_error": "",
    "id": "api.context.session_expired.app_error",
    "message": "Invalid or expired session, please login again.",
    "request_id": "mnmrma8wnpb4mnbubfct568whc",
    "status_code": 401
}

{
    "allow_marketing": true,
    "auth_data": "",
    "auth_service": "",
    "create_at": 1532409647831,
    "delete_at": 0,
    "email": "[email protected]",
    "first_name": "",
    "id": "96kjh8ttpin1zj58hd5utgnfca",
    "last_name": "",
    "last_password_update": 1532409647831,
    "locale": "en",
    "nickname": "",
    "notify_props": {
        "channel": "true",
        "comments": "never",
        "desktop": "mention",
        "desktop_sound": "true",
        "email": "true",
        "first_name": "false",
        "mention_keys": "hobbes,@hobbes",
        "push": "mention",
        "push_status": "away"
    },
    "position": "",
    "roles": "system_admin system_user",
    "timezone": {
        "automaticTimezone": "",
        "manualTimezone": "",
        "useAutomaticTimezone": "true"
    },
    "update_at": 1532604589454,
    "username": "hobbes"
}

http --print b DELETE http://localhost:8065/api/v4/plugins/g-plugin
{
    "detailed_error": "",
    "id": "api.context.session_expired.app_error",
    "message": "Invalid or expired session, please login again.",
    "request_id": "tbtxjs3xdfd19xgyanawh6u47h",
    "status_code": 401
}

http --print b --check-status --form POST http://localhost:8065/api/v4/plugins plugin@dist/g-plugin.tar.gz && \
	    http --print b POST http://localhost:8065/api/v4/plugins/g-plugin/enable

http: error: ConnectionError: ('Connection aborted.', BrokenPipeError(32, 'Broken pipe')) while doing POST request to URL: http://localhost:8065/api/v4/plugins
make: *** [deploy] Error 1

Here is my login attempt:

โžœ  g-plugin git:(master) โœ— http --print h POST http://localhost:8065/api/v4/users/login login_id=hobbes password=build_character
HTTP/1.1 200 OK
Content-Length: 643
Content-Type: application/json
Date: Sun, 05 Aug 2018 14:24:21 GMT
Set-Cookie: MMAUTHTOKEN=dc54xredjbywug5xx8kh7x9cqy; Path=/; Expires=Tue, 04 Sep 2018 14:24:21 GMT; Max-Age=2592000; HttpOnly
Set-Cookie: MMUSERID=96kjh8ttpin1zj58hd5utgnfca; Path=/; Expires=Tue, 04 Sep 2018 14:24:21 GMT; Max-Age=2592000
Token: dc54xredjbywug5xx8kh7x9cqy
X-Request-Id: gsxnbz7t1p8b8gf1rgjy4zd3xh
X-Version-Id: 5.1.0.5.1.0.6a280dd4b379e3dff0eca57ea893c010.false

Seems like I am missing something obvious...

Error after running `make`

Running make produces this error.

  • Commenting out line 70 in the Makefile fixes the issue

# $(GO) vet -vettool=$(GOPATH)/bin/shadow ./...

Usage: shadow [-flag] [package]

This analyzer check for shadowed variables.
A shadowed variable is a variable declared in an inner scope
with the same name and type as a variable in an outer scope,
and where the outer variable is mentioned after the inner one
is declared.

(This definition can be refined; the module generates too many
false positives and is not yet enabled by default.)

For example:

        func BadRead(f *os.File, buf []byte) error {
                var err error
                for {
                        n, err := f.Read(buf) // shadows the function variable 'err'
                        if err != nil {
                                break // causes return of wrong value
                        }
                        foo(buf)
                }
                return err
        }


Flags:  -V      print version and exit
  -all
        no effect (deprecated)
  -c int
        display offending line with this many lines of context (default -1)
  -cpuprofile string
        write CPU profile to this file
  -debug string
        debug flags, any subset of "fpstv"
  -fix
        apply all suggested fixes
  -flags
        print analyzer flags in JSON
  -json
        emit JSON output
  -memprofile string
        write memory profile to this file
  -source
        no effect (deprecated)
  -strict
        whether to be strict about shadowing; can be noisy
  -tags string
        no effect (deprecated)
  -trace string
        write trace log to this file
  -v    no effect (deprecated)
make: *** [govet] Error 2

Add ".nvmrc" file for webapp.

It becomes difficult sometimes to use the proper node version for installing the web app dependencies on the hit and trial method as the .nvmrc file is missing. Please let me know if I should create one PR for it, for me the node version that worked correctly was 14.18.0.

Windows: server executables in dist don't have correct file permissions

Unix executables built on Windows deployed to the server through the plugin API don't have the x Unix file permission (only .exe has it) and because of that Mattermost will refuse to run them (permission denied).
In my setup I solved that by using WSL feature of Windows 10, so essentially I had to use Linux to build.

I did not find any other solution for this, but maybe it's worth to mention this in the docs or maybe solve it on Mattermost's server side?

Investigate stripping symbol table and debugging information

Building https://github.com/mattermost/mattermost-plugin-autolink with -ldflags="-s -w" reduces the final bundle down from 26M to 16M. Other plugins would benefit similarly.

As per http://dominik.honnef.co/posts/2016/10/go-and-strip/,

In addition to the misconception that stripping Go binaries breaks them, there have been several related misconceptions. The biggest one is that strip would make panic stacktraces useless by stripping function names, file names and line numbers. This is not the case. While strip will remove various useful debug information, it will not affect how panics are rendered. This also implies that strip is not sufficient to guarantee that all identifying information are removed from an executable.

Investigate the impact of the ldflags addition above, compare it to strip, and make a Makefile recommendation that distinguishes production from development builds, preserving debugging symbols in the later.

Repo sync tool: Support `excludes` field in actions

Would it be possible to support an exclude field in plan.yml near paths, in order to exclude certain files/folders? build/sync for example should only be in the starter-template, and not in the other plugin repos. So when the build folder is sync'd, the build/sync folder comes along too.

Originally posted by @mickmister in #86 (comment)

Does current master work well with the 5th branch?

plugin.json says "min_server_version": "5.37.0", but backend plugin requires github.com/mattermost/mattermost-server/v6.

Plugin builded with current master has error deploying to v5.39.1:

{
    "level": "error",
    "ts": 1645430037.4994786,
    "caller": "mlog/log.go:251",
    "msg": "Unable to activate plugin",
    "plugin_id": "ID",
    "error": "unable to start plugin: ID: Unrecognized remote plugin message: \n\nThis usually means that the plugin is either invalid or simply\nneeds to be recompiled to support the latest protocol.",
    "errorVerbose": "Unrecognized remote plugin message: \n\nThis usually means that the plugin is either invalid or simply\nneeds to be recompiled to support the latest protocol.\nunable to start plugin: ID\ngithub.com/mattermost/mattermost-server/v5/plugin.(*Environment).Activate\n\tgithub.com/mattermost/mattermost-server/v5/plugin/environment.go:274\ngithub.com/mattermost/mattermost-server/v5/app.(*Server).syncPluginsActiveState.func2\n\tgithub.com/mattermost/mattermost-server/v5/app/plugin.go:144\nruntime.goexit\n\truntime/asm_amd64.s:1374"
}

Build fail

after make command:

Checking for style guide compliance
cd webapp && npm run lint

> @ lint /home/vovan/mattermost_plugin/com.example.my-plugin/webapp
> eslint --ignore-pattern node_modules --ignore-pattern dist --ext .js --ext .jsx --ext tsx --ext ts . --quiet --cache

cd webapp && npm run check-types

> @ check-types /home/vovan/mattermost_plugin/com.example.my-plugin/webapp
> tsc

Running golangci-lint
golangci-lint run ./...
/usr/bin/go test -v -race ./server/...
=== RUN   TestServeHTTP
--- PASS: TestServeHTTP (0.00s)
PASS
ok  	github.com/mattermost/mattermost-plugin-starter-template/server	(cached)
cd webapp && /home/vovan/.nvm/versions/node/v12.18.3/bin/npm run test;

> @ test /home/vovan/mattermost_plugin/com.example.my-plugin/webapp
> jest --forceExit --detectOpenHandles --verbose

 PASS  src/manifest.test.ts
  โœ“ Plugin manifest, id and version are defined (3 ms)
  โœ“ Plugin id and version are defined (2 ms)

Test Suites: 1 passed, 1 total
Tests:       2 passed, 2 total
Snapshots:   0 total
Time:        2.876 s, estimated 3 s
Ran all test suites.
cd ./build/sync && /usr/bin/go test -v -race ./...
go: downloading sigs.k8s.io/yaml v1.2.0
go: downloading gopkg.in/src-d/go-git.v4 v4.13.1
go: downloading github.com/emirpasic/gods v1.12.0
go: downloading github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99
go: downloading gopkg.in/src-d/go-billy.v4 v4.3.2
go: downloading github.com/sergi/go-diff v1.0.0
go: downloading github.com/src-d/gcfg v1.4.0
go: downloading github.com/xanzy/ssh-agent v0.2.1
go: downloading github.com/mitchellh/go-homedir v1.1.0
go: downloading github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd
go: downloading golang.org/x/sys v0.0.0-20200817155316-9781c653f443
go: downloading gopkg.in/warnings.v0 v0.1.2
?   	github.com/mattermost/mattermost-plugin-starter-template/build/sync	[no test files]
=== RUN   TestCopyDirectory
--- PASS: TestCopyDirectory (0.00s)
=== RUN   TestOverwriteFileAction
--- PASS: TestOverwriteFileAction (0.00s)
=== RUN   TestOverwriteDirectoryAction
--- PASS: TestOverwriteDirectoryAction (0.00s)
=== RUN   TestRepoIsCleanChecker
--- PASS: TestRepoIsCleanChecker (0.00s)
=== RUN   TestPathExistsChecker
--- PASS: TestPathExistsChecker (0.00s)
=== RUN   TestUnalteredChecker
    checks_test.go:101: 
        	Error Trace:	checks_test.go:101
        	Error:      	Expected nil, but got: &errors.errorString{s:"object not found"}
        	Test:       	TestUnalteredChecker
    checks_test.go:120: 
        	Error Trace:	checks_test.go:120
        	Error:      	Should be true
        	Test:       	TestUnalteredChecker
    checks_test.go:121: 
        	Error Trace:	checks_test.go:121
        	Error:      	Error message not equal:
        	            	expected: "file \"/tmp/test474968979/build/sync/plan/testdata/a\" has been altered"
        	            	actual  : "object not found"
        	Test:       	TestUnalteredChecker
--- FAIL: TestUnalteredChecker (0.00s)
=== RUN   TestUnmarshalPlan
--- PASS: TestUnmarshalPlan (0.00s)
=== RUN   TestRunPlanSuccessfully
UPDATED	somepath
--- PASS: TestRunPlanSuccessfully (0.00s)
=== RUN   TestRunPlanPreCheckFail
--- PASS: TestRunPlanPreCheckFail (0.00s)
=== RUN   TestRunPlanActionCheckFails
UPDATED	somepath
--- PASS: TestRunPlanActionCheckFails (0.00s)
=== RUN   TestRunPlanNoFallbacks
FAILED	somepath: check failed, fail
--- PASS: TestRunPlanNoFallbacks (0.00s)
=== RUN   TestRunPlanCheckError
--- PASS: TestRunPlanCheckError (0.00s)
=== RUN   TestRunPlanActionError
action failed: fail
--- PASS: TestRunPlanActionError (0.00s)
FAIL
FAIL	github.com/mattermost/mattermost-plugin-starter-template/build/sync/plan	0.026s
=== RUN   TestFileHistory
    file_history_test.go:20: 
        	Error Trace:	file_history_test.go:20
        	Error:      	Expected nil, but got: &errors.errorString{s:"object not found"}
        	Test:       	TestFileHistory
    file_history_test.go:21: 
        	Error Trace:	file_history_test.go:21
        	Error:      	[]string(nil) does not contain "ba7192052d7cf77c55d3b7bf40b350b8431b208b"
        	Test:       	TestFileHistory
    file_history_test.go:25: 
        	Error Trace:	file_history_test.go:25
        	Error:      	Not equal: 
        	            	expected: &errors.errorString{s:"not found"}
        	            	actual  : &errors.errorString{s:"object not found"}
        	            	
        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -1,3 +1,3 @@
        	            	 (*errors.errorString)({
        	            	- s: (string) (len=9) "not found"
        	            	+ s: (string) (len=16) "object not found"
        	            	 })
        	Test:       	TestFileHistory
--- FAIL: TestFileHistory (0.01s)
FAIL
FAIL	github.com/mattermost/mattermost-plugin-starter-template/build/sync/plan/git	0.024s
FAIL
make: *** [Makefile:189: test] ะžัˆะธะฑะบะฐ 1

Trailing slash on `MM_SERVICESETTINGS_SITEURL` causes non-obvious errors

While attempting to use this starter template, I set my MM_SERVICESETTINGS_SITEURL with a trailing slash. It was not immediately obvious that this was the cause of the error I was receiving, as it appeared that some calls were successful while others were not

2020/08/21 13:00:02 Authenticating using token against https://mattermost/.
2020/08/21 13:00:02 Uploading plugin via API.
2020/08/21 13:00:02 Enabling plugin.
Failed: failed to enable plugin: : Sorry, we could not find the page., There doesn't appear to be an api call for the url='/api/v4/plugins/resfor-mattermost-azure-devops-integration/enable'.  Typo? are you missing a team_id or user_id as part of the url?

Usage:
    pluginctl deploy <plugin id> <bundle path>
    pluginctl disable <plugin id>
    pluginctl enable <plugin id>
    pluginctl reset <plugin id>
make: *** [Makefile:127: deploy] Error 1

As you can see in the log, the upload appears to work, but then the subsequent call to enable it fails. What's interesting is that I dug into the logs and found that the upload actually did not succeed at all... This led to quite a bit of chin scratching and hunting through code before realizing I should remove the trailing slash.

Not sure if the best solution is to

  1. Trim the trailing slash for the end-user, or
  2. Put a comment in the readme file (easiest)

Happy to submit a PR for either.

Error after running `make`

gleke@gleke-QTJ5: ~$ git clone --depth 1 https://github.com/mattermost/mattermost-plugin-starter-template com.example.my-plugin

gleke@gleke-QTJ5:~$ cd com.example.my-plugin
gleke@gleke-QTJ5:~$ make

> @ check-types /home/gleke/com.example.my-plugin/webapp
> tsc

Running golangci-lint
golangci-lint run ./...
ERRO Running error: context loading failed: no go files to analyze 
Makefile:43: recipe for target 'check-style' failed
make: *** [check-style] Error 5
gleke@gleke-QTJ5:~/com.example.my-plugin$ 

Fix `make deploy` to correctly report an error

Running make deploy can appear to succeed:

> make deploy
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   735  100   679  100    56   7216    595 --:--:-- --:--:-- --:--:--  7223
Installing plugin via API
OK.

when in fact the configured MM_ADMIN_USERNAME or MM_ADMIN_PASSWORD was rejected by the server:

DEBU[2019-11-01T15:15:56.513026-04:00] Received HTTP request                         caller="web/handlers.go:77" method=POST request_id=97xj8ku85i81u89mq3oudjxf9c url=/api/v4/plugins/com.mattermost.webex/
enable
DEBU[2019-11-01T15:15:56.5131168-04:00] Invalid or expired session, please login again.  caller="mlog/log.go:162" err_details=UserRequired err_where= http_code=401 ip_addr="::1" method=POST path=/api/v4/p
lugins/com.mattermost.plugin-starter-template/enable request_id=97xj8ku85i81u89mq3oudjxf9c user_id=

The issue is that a login failure doesn't propagate outside of the attempt to capture the resulting token:

$(eval TOKEN := $(shell curl -i --post301 --location $(MM_SERVICESETTINGS_SITEURL) -X POST $(MM_SERVICESETTINGS_SITEURL)/api/v4/users/login -d '{"login_id": "$(MM_ADMIN_USERNAME)", "password": "$(MM_ADMIN_PASSWORD)"}' | grep Token | cut -f2 -d' ' 2> /dev/null))

Find a way to continue capturing the token but detect a login error (or any other upload issue), and ideally without using temporary files.


If you're interested please comment here and come join our "Contributors" community channel on our daily build server, where you can discuss questions with community members and the Mattermost core team. For technical advice or questions, please join our "Developers" community channel.

New contributors please see our Developer's Guide.

`make help` fails on macOS

make help fails on macOS, because tac is not default command on macOS.

$ make help
/bin/sh: tac: command not found

@lieut-data
As you said in this comments, would you like to replace tac with awk for make help?
I think that awk is more compatible than tac for many os.

Suggestion: make the template more 'marketplace-ready'

It would be useful if plugins based on this template were to achieve the basic marketplace requirements automatically: less effort both for plugin maintainers (no need to hunt out missing requirements in the docs) and for the marketplace reviewers (more requirements would be already checked).

This could be achieved by:

  1. Completing the plugin.json file with the required fields:
"homepage_url": "https://github.com/mattermost/mattermost-plugin-starter-template/",
"support_url": "https://mattermost/mattermost-plugin-starter-template/issues",
"release_notes_url": "https://mattermost/mattermost-plugin-starter-template/releases/tag/vX.X.X",
"icon_path": "assets/starter-template-icon.svg"
  • adding the SVG file in /assets
  1. Make a README.md.template file that would be used for the real plugin (a distinct file might make it easier to differentiate template-only instructions from what is expected for a plugin's README):
  • add a "maintainer" section
  • add a "usage" section
  • add a "feedback" section
  • add a "Configuration Notes in HA" section
  • add a "compatibility" section (not a marketplace requirement but with the plugin API fast changes, users of older mattermost server versions can have trouble finding the right plugin version)
  1. Udpate the current README to take these changes into account

Use socket API to deploy plugins, if available

Currently, a plugin developer needs to do one of the following when deploying a plugin via the command line:

  • Manually disable/enable a plugin or restart the server
  • Authenticate as a Mattermost admin via environment variables

We want to make this process easier to lower the barrier to entry for developing plugins. Using the local mode of Mattermost's API, we can avoid both of above scenarios. The developer just needs to enable local mode one time via the server's config.

Document the sync feature and environment variables

Currently, there is a make sync command that is supposed to help keep plugins updated with the starter template, to benefit from latest improvements&updates done to the starter.

Sadly, it is not featured in the GH repository's README, nor easy of use (it fails for me, probably because I missed some pre-required steps which is part of the missing documentation).

There are also undocumented environment variables supported by the Makefile (like MM_DEBUG, MM_SERVICESETTINGS_ENABLEDEVELOPER...) that would be worth mentioning in the README, explaining how and why to use them would be interesting. I assume from the name that they are also used for Mattermost development, but not all plugin developers have knowledge of Mattermost development (nor a local MM dev environment, because you can use Docker to test a plugin).

Include example of http API call using the mattermost-redux client options

Summary

With the MM server config setting ServiceSettings.ExperimentalStrictCSRFEnforcement enabled, any POST request that does not include the CSRF token supplied by the server will be rejected. In order to include the CSRF header supplied by the MM server, the webapp can use the getOptions method in the mattermost-redux client.

Tasks

  1. Update package.json to include the latest commit hash of mattermost-redux, similar to this method. Then run npm install in the webapp directory
  2. Create a server-side endpoint that requires the HTTP method to be POST
  3. Create a HTTP request in the webapp side of the plugin to hit this endpoint
    • Ensure Client.getOptions is used to create options for the request
    • An example can be found here

Testing

Enable ExperimentalStrictCSRFEnforcement in the MM server's config/config.json file, then restart the server if it is already running. With this value enabled, the API call will only succeed when including the CSRF token.

Repo sync tool: Partial equality checks/merges

Sometimes we add a new script to the scripts portion of package.json, and we want every plugin to receive this change. This requires a manual reconciliation of changes after overwriting the file (or however you choose to go about it), because each plugin understandably has several dependency differences.

It would be great to be able to have a check for this for the purposes of CI. Something like "are the target plugin's package.json scripts up to date with the starter template's scripts?" Then we know this target repo needs to have an sync update. The action of updating the file would ideally support a partial update as well, only updating the scripts part of the file.

golang module error (Mac)

I have got some errors as shown bellow when I did make command.
Mac OS 10.14.6
go version go1.13 darwin/amd64

Could you tell me how to fix it...

go: github.com/mattermost/[email protected]+incompatible requires willnorris.com/go/[email protected] requires cloud.google.com/[email protected] requires [email protected] requires google.golang.org/[email protected] requires google.golang.org/[email protected] requires github.com/golang/[email protected]: invalid pseudo-version: does not match version-control timestamp (2018-12-17T17:45:47Z) make: build/bin/manifest: Command not found build/setup.mk:13: *** "Cannot parse id from plugin.json". Stop.

Build fails when removing the webapp component

According to the README we can simply delete the webapp folders and remove the corresponding sections from plugin.json. make will produce the following error message though:

make: *** No rule to make target 'webapp/package.json', needed by 'webapp/node_modules'. Stop.

This could for example be fixed by always fulfiling the webapp/package.json target if the plugin doesn't have a webapp like so:

## Always fulfil webapp/package.json if plugin doesn't have webapp
ifeq ($(HAS_WEBAPP),)
.PHONY: webapp/package.json
webapp/package.json: ;
endif

`Unable to find manifest for extracted plugin` when using `make deploy`

I am running into this issue on my machine. Works on my other laptop.

  • Build succeeds (both webapp and server)
  • Deploy fails with error Unable to find manifest for extracted plugin.

This is occurring with all plugins built on this machine (M1 Mac Max - Ventura 13.2.1).

Runs perfectly fine on Mac with Intel processor (Ventura 13.2.1).

Screenshot 2023-03-23 at 10 50 37 AM

make error

Running golangci-lint
golangci-lint run ./...
server/plugin.go:12:13: fieldalignment: struct with 64 pointer bytes could be 40 (govet)
type Plugin struct {
^
make: *** [Makefile:48: check-style] Error 1

building for macOS-x86_64 but attempting to link with file built for unknown-arm64

Hello.
Follow the README explanation and entered make. I expected a tar.gz file to be created.

However, the following error occurred and the file was not created.

ok      github.com/mattermost/mattermost-plugin-starter-template/build/sync/plan/git    (cached)
mkdir -p server/dist;
cd server && env GOOS=linux GOARCH=amd64 /usr/local/opt/go/libexec/bin/go build  -o dist/plugin-linux-amd64;
cd server && env GOOS=darwin GOARCH=amd64 /usr/local/opt/go/libexec/bin/go build  -o dist/plugin-darwin-amd64;
cd server && env GOOS=darwin GOARCH=arm64 /usr/local/opt/go/libexec/bin/go build  -o dist/plugin-darwin-arm64;
# github.com/mattermost/mattermost-plugin-starter-template/server
/usr/local/opt/go/libexec/pkg/tool/darwin_amd64/link: running clang failed: exit status 1
ld: warning: ignoring file /var/folders/j4/khl3lxfs50l1szvwjqwpf6jr0000gn/T/go-link-750367649/go.o, building for macOS-x86_64 but attempting to link with file built for unknown-arm64
Undefined symbols for architecture x86_64:
  "_main", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

make: *** [server] Error 2

The setup is a mess

I'm working on Windows in WSL. I cloned this template and followed the documentation to build it but so far I was not able to. This is what happened when running make:

  • go not found
  • install go

  • npm not installed
  • installing npm

  • eslint not installed
  • installing eslint

  • eslint package-[...] not installed
  • run npm install in webapp directory

  • eslint line feed error
  • run eslint with --fix

  • eslint Failed at the @ lint script
  • removing eslint in Makefile (workaround not a solution!)

  • golangci-lint is not installed
  • install golangci-lint

  • golangci-lint: context loading failed: failed to load packages
  • deleted repository and created this issue

You won't get many plugins from 3d-party developers with such a horrible setup experience. If you can't automate the tasks then at least explain the manual setup process.

Additional remarks:

  • add .vs/ and node_modules/ to .gitignore

go.mod has incorrect Golang version

Steps to reproduce

  1. Install Golang v1.12.x
  2. Clone this repository & cd into it
  3. run make dist

Expected Behavior

Example plugin builds successfully

Observed Behavior

Plugin fails to build. Output indicates the version of go-multierror required needs Golang v1.14+:

# github.com/hashicorp/go-multierror
../../../go/pkg/mod/github.com/hashicorp/[email protected]/multierror.go:112:9: undefined: errors.As
../../../go/pkg/mod/github.com/hashicorp/[email protected]/multierror.go:117:9: undefined: errors.Is
note: module requires Go 1.14
# github.com/hashicorp/go-multierror
../../../go/pkg/mod/github.com/hashicorp/[email protected]/multierror.go:112:9: undefined: errors.As
../../../go/pkg/mod/github.com/hashicorp/[email protected]/multierror.go:117:9: undefined: errors.Is
note: module requires Go 1.14
make: build/bin/manifest: Command not found
build/setup.mk:16: *** "Cannot parse id from plugin.json".  Stop.

Eslint fails when using string interpolations in an object declaration

Eslint itself has an error when certain syntaxes are used. We believe it is due to babel not being able to properly parse the code given some combination of dependency versions we are using.

Minimal example:

const s = 'some string';
const obj = {
	some_key: `Here: ${s}`,
};
console.log(obj); // to avoid var not used warning

It will result in an error similar to this issue: eslint/eslint#13248

Windows: go fmt will fail the build because of line endings

On Windows it is not uncommon to setup Git so that it automatically checks-out files with CRLF line endings and commit them with LF. It is the default option when installing Git.
Because of those line endings, go fmt in the current setup in the Makefile will always report a difference to expected formatting and fail the build:

gofmt_output=$$(gofmt -d -s $$files 2>&1); \

It may be worth to either:

  • mention this in the docs
  • do not fail the build by default, maybe a warning would be enough?
  • use the -w flag of go fmt, which will actually change the file during build and fix the formatting

Basic plugin builds artifacts larger than 50MB, the common max upload size on default Mattermost setups

I was using this template to start a new plugin.

I followed the instructions but ran into an issue when I went to test the bare minimum plugin with make deploy using mattermost-preview docker image.

I was initially getting the following error:

2023/12/27 22:42:36 Uploading plugin via API.
Failed: failed to upload plugin bundle: AppErrorFromJSON: model.utils.decode_json.app_error, body: http: request body too large
, invalid character 'h' looking for beginning of value

Usage:
    pluginctl deploy <plugin id> <bundle path>
    pluginctl disable <plugin id>
    pluginctl enable <plugin id>
    pluginctl reset <plugin id>
make: *** [deploy] Error 1

I found a thread on the COmmunity server that pointed out that I needed to increase the max file upload size under "System Console > File Storage > Max Upload Filesize". I checked on the size of the bare bones plugin archive and it was around 53MB.

Can we somehow provide warning text in the make deploy target to explain this possible issue to developers?

Additional files to edit when using the template

In addition to editing plugin.json, it seems there are other files that might need to be updated with the new plugin ID?

  • .golangci.yml:
linters-settings:
  // [...]
  goimports:
    local-prefixes: github.com/mattermost/mattermost-starter-template
  • go.mod
module github.com/mattermost/mattermost-plugin-starter-template

Plugin should require confirmation when building with plugin id "com.mattermost.plugin-starter-template"

When I use the starter template for a new project and deploy the plugin to my environment, it always deploys as Plugin Starter Template with id com.mattermost.plugin-starter-template. This is because I'm not thinking about changing the plugin id when I'm creating a POC.

I propose we make it so running the make deploy command (and others like it that build the plugin) would first ask the user something like:

Are you sure you want to build the plugin with an id of "com.mattermost.plugin-starter-template"? Consider editing plugin.json to configure your project.

Make fails with the current Node.js version (v17.9.0)

Hello guys, what's up with this repo, is it obsolete ? I've got a multiple "deprecated dependency" warnings and then make command fails. How should I start developing my plugin ?

Log here:

cd webapp && /usr/bin/npm install
npm WARN old lockfile 
npm WARN old lockfile The package-lock.json file was created with an old version of npm,
npm WARN old lockfile so supplemental metadata must be fetched from the registry.
npm WARN old lockfile 
npm WARN old lockfile This is a one-time fix-up, please be patient...
npm WARN old lockfile 
npm WARN old lockfile Error: git dep preparation failed
npm WARN old lockfile     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/index.js:64:27)
npm WARN old lockfile     at ChildProcess.emit (node:events:527:28)
npm WARN old lockfile     at maybeClose (node:internal/child_process:1090:16)
npm WARN old lockfile     at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5)
npm WARN old lockfile  Could not fetch metadata for mattermost-webapp@git+ssh://[email protected]/mattermost/mattermost-webapp.git#23f5f93d9f12a7e2b5623e5cee6814366abd9a0f Error: git dep preparation failed
npm WARN old lockfile     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/index.js:64:27)
npm WARN old lockfile     at ChildProcess.emit (node:events:527:28)
npm WARN old lockfile     at maybeClose (node:internal/child_process:1090:16)
npm WARN old lockfile     at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5) {
npm WARN old lockfile   cmd: '/usr/bin/node',
npm WARN old lockfile   args: [
npm WARN old lockfile     '/usr/lib/node_modules/npm/bin/npm-cli.js',
npm WARN old lockfile     'install',
npm WARN old lockfile     '--force',
npm WARN old lockfile     '--cache=/home/deus/.npm',
npm WARN old lockfile     '--prefer-offline=false',
npm WARN old lockfile     '--prefer-online=false',
npm WARN old lockfile     '--offline=false',
npm WARN old lockfile     '--no-progress',
npm WARN old lockfile     '--no-save',
npm WARN old lockfile     '--no-audit',
npm WARN old lockfile     '--include=dev',
npm WARN old lockfile     '--include=peer',
npm WARN old lockfile     '--include=optional',
npm WARN old lockfile     '--no-package-lock-only',
npm WARN old lockfile     '--no-dry-run'
npm WARN old lockfile   ],
npm WARN old lockfile   code: 1,
npm WARN old lockfile   signal: null,
npm WARN old lockfile   stdout: '',
npm WARN old lockfile   stderr: 'npm WARN using --force Recommended protections disabled.\n' +
npm WARN old lockfile     'npm WARN old lockfile \n' +
npm WARN old lockfile     'npm WARN old lockfile The package-lock.json file was created with an old version of npm,\n' +
npm WARN old lockfile     'npm WARN old lockfile so supplemental metadata must be fetched from the registry.\n' +
npm WARN old lockfile     'npm WARN old lockfile \n' +
npm WARN old lockfile     'npm WARN old lockfile This is a one-time fix-up, please be patient...\n' +
npm WARN old lockfile     'npm WARN old lockfile \n' +
npm WARN old lockfile     'npm WARN old lockfile Error: git dep preparation failed\n' +
npm WARN old lockfile     'npm WARN old lockfile     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/index.js:64:27)\n' +
npm WARN old lockfile     'npm WARN old lockfile     at ChildProcess.emit (node:events:527:28)\n' +
npm WARN old lockfile     'npm WARN old lockfile     at maybeClose (node:internal/child_process:1090:16)\n' +
npm WARN old lockfile     'npm WARN old lockfile     at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5)\n' +
npm WARN old lockfile     'npm WARN old lockfile  Could not fetch metadata for mmjstool@git+ssh://[email protected]/mattermost/mattermost-utilities.git#89543752e9c3b7fe4ad41d3af3821d3923198c20 Error: git dep preparation failed\n' +
npm WARN old lockfile     'npm WARN old lockfile     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/index.js:64:27)\n' +
npm WARN old lockfile     'npm WARN old lockfile     at ChildProcess.emit (node:events:527:28)\n' +
npm WARN old lockfile     'npm WARN old lockfile     at maybeClose (node:internal/child_process:1090:16)\n' +
npm WARN old lockfile     'npm WARN old lockfile     at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5) {\n' +
npm WARN old lockfile     "npm WARN old lockfile   cmd: '/usr/bin/node',\n" +
npm WARN old lockfile     'npm WARN old lockfile   args: [\n' +
npm WARN old lockfile     "npm WARN old lockfile     '/usr/lib/node_modules/npm/bin/npm-cli.js',\n" +
npm WARN old lockfile     "npm WARN old lockfile     'install',\n" +
npm WARN old lockfile     "npm WARN old lockfile     '--force',\n" +
npm WARN old lockfile     "npm WARN old lockfile     '--cache=/home/deus/.npm',\n" +
npm WARN old lockfile     "npm WARN old lockfile     '--prefer-offline=false',\n" +
npm WARN old lockfile     "npm WARN old lockfile     '--prefer-online=false',\n" +
npm WARN old lockfile     "npm WARN old lockfile     '--offline=false',\n" +
npm WARN old lockfile     "npm WARN old lockfile     '--no-progress',\n" +
npm WARN old lockfile     "npm WARN old lockfile     '--no-save',\n" +
npm WARN old lockfile     "npm WARN old lockfile     '--no-audit',\n" +
npm WARN old lockfile     "npm WARN old lockfile     '--include=dev',\n" +
npm WARN old lockfile     "npm WARN old lockfile     '--include=peer',\n" +
npm WARN old lockfile     "npm WARN old lockfile     '--include=optional',\n" +
npm WARN old lockfile     "npm WARN old lockfile     '--no-package-lock-only',\n" +
npm WARN old lockfile     "npm WARN old lockfile     '--no-dry-run'\n" +
npm WARN old lockfile     'npm WARN old lockfile   ],\n' +
npm WARN old lockfile     'npm WARN old lockfile   code: 1,\n' +
npm WARN old lockfile     'npm WARN old lockfile   signal: null,\n' +
npm WARN old lockfile     "npm WARN old lockfile   stdout: '\\n> [email protected] prepare\\n> webpack\\n\\n',\n" +
npm WARN old lockfile     "npm WARN old lockfile   stderr: 'npm WARN using --force Recommended protections disabled.\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN old lockfile \\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN old lockfile The package-lock.json file was created with an old version of npm,\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN old lockfile so supplemental metadata must be fetched from the registry.\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN old lockfile \\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN old lockfile This is a one-time fix-up, please be patient...\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN old lockfile \\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN deprecated [email protected]: Critical bug fixed in v3.0.1, please upgrade to the latest version.\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN deprecated [email protected]: Critical bug fixed in v3.0.1, please upgrade to the latest version.\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN deprecated [email protected]: Critical bug fixed in v2.0.1, please upgrade to the latest version.\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN deprecated [email protected]: Please update to ini >=1.3.6 to avoid a prototype pollution issue\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN deprecated [email protected]: Please see https://github.com/lydell/urix#deprecated\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN deprecated [email protected]: this library is no longer supported\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN deprecated [email protected]: https://github.com/lydell/resolve-url#deprecated\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-url#deprecated\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN deprecated [email protected]: CircularJSON is in maintenance only, flatted is its successor.\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN deprecated [email protected]: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN deprecated [email protected]: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN deprecated [email protected]: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN deprecated [email protected]: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-resolve#deprecated\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN deprecated [email protected]: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN deprecated [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142\\n' +\n" +
npm WARN old lockfile     `npm WARN old lockfile     "npm WARN deprecated [email protected]: This version of 'buffer' is out-of-date. You must update to v4.9.2 or newer\\n" +\n` +
npm WARN old lockfile     "npm WARN old lockfile     'npm WARN deprecated [email protected]: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'node:internal/crypto/hash:67\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     '  this[kHandle] = new _Hash(algorithm, xofLen);\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     '                  ^\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     '\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'Error: error:0308010C:digital envelope routines::unsupported\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     '    at new Hash (node:internal/crypto/hash:67:19)\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     '    at Object.createHash (node:crypto:135:10)\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     '    at module.exports (/home/deus/.npm/_cacache/tmp/git-cloneOflplg/node_modules/webpack/lib/util/createHash.js:90:53)\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     '    at NormalModule._initBuildHash (/home/deus/.npm/_cacache/tmp/git-cloneOflplg/node_modules/webpack/lib/NormalModule.js:401:16)\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     '    at handleParseError (/home/deus/.npm/_cacache/tmp/git-cloneOflplg/node_modules/webpack/lib/NormalModule.js:449:10)\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     '    at /home/deus/.npm/_cacache/tmp/git-cloneOflplg/node_modules/webpack/lib/NormalModule.js:481:5\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     '    at /home/deus/.npm/_cacache/tmp/git-cloneOflplg/node_modules/webpack/lib/NormalModule.js:342:12\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     '    at /home/deus/.npm/_cacache/tmp/git-cloneOflplg/node_modules/loader-runner/lib/LoaderRunner.js:373:3\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     '    at iterateNormalLoaders (/home/deus/.npm/_cacache/tmp/git-cloneOflplg/node_modules/loader-runner/lib/LoaderRunner.js:214:10)\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     '    at Array.<anonymous> (/home/deus/.npm/_cacache/tmp/git-cloneOflplg/node_modules/loader-runner/lib/LoaderRunner.js:205:4)\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     '    at Storage.finished (/home/deus/.npm/_cacache/tmp/git-cloneOflplg/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:43:16)\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     '    at /home/deus/.npm/_cacache/tmp/git-cloneOflplg/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:79:9\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     '    at /home/deus/.npm/_cacache/tmp/git-cloneOflplg/node_modules/graceful-fs/graceful-fs.js:90:16\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     '    at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3) {\\n' +\n" +
npm WARN old lockfile     `npm WARN old lockfile     "  opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],\\n" +\n` +
npm WARN old lockfile     `npm WARN old lockfile     "  library: 'digital envelope routines',\\n" +\n` +
npm WARN old lockfile     `npm WARN old lockfile     "  reason: 'unsupported',\\n" +\n` +
npm WARN old lockfile     `npm WARN old lockfile     "  code: 'ERR_OSSL_EVP_UNSUPPORTED'\\n" +\n` +
npm WARN old lockfile     "npm WARN old lockfile     '}\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     '\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'Node.js v17.9.0\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm ERR! code 1\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm ERR! path /home/deus/.npm/_cacache/tmp/git-cloneOflplg\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm ERR! command failed\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm ERR! command sh -c webpack\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     '\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm ERR! A complete log of this run can be found in:\\n' +\n" +
npm WARN old lockfile     "npm WARN old lockfile     'npm ERR!     /home/deus/.npm/_logs/2022-04-15T10_14_45_794Z-debug-0.log\\n'\n" +
npm WARN old lockfile     'npm WARN old lockfile }\n' +
npm WARN old lockfile     'npm WARN deprecated [email protected]: Please update to ini >=1.3.6 to avoid a prototype pollution issue\n' +
npm WARN old lockfile     'npm WARN deprecated [email protected]: Please see htt'... 15117 more characters
npm WARN old lockfile }
npm WARN deprecated @types/[email protected]: This is a stub types definition. react-intl provides its own type definitions, so you do not need this installed.
npm WARN deprecated [email protected]: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
npm WARN deprecated [email protected]: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated [email protected]: this library is no longer supported
npm WARN deprecated [email protected]: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated [email protected]: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added
npm WARN deprecated [email protected]: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies
npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm WARN deprecated [email protected]: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
npm WARN deprecated [email protected]: Package moved to @redux-devtools/serialize.
npm WARN deprecated [email protected]: Package moved to @redux-devtools/instrument.
npm WARN deprecated [email protected]: Package moved to @redux-devtools/app.
npm WARN deprecated [email protected]: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.
npm WARN deprecated [email protected]: Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau
npm WARN deprecated [email protected]: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated [email protected]: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated [email protected]: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated [email protected]: 1.x.x versions of the SDK are deprecated. Please upgrade to the latest (2.x.x) version
npm WARN deprecated [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated @babel/[email protected]: ๐Ÿšจ This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.
npm WARN deprecated [email protected]: We've written a new parser that's 6x faster and is backwards compatible. Please use @formatjs/icu-messageformat-parser
npm WARN deprecated [email protected]: Please upgrade to v7.0.2+ of superagent.  We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing.  See the releases tab for more information at <https://github.com/visionmedia/superagent/releases>.
npm WARN deprecated [email protected]: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1
npm WARN deprecated [email protected]: This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.
npm WARN deprecated [email protected]: Version no longer supported. Upgrade to @latest
npm WARN deprecated [email protected]: This package has been deprecated, please see migration guide at 'https://github.com/formatjs/formatjs/tree/master/packages/intl-relativeformat#migration-guide'
npm WARN deprecated [email protected]: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
npm WARN deprecated [email protected]: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
npm WARN deprecated [email protected]: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
npm WARN deprecated [email protected]: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
npm WARN deprecated [email protected]: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
npm ERR! code 1
npm ERR! git dep preparation failed
npm ERR! command /usr/bin/node /usr/lib/node_modules/npm/bin/npm-cli.js install --force --cache=/home/deus/.npm --prefer-offline=false --prefer-online=false --offline=false --no-progress --no-save --no-audit --include=dev --include=peer --include=optional --no-package-lock-only --no-dry-run
npm ERR! npm WARN using --force Recommended protections disabled.
npm ERR! npm WARN old lockfile 
npm ERR! npm WARN old lockfile The package-lock.json file was created with an old version of npm,
npm ERR! npm WARN old lockfile so supplemental metadata must be fetched from the registry.
npm ERR! npm WARN old lockfile 
npm ERR! npm WARN old lockfile This is a one-time fix-up, please be patient...
npm ERR! npm WARN old lockfile 
npm ERR! npm WARN old lockfile Error: git dep preparation failed
npm ERR! npm WARN old lockfile     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/index.js:64:27)
npm ERR! npm WARN old lockfile     at ChildProcess.emit (node:events:527:28)
npm ERR! npm WARN old lockfile     at maybeClose (node:internal/child_process:1090:16)
npm ERR! npm WARN old lockfile     at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5)
npm ERR! npm WARN old lockfile  Could not fetch metadata for mmjstool@git+ssh://[email protected]/mattermost/mattermost-utilities.git#89543752e9c3b7fe4ad41d3af3821d3923198c20 Error: git dep preparation failed
npm ERR! npm WARN old lockfile     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/index.js:64:27)
npm ERR! npm WARN old lockfile     at ChildProcess.emit (node:events:527:28)
npm ERR! npm WARN old lockfile     at maybeClose (node:internal/child_process:1090:16)
npm ERR! npm WARN old lockfile     at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5) {
npm ERR! npm WARN old lockfile   cmd: '/usr/bin/node',
npm ERR! npm WARN old lockfile   args: [
npm ERR! npm WARN old lockfile     '/usr/lib/node_modules/npm/bin/npm-cli.js',
npm ERR! npm WARN old lockfile     'install',
npm ERR! npm WARN old lockfile     '--force',
npm ERR! npm WARN old lockfile     '--cache=/home/deus/.npm',
npm ERR! npm WARN old lockfile     '--prefer-offline=false',
npm ERR! npm WARN old lockfile     '--prefer-online=false',
npm ERR! npm WARN old lockfile     '--offline=false',
npm ERR! npm WARN old lockfile     '--no-progress',
npm ERR! npm WARN old lockfile     '--no-save',
npm ERR! npm WARN old lockfile     '--no-audit',
npm ERR! npm WARN old lockfile     '--include=dev',
npm ERR! npm WARN old lockfile     '--include=peer',
npm ERR! npm WARN old lockfile     '--include=optional',
npm ERR! npm WARN old lockfile     '--no-package-lock-only',
npm ERR! npm WARN old lockfile     '--no-dry-run'
npm ERR! npm WARN old lockfile   ],
npm ERR! npm WARN old lockfile   code: 1,
npm ERR! npm WARN old lockfile   signal: null,
npm ERR! npm WARN old lockfile   stdout: '\n> [email protected] prepare\n> webpack\n\n',
npm ERR! npm WARN old lockfile   stderr: 'npm WARN using --force Recommended protections disabled.\n' +
npm ERR! npm WARN old lockfile     'npm WARN old lockfile \n' +
npm ERR! npm WARN old lockfile     'npm WARN old lockfile The package-lock.json file was created with an old version of npm,\n' +
npm ERR! npm WARN old lockfile     'npm WARN old lockfile so supplemental metadata must be fetched from the registry.\n' +
npm ERR! npm WARN old lockfile     'npm WARN old lockfile \n' +
npm ERR! npm WARN old lockfile     'npm WARN old lockfile This is a one-time fix-up, please be patient...\n' +
npm ERR! npm WARN old lockfile     'npm WARN old lockfile \n' +
npm ERR! npm WARN old lockfile     'npm WARN deprecated [email protected]: Critical bug fixed in v3.0.1, please upgrade to the latest version.\n' +
npm ERR! npm WARN old lockfile     'npm WARN deprecated [email protected]: Critical bug fixed in v3.0.1, please upgrade to the latest version.\n' +
npm ERR! npm WARN old lockfile     'npm WARN deprecated [email protected]: Critical bug fixed in v2.0.1, please upgrade to the latest version.\n' +
npm ERR! npm WARN old lockfile     'npm WARN deprecated [email protected]: Please update to ini >=1.3.6 to avoid a prototype pollution issue\n' +
npm ERR! npm WARN old lockfile     'npm WARN deprecated [email protected]: Please see https://github.com/lydell/urix#deprecated\n' +
npm ERR! npm WARN old lockfile     'npm WARN deprecated [email protected]: this library is no longer supported\n' +
npm ERR! npm WARN old lockfile     'npm WARN deprecated [email protected]: https://github.com/lydell/resolve-url#deprecated\n' +
npm ERR! npm WARN old lockfile     'npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-url#deprecated\n' +
npm ERR! npm WARN old lockfile     'npm WARN deprecated [email protected]: CircularJSON is in maintenance only, flatted is its successor.\n' +
npm ERR! npm WARN old lockfile     'npm WARN deprecated [email protected]: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies\n' +
npm ERR! npm WARN old lockfile     'npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)\n' +
npm ERR! npm WARN old lockfile     'npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)\n' +
npm ERR! npm WARN old lockfile     'npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)\n' +
npm ERR! npm WARN old lockfile     'npm WARN deprecated [email protected]: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.\n' +
npm ERR! npm WARN old lockfile     'npm WARN deprecated [email protected]: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.\n' +
npm ERR! npm WARN old lockfile     'npm WARN deprecated [email protected]: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.\n' +
npm ERR! npm WARN old lockfile     'npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-resolve#deprecated\n' +
npm ERR! npm WARN old lockfile     'npm WARN deprecated [email protected]: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)\n' +
npm ERR! npm WARN old lockfile     'npm WARN deprecated [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142\n' +
npm ERR! npm WARN old lockfile     "npm WARN deprecated [email protected]: This version of 'buffer' is out-of-date. You must update to v4.9.2 or newer\n" +
npm ERR! npm WARN old lockfile     'npm WARN deprecated [email protected]: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.\n' +
npm ERR! npm WARN old lockfile     'node:internal/crypto/hash:67\n' +
npm ERR! npm WARN old lockfile     '  this[kHandle] = new _Hash(algorithm, xofLen);\n' +
npm ERR! npm WARN old lockfile     '                  ^\n' +
npm ERR! npm WARN old lockfile     '\n' +
npm ERR! npm WARN old lockfile     'Error: error:0308010C:digital envelope routines::unsupported\n' +
npm ERR! npm WARN old lockfile     '    at new Hash (node:internal/crypto/hash:67:19)\n' +
npm ERR! npm WARN old lockfile     '    at Object.createHash (node:crypto:135:10)\n' +
npm ERR! npm WARN old lockfile     '    at module.exports (/home/deus/.npm/_cacache/tmp/git-clonem8CqAB/node_modules/webpack/lib/util/createHash.js:90:53)\n' +
npm ERR! npm WARN old lockfile     '    at NormalModule._initBuildHash (/home/deus/.npm/_cacache/tmp/git-clonem8CqAB/node_modules/webpack/lib/NormalModule.js:401:16)\n' +
npm ERR! npm WARN old lockfile     '    at handleParseError (/home/deus/.npm/_cacache/tmp/git-clonem8CqAB/node_modules/webpack/lib/NormalModule.js:449:10)\n' +
npm ERR! npm WARN old lockfile     '    at /home/deus/.npm/_cacache/tmp/git-clonem8CqAB/node_modules/webpack/lib/NormalModule.js:481:5\n' +
npm ERR! npm WARN old lockfile     '    at /home/deus/.npm/_cacache/tmp/git-clonem8CqAB/node_modules/webpack/lib/NormalModule.js:342:12\n' +
npm ERR! npm WARN old lockfile     '    at /home/deus/.npm/_cacache/tmp/git-clonem8CqAB/node_modules/loader-runner/lib/LoaderRunner.js:373:3\n' +
npm ERR! npm WARN old lockfile     '    at iterateNormalLoaders (/home/deus/.npm/_cacache/tmp/git-clonem8CqAB/node_modules/loader-runner/lib/LoaderRunner.js:214:10)\n' +
npm ERR! npm WARN old lockfile     '    at Array.<anonymous> (/home/deus/.npm/_cacache/tmp/git-clonem8CqAB/node_modules/loader-runner/lib/LoaderRunner.js:205:4)\n' +
npm ERR! npm WARN old lockfile     '    at Storage.finished (/home/deus/.npm/_cacache/tmp/git-clonem8CqAB/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:43:16)\n' +
npm ERR! npm WARN old lockfile     '    at /home/deus/.npm/_cacache/tmp/git-clonem8CqAB/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:79:9\n' +
npm ERR! npm WARN old lockfile     '    at /home/deus/.npm/_cacache/tmp/git-clonem8CqAB/node_modules/graceful-fs/graceful-fs.js:90:16\n' +
npm ERR! npm WARN old lockfile     '    at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3) {\n' +
npm ERR! npm WARN old lockfile     "  opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],\n" +
npm ERR! npm WARN old lockfile     "  library: 'digital envelope routines',\n" +
npm ERR! npm WARN old lockfile     "  reason: 'unsupported',\n" +
npm ERR! npm WARN old lockfile     "  code: 'ERR_OSSL_EVP_UNSUPPORTED'\n" +
npm ERR! npm WARN old lockfile     '}\n' +
npm ERR! npm WARN old lockfile     '\n' +
npm ERR! npm WARN old lockfile     'Node.js v17.9.0\n' +
npm ERR! npm WARN old lockfile     'npm ERR! code 1\n' +
npm ERR! npm WARN old lockfile     'npm ERR! path /home/deus/.npm/_cacache/tmp/git-clonem8CqAB\n' +
npm ERR! npm WARN old lockfile     'npm ERR! command failed\n' +
npm ERR! npm WARN old lockfile     'npm ERR! command sh -c webpack\n' +
npm ERR! npm WARN old lockfile     '\n' +
npm ERR! npm WARN old lockfile     'npm ERR! A complete log of this run can be found in:\n' +
npm ERR! npm WARN old lockfile     'npm ERR!     /home/deus/.npm/_logs/2022-04-15T10_19_47_524Z-debug-0.log\n'
npm ERR! npm WARN old lockfile }
npm ERR! npm WARN deprecated [email protected]: Please update to ini >=1.3.6 to avoid a prototype pollution issue
npm ERR! npm WARN deprecated [email protected]: Please see https://github.com/lydell/urix#deprecated
npm ERR! npm WARN deprecated [email protected]: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
npm ERR! npm WARN deprecated [email protected]: this library is no longer supported
npm ERR! npm WARN deprecated [email protected]: this library is no longer supported
npm ERR! npm WARN deprecated [email protected]: https://github.com/lydell/resolve-url#deprecated
npm ERR! npm WARN deprecated [email protected]: Package moved to @redux-devtools/serialize.
npm ERR! npm WARN deprecated [email protected]: Package moved to @redux-devtools/instrument.
npm ERR! npm WARN deprecated [email protected]: use String.prototype.padStart()
npm ERR! npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-url#deprecated
npm ERR! npm WARN deprecated [email protected]: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added
npm ERR! npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm ERR! npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm ERR! npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm ERR! npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm ERR! npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm ERR! npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm ERR! npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm ERR! npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm ERR! npm WARN deprecated [email protected]: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies
npm ERR! npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm ERR! npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm ERR! npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm ERR! npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm ERR! npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm ERR! npm WARN deprecated [email protected]: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
npm ERR! npm WARN deprecated [email protected]: 3.x is no longer supported
npm ERR! npm WARN deprecated [email protected]: Package moved to @redux-devtools/app.
npm ERR! npm WARN deprecated [email protected]: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.
npm ERR! npm WARN deprecated [email protected]: Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau
npm ERR! npm WARN deprecated [email protected]: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm ERR! npm WARN deprecated [email protected]: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm ERR! npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-resolve#deprecated
npm ERR! npm WARN deprecated [email protected]: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
npm ERR! npm WARN deprecated [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142
npm ERR! npm WARN deprecated [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142
npm ERR! npm WARN deprecated [email protected]: We've written a new parser that's 6x faster and is backwards compatible. Please use @formatjs/icu-messageformat-parser
npm ERR! npm WARN deprecated [email protected]: This version of 'buffer' is out-of-date. You must update to v4.9.2 or newer
npm ERR! npm WARN deprecated [email protected]: Please upgrade to v7.0.2+ of superagent.  We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing.  See the releases tab for more information at <https://github.com/visionmedia/superagent/releases>.
npm ERR! npm WARN deprecated [email protected]: This SVGO version is no longer supported. Upgrade to v2.x.x.
npm ERR! npm WARN deprecated [email protected]: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1
npm ERR! npm WARN deprecated [email protected]: This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.
npm ERR! npm WARN deprecated [email protected]: Version no longer supported. Upgrade to @latest
npm ERR! npm WARN deprecated [email protected]: This package has been deprecated, please see migration guide at 'https://github.com/formatjs/formatjs/tree/master/packages/intl-relativeformat#migration-guide'
npm ERR! npm WARN deprecated [email protected]: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
npm ERR! npm WARN deprecated [email protected]: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
npm ERR! npm WARN deprecated [email protected]: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
npm ERR! npm WARN deprecated [email protected]: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
npm ERR! npm ERR! code 1
npm ERR! npm ERR! git dep preparation failed
npm ERR! npm ERR! command /usr/bin/node /usr/lib/node_modules/npm/bin/npm-cli.js install --force --cache=/home/deus/.npm --prefer-offline=false --prefer-online=false --offline=false --no-progress --no-save --no-audit --include=dev --include=peer --include=optional --no-package-lock-only --no-dry-run
npm ERR! npm ERR! > [email protected] prepare
npm ERR! npm ERR! > webpack
npm ERR! npm ERR! npm WARN using --force Recommended protections disabled.
npm ERR! npm ERR! npm WARN old lockfile 
npm ERR! npm ERR! npm WARN old lockfile The package-lock.json file was created with an old version of npm,
npm ERR! npm ERR! npm WARN old lockfile so supplemental metadata must be fetched from the registry.
npm ERR! npm ERR! npm WARN old lockfile 
npm ERR! npm ERR! npm WARN old lockfile This is a one-time fix-up, please be patient...
npm ERR! npm ERR! npm WARN old lockfile 
npm ERR! npm ERR! npm WARN deprecated [email protected]: Critical bug fixed in v3.0.1, please upgrade to the latest version.
npm ERR! npm ERR! npm WARN deprecated [email protected]: Critical bug fixed in v3.0.1, please upgrade to the latest version.
npm ERR! npm ERR! npm WARN deprecated [email protected]: Critical bug fixed in v2.0.1, please upgrade to the latest version.
npm ERR! npm ERR! npm WARN deprecated [email protected]: Please update to ini >=1.3.6 to avoid a prototype pollution issue
npm ERR! npm ERR! npm WARN deprecated [email protected]: Please see https://github.com/lydell/urix#deprecated
npm ERR! npm ERR! npm WARN deprecated [email protected]: this library is no longer supported
npm ERR! npm ERR! npm WARN deprecated [email protected]: https://github.com/lydell/resolve-url#deprecated
npm ERR! npm ERR! npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-url#deprecated
npm ERR! npm ERR! npm WARN deprecated [email protected]: CircularJSON is in maintenance only, flatted is its successor.
npm ERR! npm ERR! npm WARN deprecated [email protected]: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies
npm ERR! npm ERR! npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm ERR! npm ERR! npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm ERR! npm ERR! npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm ERR! npm ERR! npm WARN deprecated [email protected]: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
npm ERR! npm ERR! npm WARN deprecated [email protected]: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.
npm ERR! npm ERR! npm WARN deprecated [email protected]: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm ERR! npm ERR! npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-resolve#deprecated
npm ERR! npm ERR! npm WARN deprecated [email protected]: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
npm ERR! npm ERR! npm WARN deprecated [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142
npm ERR! npm ERR! npm WARN deprecated [email protected]: This version of 'buffer' is out-of-date. You must update to v4.9.2 or newer
npm ERR! npm ERR! npm WARN deprecated [email protected]: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
npm ERR! npm ERR! node:internal/crypto/hash:67
npm ERR! npm ERR!   this[kHandle] = new _Hash(algorithm, xofLen);
npm ERR! npm ERR!                   ^
npm ERR! npm ERR! 
npm ERR! npm ERR! Error: error:0308010C:digital envelope routines::unsupported
npm ERR! npm ERR!     at new Hash (node:internal/crypto/hash:67:19)
npm ERR! npm ERR!     at Object.createHash (node:crypto:135:10)
npm ERR! npm ERR!     at module.exports (/home/deus/.npm/_cacache/tmp/git-clone3RM4fz/node_modules/webpack/lib/util/createHash.js:90:53)
npm ERR! npm ERR!     at NormalModule._initBuildHash (/home/deus/.npm/_cacache/tmp/git-clone3RM4fz/node_modules/webpack/lib/NormalModule.js:401:16)
npm ERR! npm ERR!     at handleParseError (/home/deus/.npm/_cacache/tmp/git-clone3RM4fz/node_modules/webpack/lib/NormalModule.js:449:10)
npm ERR! npm ERR!     at /home/deus/.npm/_cacache/tmp/git-clone3RM4fz/node_modules/webpack/lib/NormalModule.js:481:5
npm ERR! npm ERR!     at /home/deus/.npm/_cacache/tmp/git-clone3RM4fz/node_modules/webpack/lib/NormalModule.js:342:12
npm ERR! npm ERR!     at /home/deus/.npm/_cacache/tmp/git-clone3RM4fz/node_modules/loader-runner/lib/LoaderRunner.js:373:3
npm ERR! npm ERR!     at iterateNormalLoaders (/home/deus/.npm/_cacache/tmp/git-clone3RM4fz/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
npm ERR! npm ERR!     at Array.<anonymous> (/home/deus/.npm/_cacache/tmp/git-clone3RM4fz/node_modules/loader-runner/lib/LoaderRunner.js:205:4)
npm ERR! npm ERR!     at Storage.finished (/home/deus/.npm/_cacache/tmp/git-clone3RM4fz/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:43:16)
npm ERR! npm ERR!     at /home/deus/.npm/_cacache/tmp/git-clone3RM4fz/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:79:9
npm ERR! npm ERR!     at /home/deus/.npm/_cacache/tmp/git-clone3RM4fz/node_modules/graceful-fs/graceful-fs.js:90:16
npm ERR! npm ERR!     at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3) {
npm ERR! npm ERR!   opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
npm ERR! npm ERR!   library: 'digital envelope routines',
npm ERR! npm ERR!   reason: 'unsupported',
npm ERR! npm ERR!   code: 'ERR_OSSL_EVP_UNSUPPORTED'
npm ERR! npm ERR! }
npm ERR! npm ERR! 
npm ERR! npm ERR! Node.js v17.9.0
npm ERR! npm ERR! npm ERR! code 1
npm ERR! npm ERR! npm ERR! path /home/deus/.npm/_cacache/tmp/git-clone3RM4fz
npm ERR! npm ERR! npm ERR! command failed
npm ERR! npm ERR! npm ERR! command sh -c webpack
npm ERR! npm ERR! 
npm ERR! npm ERR! npm ERR! A complete log of this run can be found in:
npm ERR! npm ERR! npm ERR!     /home/deus/.npm/_logs/2022-04-15T10_22_12_611Z-debug-0.log
npm ERR! 
npm ERR! npm ERR! A complete log of this run can be found in:
npm ERR! npm ERR!     /home/deus/.npm/_logs/2022-04-15T10_19_07_943Z-debug-0.log

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/deus/.npm/_logs/2022-04-15T10_14_07_632Z-debug-0.log
make: *** [Makefile:92: webapp/node_modules] Error 1

This is clean Ubuntu 20.04 LTS with latest Golang and Node.js installations

Add go.mod file in `build` folder to isolate dependencies needed to perform builds

Dependencies have been added to the plugin root directory's go.mod in order to support new functionality in the build process. As a result, plugins that sync with the starter template have had their root go.mod file altered to support the build functionality.

Having a separate go.mod file in the build folder allows us to more easily sync the deps needed to build across repos, as well as keep the build deps separate from the main deps of the plugin.

GitHub workflow fails for fork

After forking the starter template and pushing my plugin code to GitHub, the workflow keeps failing due to missing AWS keys. If I need or should want such keys, then why, otherwise what's the recommended way to deal with it? Either way, could we add a section to README.md about it?

Sample doesn't compile out of the box

Fresh clone of the sample, followed by make in the directory fails:

chrish@Galvatron:~/go/src$ git clone https://github.com/mattermost/mattermost-plugin-sample.git
Cloning into 'mattermost-plugin-sample'...
remote: Enumerating objects: 135, done.
remote: Counting objects: 100% (135/135), done.
remote: Compressing objects: 100% (82/82), done.
remote: Total 710 (delta 56), reused 92 (delta 50), pack-reused 575
Receiving objects: 100% (710/710), 983.89 KiB | 3.01 MiB/s, done.
Resolving deltas: 100% (180/180), done.
Checking out files: 100% (332/332), done.
chrish@Galvatron:~/go/src$ cd mattermost-plugin-sample/
/home/chrish/go/src/mattermost-plugin-sample
chrish@Galvatron:~/go/src/mattermost-plugin-sample$ lc
build/        LICENSE   plugin.json  server/
CHANGELOG.md  Makefile  README.md    webapp/
chrish@Galvatron:~/go/src/mattermost-plugin-sample$ make
build/setup.mk:8: *** missing separator.  Stop.

As someone new to Mattermost server plugin dev, I have no idea what I'm doing; having something you can compile straight from GitHub would be really handy.

NPM error after running make

cd webapp && /usr/local/bin/npm install
npm ERR! code 1
npm ERR! git dep preparation failed
npm ERR! command /snap/node/3790/bin/node /usr/local/lib/node_modules/npm/bin/npm-cli.js install --force --cache=/root/.npm --prefer-offline=false --prefer-online=false --offline=false --no-progress --no-save --no-audit
npm ERR! npm WARN using --force Recommended protections disabled.
npm ERR! npm WARN ERESOLVE overriding peer dependency
npm ERR! npm WARN Found: [email protected]
npm ERR! npm WARN node_modules/react
npm ERR! npm WARN   dev react@"^15.4.2" from the root project
npm ERR! npm WARN 
npm ERR! npm WARN Could not resolve dependency:
npm ERR! npm WARN peer react@"17.0.1" from [email protected]
npm ERR! npm WARN node_modules/react-native
npm ERR! npm WARN   peer react-native@">=0.59" from @react-native-community/[email protected]
npm ERR! npm WARN   node_modules/@react-native-community/netinfo
npm ERR! npm WARN ERESOLVE overriding peer dependency
npm ERR! npm WARN Found: [email protected]
npm ERR! npm WARN node_modules/react
npm ERR! npm WARN   dev react@"^15.4.2" from the root project
npm ERR! npm WARN 
npm ERR! npm WARN Could not resolve dependency:
npm ERR! npm WARN peer react@"^16.8.0 || ^17.0.0" from [email protected]
npm ERR! npm WARN node_modules/react-native/node_modules/use-subscription
npm ERR! npm WARN   use-subscription@"^1.0.0" from [email protected]
npm ERR! npm WARN   node_modules/react-native
npm ERR! npm WARN ERESOLVE overriding peer dependency
npm ERR! npm WARN Found: [email protected]
npm ERR! npm WARN node_modules/react
npm ERR! npm WARN   dev react@"^15.4.2" from the root project
npm ERR! npm WARN 
npm ERR! npm WARN Could not resolve dependency:
npm ERR! npm WARN peer react@"^16.8.0 || ^17.0.0" from [email protected]
npm ERR! npm WARN node_modules/react-native/node_modules/use-subscription
npm ERR! npm WARN   use-subscription@"^1.0.0" from [email protected]
npm ERR! npm WARN   node_modules/react-native
npm ERR! npm ERR! code EPIPE
npm ERR! npm ERR! syscall write
npm ERR! npm ERR! errno EPIPE
npm ERR! npm ERR! request to https://registry.npmjs.org/picomatch failed, reason: write EPIPE
npm ERR! 
npm ERR! npm ERR! A complete log of this run can be found in:
npm ERR! npm ERR!     /root/.npm/_logs/2021-04-01T07_47_36_348Z-debug.log

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-04-01T07_49_27_414Z-debug.log
make: *** [Makefile:81: webapp/node_modules] Error 1

Missing go get on fresh install

I have installed a fresh dev env (go). When i clone this repo and start make it fail with errors.

Missing dep are :

  • github.com/mattermost/mattermost-server/model
  • github.com/pkg/errors

I need to go get them manually.

I see 2 options :

  • add step in readme
  • add go get in make file

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.