Skip to content

Commit ff4ffd7

Browse files
talveserquhart
authored andcommitted
feat: add byo react package netlify-cms-app (#2252)
1 parent b4041d3 commit ff4ffd7

File tree

10 files changed

+137
-35
lines changed

10 files changed

+137
-35
lines changed

packages/netlify-cms-app/README.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Netlify CMS App
2+
[![](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/netlify/netlifycms)
3+
4+
_For a Netlify CMS overview, see the general [Netlify CMS project README](https://github.com/netlify/netlify-cms)._
5+
6+
## Purpose
7+
This package is similar to the [`netlify-cms`](https://github.com/netlify/netlify-cms/tree/master/packages/netlify-cms/) package, but is designed for use with extensions. It serves that purpose in the following ways.
8+
9+
- It does not automatically initialize - you must run the CMS `init` method.
10+
- It does not include `react` or `react-dom` - they are required as peer dependencies.
11+
- It does not include the following extensions:
12+
- [`netlify-cms-media-library-cloudinary`]
13+
- [`netlify-cms-media-library-uploadcare`]
14+
15+
## Usage
16+
Install via script tag:
17+
18+
```html
19+
<!-- Excluding `doctype` and `head` but you should add them -->
20+
<body>
21+
<!-- Add these scripts to the bottom of the body -->
22+
<script src="https://unpkg.com/react@^16/umd/react.production.min.js"></script>
23+
<script src="https://unpkg.com/react-dom@^16/umd/react-dom.production.min.js"></script>
24+
<script src="https://unpkg.com/netlify-cms-app/dist/netlify-cms-app.js"></script>
25+
26+
<!-- Initialize the CMS -->
27+
<script>
28+
NetlifyCmsApp.init();
29+
</script>
30+
</body>
31+
```
32+
33+
Install via npm:
34+
35+
```
36+
npm i react react-dom netlify-cms-app
37+
```
38+
39+
```js
40+
import CMS from 'netlify-cms-app';
41+
42+
CMS.init();
43+
```

packages/netlify-cms-app/package.json

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
{
2+
"name": "netlify-cms-app",
3+
"description": "An extensible, open source, Git-based, React CMS for static sites. Reusable congiuration with React as peer.",
4+
"version": "2.8.1-beta.1",
5+
"homepage": "https://www.netlifycms.org",
6+
"repository": "https://github.com/netlify/netlify-cms/tree/master/packages/netlify-cms-app",
7+
"bugs": "https://github.com/netlify/netlify-cms/issues",
8+
"main": "dist/netlify-cms-app.js",
9+
"scripts": {
10+
"develop": "yarn build:esm --watch",
11+
"build": "cross-env NODE_ENV=production webpack",
12+
"build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore src/**/__tests__/* --root-mode upward -s"
13+
},
14+
"keywords": [
15+
"netlify",
16+
"cms",
17+
"content editing",
18+
"static site generators",
19+
"jamstack"
20+
],
21+
"license": "MIT",
22+
"dependencies": {
23+
"@emotion/core": "^10.0.9",
24+
"@emotion/styled": "^10.0.9",
25+
"immutable": "^3.7.6",
26+
"lodash": "^4.17.11",
27+
"moment": "^2.24.0",
28+
"netlify-cms-backend-bitbucket": "^2.3.1-beta.1",
29+
"netlify-cms-backend-git-gateway": "^2.4.1-beta.1",
30+
"netlify-cms-backend-github": "^2.4.1-beta.1",
31+
"netlify-cms-backend-gitlab": "^2.3.1-beta.1",
32+
"netlify-cms-backend-test": "^2.2.1-beta.1",
33+
"netlify-cms-core": "^2.10.1-beta.1",
34+
"netlify-cms-editor-component-image": "^2.4.1-beta.1",
35+
"netlify-cms-widget-boolean": "^2.2.1-beta.1",
36+
"netlify-cms-widget-date": "^2.3.1-beta.1",
37+
"netlify-cms-widget-datetime": "^2.2.1-beta.1",
38+
"netlify-cms-widget-file": "^2.4.1-beta.1",
39+
"netlify-cms-widget-image": "^2.3.1-beta.1",
40+
"netlify-cms-widget-list": "^2.3.1-beta.1",
41+
"netlify-cms-widget-map": "^1.3.1-beta.1",
42+
"netlify-cms-widget-markdown": "^2.4.1-beta.1",
43+
"netlify-cms-widget-number": "^2.3.1-beta.1",
44+
"netlify-cms-widget-object": "^2.2.1-beta.1",
45+
"netlify-cms-widget-relation": "^2.3.1-beta.1",
46+
"netlify-cms-widget-select": "^2.4.1-beta.1",
47+
"netlify-cms-widget-string": "^2.2.1-beta.1",
48+
"netlify-cms-widget-text": "^2.2.1-beta.1",
49+
"prop-types": "^15.7.2",
50+
"react-immutable-proptypes": "^2.1.0"
51+
},
52+
"peerDependencies": {
53+
"react": "^16.8.4",
54+
"react-dom": "^16.8.4"
55+
}
56+
}

packages/netlify-cms-app/src/index.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { NetlifyCmsCore as CMS } from 'netlify-cms-core';
2+
import './backends';
3+
import './widgets';
4+
import './editor-components';
5+
6+
export const NetlifyCmsApp = {
7+
...CMS,
8+
};
9+
export default CMS;
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
const path = require('path');
2+
const webpack = require('webpack');
3+
const pkg = require('./package.json');
4+
const { getConfig, plugins } = require('../../scripts/webpack');
5+
const baseWebpackConfig = getConfig({ baseOnly: true });
6+
7+
const isProduction = process.env.NODE_ENV === 'production';
8+
console.log(`${pkg.version}${isProduction ? '' : '-dev'}`);
9+
10+
const baseConfig = {
11+
...baseWebpackConfig,
12+
context: path.join(__dirname, 'src'),
13+
entry: './index.js',
14+
plugins: [
15+
...Object.entries(plugins)
16+
.filter(([key]) => key !== 'friendlyErrors')
17+
.map(([, plugin]) => plugin()),
18+
new webpack.DefinePlugin({
19+
NETLIFY_CMS_VERSION: JSON.stringify(`- app - ${pkg.version}${isProduction ? '' : '-dev'}`),
20+
NETLIFY_CMS_CORE_VERSION: null,
21+
}),
22+
],
23+
};
24+
25+
module.exports = baseConfig;

packages/netlify-cms/package.json

Lines changed: 2 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -20,38 +20,10 @@
2020
],
2121
"license": "MIT",
2222
"dependencies": {
23-
"@emotion/core": "^10.0.9",
24-
"@emotion/styled": "^10.0.9",
25-
"create-react-class": "^15.6.0",
26-
"immutable": "^3.7.6",
27-
"lodash": "^4.17.11",
28-
"moment": "^2.24.0",
29-
"netlify-cms-backend-bitbucket": "^2.3.1-beta.1",
30-
"netlify-cms-backend-git-gateway": "^2.4.1-beta.1",
31-
"netlify-cms-backend-github": "^2.4.1-beta.1",
32-
"netlify-cms-backend-gitlab": "^2.3.1-beta.1",
33-
"netlify-cms-backend-test": "^2.2.1-beta.1",
34-
"netlify-cms-core": "^2.10.1-beta.1",
35-
"netlify-cms-editor-component-image": "^2.4.1-beta.1",
23+
"netlify-cms-app": "^2.8.1-beta.1",
3624
"netlify-cms-media-library-cloudinary": "^1.3.1-beta.1",
3725
"netlify-cms-media-library-uploadcare": "^0.5.1-beta.1",
38-
"netlify-cms-widget-boolean": "^2.2.1-beta.1",
39-
"netlify-cms-widget-date": "^2.3.1-beta.1",
40-
"netlify-cms-widget-datetime": "^2.2.1-beta.1",
41-
"netlify-cms-widget-file": "^2.4.1-beta.1",
42-
"netlify-cms-widget-image": "^2.3.1-beta.1",
43-
"netlify-cms-widget-list": "^2.3.1-beta.1",
44-
"netlify-cms-widget-map": "^1.3.1-beta.1",
45-
"netlify-cms-widget-markdown": "^2.4.1-beta.1",
46-
"netlify-cms-widget-number": "^2.3.1-beta.1",
47-
"netlify-cms-widget-object": "^2.2.1-beta.1",
48-
"netlify-cms-widget-relation": "^2.3.1-beta.1",
49-
"netlify-cms-widget-select": "^2.4.1-beta.1",
50-
"netlify-cms-widget-string": "^2.2.1-beta.1",
51-
"netlify-cms-widget-text": "^2.2.1-beta.1",
52-
"prop-types": "^15.7.2",
5326
"react": "^16.8.4",
54-
"react-dom": "^16.8.4",
55-
"react-immutable-proptypes": "^2.1.0"
27+
"react-dom": "^16.8.4"
5628
}
5729
}

packages/netlify-cms/src/index.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
import createReactClass from 'create-react-class';
22
import React from 'react';
3-
import { NetlifyCmsCore as CMS } from 'netlify-cms-core';
4-
import './backends';
5-
import './widgets';
6-
import './editor-components';
3+
import { NetlifyCmsApp as CMS } from 'netlify-cms-app/dist/esm';
74
import './media-libraries';
85

96
/**

yarn.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3940,7 +3940,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
39403940
safe-buffer "^5.0.1"
39413941
sha.js "^2.4.8"
39423942

3943-
create-react-class@^15.5.1, create-react-class@^15.5.2, create-react-class@^15.6.0:
3943+
create-react-class@^15.5.1, create-react-class@^15.5.2:
39443944
version "15.6.3"
39453945
resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036"
39463946
integrity sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==

0 commit comments

Comments
 (0)