Hello, everyone!
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
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.
You can also use the pm add
command to add or update plugins. The process is as follows:
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 # service platform username
NOCOBASE_PKG_PASSWORD=your-password # service platform 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.