From 06eeca0f65bf515993d523ce39d3e018404e6535 Mon Sep 17 00:00:00 2001 From: soupette Date: Thu, 18 Apr 2019 01:10:38 +0200 Subject: [PATCH] Build upload --- packages/strapi-admin/admin/src/plugins.js | 27 ++++++++- packages/strapi-helper-plugin/package.json | 2 +- .../package.json | 2 +- packages/strapi-plugin-upload/.babelrc | 19 ++++++ .../strapi-plugin-upload/admin/src/index.js | 46 +++----------- .../admin/src/initializer.js | 17 ------ .../admin/src/injectedComponents.js | 1 - .../admin/src/lifecycles.js | 4 +- .../admin/src/translations/index.js | 37 ++++++++++++ packages/strapi-plugin-upload/package.json | 44 +++++++++++++- .../strapi-plugin-upload/rollup.config.js | 60 +++++++++++++++++++ .../admin/src/initializer.js | 15 ----- .../package.json | 2 +- .../rollup.config.js | 4 +- 14 files changed, 200 insertions(+), 80 deletions(-) create mode 100644 packages/strapi-plugin-upload/.babelrc delete mode 100644 packages/strapi-plugin-upload/admin/src/initializer.js delete mode 100644 packages/strapi-plugin-upload/admin/src/injectedComponents.js create mode 100644 packages/strapi-plugin-upload/admin/src/translations/index.js create mode 100644 packages/strapi-plugin-upload/rollup.config.js delete mode 100644 packages/strapi-plugin-users-permissions/admin/src/initializer.js diff --git a/packages/strapi-admin/admin/src/plugins.js b/packages/strapi-admin/admin/src/plugins.js index ace1c0b4bb..b75c73a05c 100644 --- a/packages/strapi-admin/admin/src/plugins.js +++ b/packages/strapi-admin/admin/src/plugins.js @@ -16,6 +16,29 @@ window.strapi = Object.assign(window.strapi || {}, { injectSaga, }); +// const plugins = [ +// // 'content-manager', +// // 'content-type-builder', +// // 'email', +// // 'settings-manager', +// // 'upload', +// 'users-permissions', +// ].reduce((acc, curr) => { +// const suffix = +// process.env.NODE_ENV === 'development' +// ? '/src' +// : `dist/${current}.esm.min.js`; + +// acc[curr] = require(`../../../strapi-plugin-${current}/admin/${suffix}`); + +// return acc; +// }); + +// console.log(plugins); + +// module.exports = {}; +// module.exports = plugins; + module.exports = { // 'content-manager': require('../../../strapi-plugin-content-manager/admin/src') // .default, @@ -25,8 +48,10 @@ module.exports = { // 'settings-manager': require('../../../strapi-plugin-settings-manager/admin/src') // .default, // upload: require('../../../strapi-plugin-upload/admin/src').default, + upload: require('../../../strapi-plugin-upload/admin/dist/strapi-plugin-upload.esm.min.js') + .default, // 'users-permissions': require('../../../strapi-plugin-users-permissions/admin/src') // .default, - 'users-permissions': require('../../../strapi-plugin-users-permissions/admin/dist/strapi-us.esm.min.js') + 'users-permissions': require('../../../strapi-plugin-users-permissions/admin/dist/strapi-users-permissions.esm.min.js') .default, }; diff --git a/packages/strapi-helper-plugin/package.json b/packages/strapi-helper-plugin/package.json index 3ce52d91e3..4f9581e729 100644 --- a/packages/strapi-helper-plugin/package.json +++ b/packages/strapi-helper-plugin/package.json @@ -86,4 +86,4 @@ "react-datetime": "^2.15.0", "whatwg-fetch": "^2.0.3" } -} +} \ No newline at end of file diff --git a/packages/strapi-plugin-settings-manager/package.json b/packages/strapi-plugin-settings-manager/package.json index 847abb9055..de3501fc5f 100644 --- a/packages/strapi-plugin-settings-manager/package.json +++ b/packages/strapi-plugin-settings-manager/package.json @@ -51,4 +51,4 @@ "npm": ">= 6.0.0" }, "license": "MIT" -} +} \ No newline at end of file diff --git a/packages/strapi-plugin-upload/.babelrc b/packages/strapi-plugin-upload/.babelrc new file mode 100644 index 0000000000..69a1670ad5 --- /dev/null +++ b/packages/strapi-plugin-upload/.babelrc @@ -0,0 +1,19 @@ +{ + "presets": [ + [ + "@babel/preset-env", + { + "modules": false, + "loose": true, + "targets": { + "browsers": ["since 2017"] + } + } + ], + "@babel/preset-react" + ], + "plugins": [ + "@babel/plugin-proposal-class-properties", + "@babel/plugin-syntax-dynamic-import" + ] +} diff --git a/packages/strapi-plugin-upload/admin/src/index.js b/packages/strapi-plugin-upload/admin/src/index.js index 64b400c02d..2899d87b46 100644 --- a/packages/strapi-plugin-upload/admin/src/index.js +++ b/packages/strapi-plugin-upload/admin/src/index.js @@ -1,42 +1,14 @@ import React from 'react'; -import { reduce } from 'lodash'; import pluginPkg from '../../package.json'; +import App from './containers/App'; +import Initializer from './containers/Initializer'; + +import lifecycles from './lifecycles'; +import trads from './translations'; import pluginId from './pluginId'; -import App from './containers/App'; - const pluginDescription = pluginPkg.strapi.description || pluginPkg.description; -const formatMessages = messages => - reduce( - messages, - (result, value, key) => { - result[`${pluginId}.${key}`] = value; - - return result; - }, - {}, - ); -const requireTranslations = language => { - try { - return require(`./translations/${language}.json`); // eslint-disable-line global-require - } catch (error) { - console.error( - `Unable to load "${language}" translation for the plugin ${pluginId}. Please make sure "${language}.json" file exists in "pluginPath/admin/src/translations" folder.`, - ); - return; - } -}; - -const translationMessages = reduce( - strapi.languages, - (result, language) => { - result[language] = formatMessages(requireTranslations(language)); - return result; - }, - {}, -); - function Comp(props) { return ; } @@ -47,16 +19,16 @@ const plugin = { description: pluginDescription, icon: pluginPkg.strapi.icon, id: pluginId, - initializer: require('./initializer'), - injectedComponents: require('./injectedComponents').default, + initializer: Initializer, + injectedComponents: [], layout: null, - lifecycles: require('./lifecycles'), + lifecycles, leftMenuLinks: [], leftMenuSections: [], mainComponent: Comp, name: pluginPkg.strapi.name, preventComponentRendering: false, - translationMessages, + trads, }; export default plugin; diff --git a/packages/strapi-plugin-upload/admin/src/initializer.js b/packages/strapi-plugin-upload/admin/src/initializer.js deleted file mode 100644 index 4e3f528185..0000000000 --- a/packages/strapi-plugin-upload/admin/src/initializer.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * - * Initializers - * - * ------------ - * - * Execute logic to make your plugin ready to be displayed - * The app will wait until all the plugins are ready before rendering - * the admin. - * - * These components will be mounted only once when the app is loaded. - * - */ - -const Initializer = require('./containers/Initializer'); - -module.exports = Initializer.default; diff --git a/packages/strapi-plugin-upload/admin/src/injectedComponents.js b/packages/strapi-plugin-upload/admin/src/injectedComponents.js deleted file mode 100644 index 109fa8b38c..0000000000 --- a/packages/strapi-plugin-upload/admin/src/injectedComponents.js +++ /dev/null @@ -1 +0,0 @@ -export default []; \ No newline at end of file diff --git a/packages/strapi-plugin-upload/admin/src/lifecycles.js b/packages/strapi-plugin-upload/admin/src/lifecycles.js index b92d87a279..9a875051e1 100644 --- a/packages/strapi-plugin-upload/admin/src/lifecycles.js +++ b/packages/strapi-plugin-upload/admin/src/lifecycles.js @@ -8,4 +8,6 @@ * */ -module.exports = function lifecycles() {}; +function lifecycles() {} + +export default lifecycles; diff --git a/packages/strapi-plugin-upload/admin/src/translations/index.js b/packages/strapi-plugin-upload/admin/src/translations/index.js new file mode 100644 index 0000000000..a8a5a9b4fe --- /dev/null +++ b/packages/strapi-plugin-upload/admin/src/translations/index.js @@ -0,0 +1,37 @@ +import ar from './ar.json'; +import de from './de.json'; +import en from './en.json'; +import es from './es.json'; +import fr from './fr.json'; +import it from './it.json'; +import ja from './ja.json'; +import ko from './ko.json'; +import nl from './nl.json'; +import pl from './pl.json'; +import ptBR from './pt-BR.json'; +import pt from './pt.json'; +import ru from './ru.json'; +import tr from './tr.json'; +import zhHans from './zh-hans.json'; +import zh from './zh.json'; + +const trads = { + ar, + de, + en, + es, + fr, + it, + ja, + ko, + nl, + pl, + 'pt-BR': ptBR, + pt, + ru, + tr, + 'zh-Hans': zhHans, + zh, +}; + +export default trads; diff --git a/packages/strapi-plugin-upload/package.json b/packages/strapi-plugin-upload/package.json index c64b3c697a..0aa85309fd 100644 --- a/packages/strapi-plugin-upload/package.json +++ b/packages/strapi-plugin-upload/package.json @@ -13,8 +13,8 @@ "analyze": "node ./node_modules/strapi-helper-plugin/lib/internals/scripts/analyze.js", "prebuild": "npm run build:clean", "build:dev": "cross-env NODE_ENV=development ./node_modules/strapi-helper-plugin/node_modules/.bin/webpack --config node_modules/strapi-helper-plugin/lib/internals/webpack/webpack.prod.babel.js --color -p --progress", - "build": "cross-env NODE_ENV=production node_modules/strapi-helper-plugin/node_modules/.bin/webpack --config node_modules/strapi-helper-plugin/lib/internals/webpack/webpack.prod.babel.js --color -p --progress", - "build:clean": "rimraf admin/build", + "build": "rollup -c", + "build:clean": "rimraf admin/dist", "start": "cross-env NODE_ENV=development ./node_modules/strapi-helper-plugin/lib/server", "generate": "node ./node_modules/plop/plop.js --plopfile node_modules/strapi-helper-plugin/lib/internals/generators/index.js", "prettier": "node ./node_modules/strapi-helper-plugin/node_modules/.bin/prettier --single-quote --trailing-comma es5 --write \"{admin,__{tests,mocks}__}/**/*.js\"", @@ -22,13 +22,51 @@ "prepublishOnly": "IS_MONOREPO=true npm run build" }, "dependencies": { + "redux-saga": "^1.0.2", "strapi-provider-upload-local": "3.0.0-alpha.25.2", "strapi-utils": "3.0.0-alpha.25.2", "stream-to-array": "^2.3.0", "uuid": "^3.2.1" }, "devDependencies": { - "strapi-helper-plugin": "3.0.0-alpha.25.2" + "@babel/core": "^7.4.3", + "@babel/plugin-external-helpers": "^7.2.0", + "@babel/plugin-proposal-class-properties": "^7.4.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/preset-env": "^7.4.3", + "@babel/preset-react": "^7.0.0", + "autoprefixer": "^9.5.1", + "node-sass": "^4.11.0", + "postcss-smart-import": "^0.7.6", + "precss": "^4.0.0", + "rimraf": "^2.6.3", + "rollup": "^1.10.0", + "rollup-plugin-babel": "^4.3.2", + "rollup-plugin-commonjs": "^9.3.4", + "rollup-plugin-image": "^1.0.2", + "rollup-plugin-json": "^4.0.0", + "rollup-plugin-node-resolve": "^4.2.3", + "rollup-plugin-postcss": "^2.0.3", + "rollup-plugin-rebase": "^3.1.1", + "rollup-plugin-sizes": "^0.5.1", + "rollup-plugin-svg": "^1.0.1", + "rollup-plugin-terser": "^4.0.4", + "rollup-plugin-url": "^2.2.1" + }, + "peerDependencies": { + "immutable": "^3.8.2", + "invariant": "^2.2.1", + "lodash": "^4.17.11", + "react": "^16.0.0", + "reactstrap": "^5.0.0", + "react-dom": "^16.0.0", + "react-intl": "^2.8.0", + "react-redux": "^7.0.2", + "redux-saga": "^0.16.0", + "react-router": "^5.0.0", + "react-router-dom": "^5.0.0", + "react-transition-group": "^2.5.0", + "strapi-helper-plugin": "^3.0.0-alpha.25.2" }, "author": { "name": "A Strapi developer", diff --git a/packages/strapi-plugin-upload/rollup.config.js b/packages/strapi-plugin-upload/rollup.config.js new file mode 100644 index 0000000000..5a0b108e80 --- /dev/null +++ b/packages/strapi-plugin-upload/rollup.config.js @@ -0,0 +1,60 @@ +import babel from 'rollup-plugin-babel'; +import resolve from 'rollup-plugin-node-resolve'; +import commonjs from 'rollup-plugin-commonjs'; +import svg from 'rollup-plugin-svg'; +import postcss from 'rollup-plugin-postcss'; +import { terser } from 'rollup-plugin-terser'; +import url from 'rollup-plugin-url'; +import json from 'rollup-plugin-json'; +import pkg from './package.json'; + +export default { + input: './admin/src/index.js', + output: [ + { + exports: 'named', + file: `admin/dist/${pkg.name}.cjs.min.js`, + format: 'cjs', + sourceMap: true, + name: pkg.name, + compact: true, + }, + { + exports: 'named', + sourceMap: true, + file: `admin/dist/${pkg.name}.esm.min.js`, + format: 'es', + name: pkg.name, + compact: true, + }, + ], + + plugins: [ + postcss({ + modules: true, + minimize: true, + }), + url({ + limit: 10 * 1024, + emitFiles: true, + }), + babel({ + exclude: 'node_modules/**', + }), + commonjs(), + resolve(), + json({ + exclude: 'node_modules/**', + compact: true, // Default: false + }), + + svg(), + require('rollup-plugin-sizes')(), + terser(), + ], + + external: [ + ...Object.keys(pkg.dependencies || {}), + ...Object.keys(pkg.peerDependencies || {}), + ], +}; diff --git a/packages/strapi-plugin-users-permissions/admin/src/initializer.js b/packages/strapi-plugin-users-permissions/admin/src/initializer.js deleted file mode 100644 index 191b0d7868..0000000000 --- a/packages/strapi-plugin-users-permissions/admin/src/initializer.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * - * Initializers - * - * ------------ - * - * Execute logic to make your plugin ready to be displayed - * The app will wait until all the plugins are ready before rendering - * the admin. - * - * These components will be mounted only once when the app is loaded. - * - */ - -module.exports = require('./containers/Initializer').default; diff --git a/packages/strapi-plugin-users-permissions/package.json b/packages/strapi-plugin-users-permissions/package.json index 510065c6af..d1f7f729f0 100644 --- a/packages/strapi-plugin-users-permissions/package.json +++ b/packages/strapi-plugin-users-permissions/package.json @@ -94,4 +94,4 @@ "npm": ">= 6.0.0" }, "license": "MIT" -} +} \ No newline at end of file diff --git a/packages/strapi-plugin-users-permissions/rollup.config.js b/packages/strapi-plugin-users-permissions/rollup.config.js index c038f26fa7..d5cc62c3ee 100644 --- a/packages/strapi-plugin-users-permissions/rollup.config.js +++ b/packages/strapi-plugin-users-permissions/rollup.config.js @@ -14,7 +14,7 @@ export default { output: [ { exports: 'named', - file: 'admin/dist/strapi-us.cjs.min.js', + file: 'admin/dist/strapi-users-permissions.cjs.min.js', format: 'cjs', sourceMap: true, name: 'strapi-plugin-users-permissions', @@ -23,7 +23,7 @@ export default { { exports: 'named', sourceMap: true, - file: 'admin/dist/strapi-us.esm.min.js', + file: 'admin/dist/strapi-users-permissions.esm.min.js', format: 'es', name: 'strapi-plugin-users-permissions', compact: true,