This commit is contained in:
2025-08-25 20:24:23 +08:00
parent 30106e0129
commit 0ae8d7a709
1044 changed files with 321581 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,41 @@
# Decap CMS App
_For a Decap CMS overview, see the general [Decap CMS project README](https://github.com/decaporg/decap-cms)._
## Purpose
This package is similar to the [`decap-cms`](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms/) package, but is designed for use with extensions. It serves that purpose in the following ways.
- It does not automatically initialize - you must run the CMS `init` method.
- It does not include `react` or `react-dom` - they are required as peer dependencies.
- It does not include the following extensions:
- [`decap-cms-media-library-cloudinary`]
- [`decap-cms-media-library-uploadcare`]
## Usage
Install via script tag:
```html
<!-- Excluding `doctype` and `head` but you should add them -->
<body>
<!-- Add these scripts to the bottom of the body -->
<script src="https://unpkg.com/react@^18/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@^18/umd/react-dom.production.min.js"></script>
<script src="https://unpkg.com/decap-cms-app/dist/decap-cms-app.js"></script>
<!-- Initialize the CMS -->
<script>
DecapCmsApp.init();
</script>
</body>
```
Install via npm:
```
npm i react react-dom decap-cms-app
```
```js
import CMS from 'decap-cms-app';
CMS.init();
```

View File

@@ -0,0 +1,7 @@
declare module 'decap-cms-app' {
import type { CMS } from 'decap-cms-core';
export const DecapCmsApp: CMS;
export default DecapCmsApp;
}

View File

@@ -0,0 +1,80 @@
{
"name": "decap-cms-app",
"description": "An extensible, open source, Git-based, React CMS for static sites. Reusable congiuration with React as peer.",
"version": "3.8.3",
"homepage": "https://www.decapcms.org",
"repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-app",
"bugs": "https://github.com/decaporg/decap-cms/issues",
"module": "dist/esm/index.js",
"main": "dist/decap-cms-app.js",
"files": [
"src/",
"dist/",
"index.d.ts"
],
"types": "index.d.ts",
"scripts": {
"develop": "npm run build:esm -- --watch",
"webpack": "node --max_old_space_size=4096 ../../node_modules/webpack/bin/webpack.js",
"build": "cross-env NODE_ENV=production run-s webpack",
"build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward"
},
"keywords": [
"cms",
"content editing",
"static site generators",
"jamstack"
],
"license": "MIT",
"dependencies": {
"@emotion/react": "^11.11.1",
"@emotion/styled": "^11.11.0",
"ajv": "^8.17.1",
"ajv-errors": "^3.0.0",
"ajv-keywords": "^5.1.0",
"codemirror": "^5.46.0",
"dayjs": "^1.11.10",
"decap-cms-backend-aws-cognito-github-proxy": "^3.4.1",
"decap-cms-backend-azure": "^3.3.0",
"decap-cms-backend-bitbucket": "^3.3.0",
"decap-cms-backend-git-gateway": "^3.4.1",
"decap-cms-backend-gitea": "^3.3.0",
"decap-cms-backend-github": "^3.4.0",
"decap-cms-backend-gitlab": "^3.4.0",
"decap-cms-backend-proxy": "^3.3.0",
"decap-cms-backend-test": "^3.2.1",
"decap-cms-core": "^3.8.1",
"decap-cms-editor-component-image": "^3.2.0",
"decap-cms-lib-auth": "^3.0.6",
"decap-cms-lib-util": "^3.3.1",
"decap-cms-lib-widgets": "^3.2.1",
"decap-cms-locales": "^3.4.0",
"decap-cms-ui-auth": "^3.2.3",
"decap-cms-ui-default": "^3.3.0",
"decap-cms-widget-boolean": "^3.2.0",
"decap-cms-widget-code": "^3.2.0",
"decap-cms-widget-colorstring": "^3.2.0",
"decap-cms-widget-datetime": "^3.4.0",
"decap-cms-widget-file": "^3.2.0",
"decap-cms-widget-image": "^3.2.0",
"decap-cms-widget-list": "^3.4.0",
"decap-cms-widget-map": "^3.2.0",
"decap-cms-widget-markdown": "^3.5.0",
"decap-cms-widget-number": "^3.2.0",
"decap-cms-widget-object": "^3.4.0",
"decap-cms-widget-relation": "^3.5.2",
"decap-cms-widget-select": "^3.3.0",
"decap-cms-widget-string": "^3.2.0",
"decap-cms-widget-text": "^3.2.0",
"immutable": "^3.7.6",
"lodash": "^4.17.11",
"prop-types": "^15.7.2",
"react-immutable-proptypes": "^2.1.0",
"uuid": "^8.3.2"
},
"peerDependencies": {
"react": "^19.1.0",
"react-dom": "^19.1.0"
},
"incrementToForceBump": 2
}

View File

@@ -0,0 +1,70 @@
// Core
import { DecapCmsCore as CMS } from 'decap-cms-core';
// Backends
import { AzureBackend } from 'decap-cms-backend-azure';
import { AwsCognitoGitHubProxyBackend } from 'decap-cms-backend-aws-cognito-github-proxy';
import { GitHubBackend } from 'decap-cms-backend-github';
import { GitLabBackend } from 'decap-cms-backend-gitlab';
import { GiteaBackend } from 'decap-cms-backend-gitea';
import { GitGatewayBackend } from 'decap-cms-backend-git-gateway';
import { BitbucketBackend } from 'decap-cms-backend-bitbucket';
import { TestBackend } from 'decap-cms-backend-test';
import { ProxyBackend } from 'decap-cms-backend-proxy';
// Widgets
import DecapCmsWidgetString from 'decap-cms-widget-string';
import DecapCmsWidgetNumber from 'decap-cms-widget-number';
import DecapCmsWidgetText from 'decap-cms-widget-text';
import DecapCmsWidgetImage from 'decap-cms-widget-image';
import DecapCmsWidgetFile from 'decap-cms-widget-file';
import DecapCmsWidgetSelect from 'decap-cms-widget-select';
import DecapCmsWidgetMarkdown from 'decap-cms-widget-markdown';
import DecapCmsWidgetList from 'decap-cms-widget-list';
import DecapCmsWidgetObject from 'decap-cms-widget-object';
import DecapCmsWidgetRelation from 'decap-cms-widget-relation';
import DecapCmsWidgetBoolean from 'decap-cms-widget-boolean';
import DecapCmsWidgetMap from 'decap-cms-widget-map';
import DecapCmsWidgetDatetime from 'decap-cms-widget-datetime';
import DecapCmsWidgetCode from 'decap-cms-widget-code';
import DecapCmsWidgetColorString from 'decap-cms-widget-colorstring';
// Editor Components
import image from 'decap-cms-editor-component-image';
// Locales
import * as locales from 'decap-cms-locales';
// Register all the things
CMS.registerBackend('git-gateway', GitGatewayBackend);
CMS.registerBackend('azure', AzureBackend);
CMS.registerBackend('aws-cognito-github-proxy', AwsCognitoGitHubProxyBackend);
CMS.registerBackend('github', GitHubBackend);
CMS.registerBackend('gitlab', GitLabBackend);
CMS.registerBackend('gitea', GiteaBackend);
CMS.registerBackend('bitbucket', BitbucketBackend);
CMS.registerBackend('test-repo', TestBackend);
CMS.registerBackend('proxy', ProxyBackend);
CMS.registerWidget([
DecapCmsWidgetString.Widget(),
DecapCmsWidgetNumber.Widget(),
DecapCmsWidgetText.Widget(),
DecapCmsWidgetImage.Widget(),
DecapCmsWidgetFile.Widget(),
DecapCmsWidgetSelect.Widget(),
DecapCmsWidgetMarkdown.Widget(),
DecapCmsWidgetList.Widget(),
DecapCmsWidgetObject.Widget(),
DecapCmsWidgetRelation.Widget(),
DecapCmsWidgetBoolean.Widget(),
DecapCmsWidgetMap.Widget(),
DecapCmsWidgetDatetime.Widget(),
DecapCmsWidgetCode.Widget(),
DecapCmsWidgetColorString.Widget(),
]);
CMS.registerEditorComponent(image);
CMS.registerEditorComponent({
id: 'code-block',
label: 'Code Block',
widget: 'code',
type: 'code-block',
});
Object.keys(locales).forEach(locale => {
CMS.registerLocale(locale, locales[locale]);
});

View File

@@ -0,0 +1,14 @@
import { DecapCmsCore as CMS } from 'decap-cms-core';
import './extensions.js';
// Log version
if (typeof window !== 'undefined') {
if (typeof DECAP_CMS_APP_VERSION === 'string') {
console.log(`decap-cms-app ${DECAP_CMS_APP_VERSION}`);
}
}
export const DecapCmsApp = {
...CMS,
};
export default CMS;

View File

@@ -0,0 +1,4 @@
import { DecapCmsCore as CMS } from 'decap-cms-core';
import { en } from 'decap-cms-locales';
CMS.registerLocale('en', en);

View File

@@ -0,0 +1,22 @@
const webpack = require('webpack');
const pkg = require('./package.json');
const { getConfig, plugins } = require('../../scripts/webpack');
const baseWebpackConfig = getConfig({ baseOnly: true });
const isProduction = process.env.NODE_ENV === 'production';
console.log(`${pkg.version}${isProduction ? '' : '-dev'}`);
const baseConfig = {
...baseWebpackConfig,
plugins: [
...Object.entries(plugins)
.filter(([key]) => key !== 'friendlyErrors')
.map(([, plugin]) => plugin()),
new webpack.DefinePlugin({
DECAP_CMS_APP_VERSION: JSON.stringify(`${pkg.version}${isProduction ? '' : '-dev'}`),
}),
],
};
module.exports = baseConfig;