Simplify the process of adding and updating plugins

Lucy ZhangLucy Zhang
3 min read

Originally published at Simplify the process of adding and updating plugins - NocoBase.

About NocoBase

NocoBase is a private, open-source, no-code platform offering total control and infinite scalability. It empowers teams to adapt quickly to changes while significantly reducing costs. Avoid years of development and substantial investment by deploying NocoBase in minutes.

Discover NocoBase in 3 Minutes!

๐Ÿ‘‡ Get NocoBase

Homepage

Demo

Documentation

GitHub

To improve the plugin management experience, we have recently made significant updates to the plugin manager module. The main improvements focus on the plugin addition and upgrade process. Please note that these features are only available in version 1.4.0-alpha and above. The current main branch is v1.3. To experience these new features, please switch to the next branch (v1.4).

The specific updates in this release (v1.4.0-alpha.20240914235554) are as follows:

Plugin list now reads directly from local plugins

4f331f688f18c4c3458b2dff15a9f208.png

The plugin list no longer reads from the database plugin table but directly from the following environment variables or directories:

  • Environment variables

    • APPEND_PRESET_BUILT_IN_PLUGINS

    • APPEND_PRESET_LOCAL_PLUGINS

  • Plugin directories

    • packages/plugins: Plugins in development, must include source code.

    • storage/plugins: Independent plugins, must include the compiled plugin.

Plugins are organized as npm packages with the following directory structure:

|- /packages/
  |- /plugins/
    |- /@nocobase/
      |- /plugin-hello1/
      |- /plugin-hello2/
    |- /my-nocobase-plugin-hello1/
    |- /my-nocobase-plugin-hello2/
|- /storage/
  |- /plugins/
    |- /@nocobase/
      |- /plugin-hello3/
      |- /plugin-hello4/
    |- /my-nocobase-plugin-hello3/
    |- /my-nocobase-plugin-hello4/

Extract plugin package

Directly extract the plugin package into the specified directory, and the plugin manager interface will automatically detect it. For example:

mkdir -p /my-nocobase/storage/plugins/@nocobase/plugin-auth-cas && \
  tar -xvzf /downloads/plugin-auth-cas-1.3.15-beta.tgz \
  -C /my-nocobase/storage/plugins/@nocobase/plugin-auth-cas \
  --strip-components=1

This command ensures that the plugin is extracted into /my-nocobase/storage/plugins/@nocobase/plugin-auth-cas without including the package directory. The correct directory structure should be:

./plugin-auth-cas/dist/server/migrations/20240425200816-change-locale-module.js
./plugin-auth-cas/dist/server/auth.js
./plugin-auth-cas/client.js
./plugin-auth-cas/dist/constants.js
./plugin-auth-cas/dist/externalVersion.js
./plugin-auth-cas/dist/client/index.js
./plugin-auth-cas/dist/index.js
./plugin-auth-cas/dist/server/index.js
./plugin-auth-cas/dist/server/actions/login.js
./plugin-auth-cas/dist/server/plugin.js
./plugin-auth-cas/server.js
./plugin-auth-cas/dist/server/actions/service.js
./plugin-auth-cas/dist/locale/en-US.json
./plugin-auth-cas/dist/locale/ko_KR.json
./plugin-auth-cas/package.json
./plugin-auth-cas/dist/locale/zh-CN.json
./plugin-auth-cas/README.md
./plugin-auth-cas/README.zh-CN.md
./plugin-auth-cas/dist/server/migrations/20240425200816-change-locale-module.d.ts
./plugin-auth-cas/dist/server/auth.d.ts
./plugin-auth-cas/client.d.ts
./plugin-auth-cas/dist/constants.d.ts
./plugin-auth-cas/dist/client/index.d.ts
./plugin-auth-cas/dist/client/locale/index.d.ts
./plugin-auth-cas/dist/index.d.ts
./plugin-auth-cas/dist/server/index.d.ts
./plugin-auth-cas/dist/server/actions/login.d.ts
./plugin-auth-cas/dist/client/Options.d.ts
./plugin-auth-cas/dist/server/plugin.d.ts
./plugin-auth-cas/server.d.ts
./plugin-auth-cas/dist/server/actions/service.d.ts
./plugin-auth-cas/dist/client/SigninPage.d.ts
./plugin-auth-cas/LICENSE.txt

Merge the process of adding and updating plugins.

In the interface, use the "Add & Update" button in the top right corner to add or update.

b5a4fd82955807dc18060772c6689f84.png

You can also use the pm add command to add or update plugins. The process is as follows:

01f3658240cd23353f25833453687df3.png

Installation process for commercial plugins

No need to download plugins one by one; just configure the following environment variables:

NOCOBASE_PKG_URL=https://pkg.nocobase.com/
NOCOBASE_PKG_USERNAME=your-username
NOCOBASE_PKG_PASSWORD=your-password

During application installation or upgrade, plugins will be automatically downloaded and updated (version auto-detected).

yarn nocobase install
yarn nocobase upgrade

For example, the upgrade command log:

nocobase git:(main) yarn nocobase upgrade
$ nocobase upgrade
WAIT: TypeScript compiling...
$ nocobase pkg download-pro
Download success: @nocobase/plugin-custom-brand@1.3.22-beta
Download success: @nocobase/plugin-verdaccio@1.3.22-beta
Download success: @nocobase/plugin-workflow-response-message@1.3.22-beta
Download success: @nocobase/plugin-workflow-request-interceptor@1.3.22-beta
Download success: @nocobase/plugin-workflow-json-query@1.3.22-beta
Download success: @nocobase/plugin-workflow-approval@1.3.22-beta
Download success: @nocobase/plugin-telemetry-prometheus@1.3.22-beta
Download success: @nocobase/plugin-data-source-external-postgres@1.3.22-beta
Download success: @nocobase/plugin-embed@1.3.22-beta
Download success: @nocobase/plugin-data-source-external-mysql@1.3.22-beta
Download success: @nocobase/plugin-workflow-variable@1.3.22-beta
Download success: @nocobase/plugin-collection-fdw@1.3.22-beta
Download success: @nocobase/plugin-demo-platform@1.3.22-beta
Download success: @nocobase/plugin-departments@1.3.22-beta
Download success: @nocobase/plugin-data-source-external-mariadb@1.3.22-beta
Download success: @nocobase/plugin-auth-cas@1.3.22-beta
Download success: @nocobase/plugin-auth-saml@1.3.22-beta
Download success: @nocobase/plugin-auth-oidc@1.3.22-beta
Download success: @nocobase/plugin-comments@1.3.22-beta
Download success: @nocobase/plugin-workflow-custom-action-trigger@1.3.22-beta
Download success: @nocobase/plugin-auth-ldap@1.3.22-beta
Download success: @nocobase/plugin-block-tree@1.3.22-beta
Download success: @nocobase/plugin-auth-dingtalk@1.3.22-beta
Download success: @nocobase/plugin-data-source-rest-api@1.3.22-beta
Download success: @nocobase/plugin-data-source-external-mssql@1.3.22-beta

For intranet servers, you can upload the local storage/plugins folder to the server and then run the NocoBase install or upgrade command.

scp -r /nocobase1/storage/plugins user2@ip2:/nocobase2/storage/plugins

yarn nocobase install
# or
yarn nocobase upgrade

Deleting plugin

Since the plugin list no longer reads from the database plugin table but directly from local plugins, deleting a plugin is as simple as deleting the plugin folder. In other words, removing the plugin folder effectively removes the plugin.

0
Subscribe to my newsletter

Read articles from Lucy Zhang directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Lucy Zhang
Lucy Zhang