You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Overhaul Manage Add-ons and Packages
- Create a new Diataxis explanation section, Conceptual guides.
- Create a new section, Manage Plone, and pages for frontend and backend.
- Move bits from manage-add-ons-packages.md into appropriate files
* Add a redirect
* Move cookiecutter info to Glossary
* Move Configuration with `cookiecutter-zope-instance` to manage/backend.md
* Remove manage-add-ons-packages.md
"property=og:description": "Package management in Plone."
6
+
"property=og:title": "Package management"
7
+
"keywords": "Plone 6, package management, mxdev"
8
+
---
9
+
10
+
# Package management
11
+
12
+
Plone 6 consists of a collection of Python and Node.js packages.
13
+
Over the decades of its existence, Plone has used several package management tools, sometimes multiple tools at one time.
14
+
Each one has its strengths and weaknesses for performing specific tasks, such as installation, conflict resolution, updates and upgrades, and working with virtual environments and across platforms.
15
+
16
+
With Volto as the default frontend in Plone 6, first npm, then pnpm, was brought into the mix as a package manager for its Node.js packages.
17
+
18
+
Python itself has a complex and convoluted history with package management, as [xkcd](https://xkcd.com/1987/) illustrates.
:alt: A comic from xkcd entitled Python Environment
22
+
:class: figure
23
+
:target: https://xkcd.com/1987/
24
+
```
25
+
26
+
27
+
(manage-backend-python-packages-label)=
28
+
29
+
## Manage backend Python packages
30
+
31
+
If you want to check out a Plone core package for development, or want to override the constraints of Plone, normally you would define constraints with a file {file}`constraints.txt` to tell `pip` to install a different version of a Plone package.
32
+
33
+
```text
34
+
# constraints.txt with unresolvable version conflict
Copy file name to clipboardExpand all lines: docs/glossary.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -48,7 +48,9 @@ plone/generator-volto
48
48
See {ref}`upgrade-18-cookieplone-label`.
49
49
50
50
cookiecutter-plone-starter
51
-
[cookiecutter-plone-starter](https://github.com/collective/cookiecutter-plone-starter/) is a framework for jumpstarting Plone 6 projects quickly.
51
+
[cookiecutter-plone-starter](https://github.com/collective/cookiecutter-plone-starter/) creates a Plone project that you can install using {term}`Make`.
52
+
It generates files for installing and configuring both the frontend and backend.
53
+
For the backend, it uses {term}`cookiecutter-zope-instance` to generate configuration files for a Zope WSGI instance.
52
54
53
55
cookiecutter-zope-instance
54
56
[cookiecutter-zope-instance](https://github.com/plone/cookiecutter-zope-instance) is a cookiecutter template to create a full and complex configuration of a Zope WSGI instance.
{term}`Cookiecutter` creates projects from project templates.
25
-
The cookiecutter [`cookiecutter-plone-starter`](https://github.com/collective/cookiecutter-plone-starter/) creates a Plone project that you can install using {term}`Make`.
26
-
It generates files for installing and configuring both the frontend and backend.
27
-
For the backend, it uses [`cookiecutter-zope-instance`](https://github.com/plone/cookiecutter-zope-instance) to generate configuration files for a Zope WSGI instance.
## Configuration with `cookiecutter-zope-instance`
33
-
34
-
You can configure your instance's options, including the following.
35
-
36
-
- persistent storage: blobs, direct filestorage, relational database, ZEO, and so on
37
-
- ports
38
-
- threads
39
-
- cache
40
-
- debugging and profiling for development
20
+
Plone uses `mxdev` to manage packages and constraints.
41
21
42
22
```{seealso}
43
-
For a complete list of features, usage, and options, read [`cookiecutter-zope-instance`'s `README.rst`](https://github.com/plone/cookiecutter-zope-instance#readme).
23
+
For an explanation of why Plone uses `mxdev`, see {ref}`manage-backend-python-packages-label`.
44
24
```
45
25
46
26
47
-
(manage-plone-backend-packages-with-mxdev-label)=
48
-
49
-
## Manage Plone backend packages with `mxdev`
50
-
51
-
This section describes how to manage packages for the Plone backend with `mxdev`.
52
-
53
-
For developing add-ons for the Plone frontend, Volto, see {doc}`volto/addons/index`.
54
-
55
-
56
-
(manage-the-problem-with-pip-label)=
57
-
58
-
### The problem with `pip`
59
-
60
-
If you want to check out a Plone core package for development, or want to override the constraints of Plone, normally you would define constraints with a file {file}`constraints.txt` to tell `pip` to install a different version of a Plone package.
61
-
62
-
```
63
-
# constraints.txt with unresolvable version conflict
- This creates or updates the Zope configuration from its `instance.yaml` file using `cookiecutter-zope-instance`.
389
-
- Creates specified directories, if they do not exist.
287
+
## Configuration with `cookiecutter-zope-instance`
390
288
391
-
- Returning to the target `build-dev`:
289
+
You can configure your instance's options, including the following.
392
290
393
-
- This generates the `mxdev` files as described above in {ref}`manage-mxdev-usage-overview-label`.
394
-
- Installs Plone core packages and add-ons from the files generated by `mxdev`.
291
+
- persistent storage: blobs, direct filestorage, relational database, ZEO, and so on
292
+
- ports
293
+
- threads
294
+
- cache
295
+
- debugging and profiling for development
395
296
396
-
You can configure your Zope instance as described in the section {ref}`manage-common-management-tasks-label`.
297
+
```{seealso}
298
+
For a complete list of features, usage, and options, read [`cookiecutter-zope-instance`'s `README.rst`](https://github.com/plone/cookiecutter-zope-instance#readme).
0 commit comments