2019-05-23 14:48:42 +02:00
# silverstripe-webpack SS4.*
2018-02-05 12:08:06 +01:00
2018-02-05 12:18:00 +01:00
## Simple WebPack boiler plate for SilverStripe
2018-02-05 12:08:06 +01:00
2018-06-23 12:27:06 +02:00
Checkout files at /app/ folder for details
2019-06-08 17:54:43 +02:00
Take a look to https://github.com/a2nt/webpack-bootstrap-ui-kit.git for UI Kit details
2019-06-08 18:07:31 +02:00
# UI Demo
2019-10-20 03:00:05 +02:00
Use UI Repository at https://github.com/a2nt/webpack-bootstrap-ui-kit.git to build static HTML files
Demo: https://rawcdn.githack.com/a2nt/webpack-bootstrap-ui-kit/master/dist/index.html
2019-06-08 18:07:31 +02:00
2019-06-08 17:54:43 +02:00
### Requirements:
+ composer
+ node
+ yarn
### Installation:
```
git clone https://github.com/a2nt/silverstripe-webpack.git
cd silverstripe-webpack
composer install
npm install
2020-02-12 21:31:59 +01:00
npm install --only=dev
2019-09-08 02:08:53 +02:00
cp ./env-dist ./.env
2019-06-08 17:54:43 +02:00
```
2019-09-08 02:08:53 +02:00
Those steps depends on your environment:
1) Edit .env file to define database access credentials and CMS default admin
2) sudo chown www-data:www-data -R public/assets & & mkdir silverstripe-cache & & chown www-data:www-data -R silverstripe-cache (www-data is commonly used UNIX user name, but it may depend on your environment)
3) Open your-dev-url.pro/dev/build?flush to build database
2019-06-08 17:54:43 +02:00
+ edit .env, robots.txt, humans.txt, cache.appcache, manifest.json and package.json to setup your own project
2019-09-08 02:08:53 +02:00
+ copy favicon.ico after `yarn build` to ./public folder
2019-06-08 17:54:43 +02:00
2019-10-20 03:36:23 +02:00
### Building your custom UI
Edit following files:
+ app/client/src/js/_layout.js
+ app/client/src/js/types/*Your_Custom_ClassName*.js
+ app/client/src/scss/_layout.scss
+ app/client/src/scss/types/*Your_Custom_ClassName*.scss
To compile use: yarn build
To start dev-server use: yarn start
2019-06-08 17:54:43 +02:00
## Installing composer at some cpanel hostings
```
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
php -d memory_limit=-1 composer.phar update --ignore-platform-reqs
```
2018-02-05 12:08:06 +01:00
2018-02-05 12:52:38 +01:00
### Features:
2018-06-23 12:27:06 +02:00
+ You can use /app/_config/webpack.yml to setup webpack server parameters which will be used by webpack server and by SilverStripe to serve static content
2018-02-05 12:52:38 +01:00
+ You can use WebpackJS('file-name') and WebpackCSS('file-name') functions at templates to require JS and CSS. It will be served using static files or by using Webpack if the website in development mode and Webpack server is running
2018-06-23 12:27:06 +02:00
+ WebpackTemplateProvider::WebpackJS('file-name') and WebpackTemplateProvider::WebpackCSS('file-name') can be used at php area
+ All images will be optimised at /app/client/src/img and will be written to /app/client/dist/img (by default)
+ Favicons will be generated at /app/client/dist/icons using /app/src/favicon.png
+ Folder /app/client/src/js/types is used to create page specific JS (just create JS file there and it will be compiled)
+ Folder /app/clent/src/scss/types is used to create page specific CSS (just create SCSS file there and it will be compiled)
2018-02-22 14:39:58 +01:00
+ Automatic linting (JS+SCSS)
2018-02-05 12:52:38 +01:00
+ Bootstrap 4 included by default
2018-02-22 14:39:58 +01:00
+ Font-Awesome included by default
+ Deferred requirements loading
+ Requirements auto-loading
2018-07-06 02:50:32 +02:00
+ Includes basic silverstripe modules
+ Some necessary extensions for example editing silverstripe elements as bootstrap grid columns
2019-09-08 02:08:53 +02:00
+ Built-in themes support
... More features available, but I don't have much time to describe all of them ...
2018-02-05 12:52:38 +01:00
### Folder structure:
2018-02-22 14:39:58 +01:00
2018-06-23 12:27:06 +02:00
+ /app/_config/webpack.yml (Webpack configurtion)
+ /app/src/WebpackTemplateProvider.php (WebpackJS and WebpackCSS functionality)
+ /app/src/DeferedRequirements.php (Deferred Requirements + Requirements auto-loader)
+ /app/templates/Page.ss (An example of Page.ss)
+ /app/src (Your backend sources)
+ /app/client/src (Your frontend sources)
+ /app/client/dist (Your compiled-production assets)
2018-02-05 12:52:38 +01:00
2018-06-23 12:27:06 +02:00
+ /app/client/src/js (Your JS-scripts)
+ /app/client/src/js/app.js (main application file to include website-wide components)
+ /app/client/src/js/main.js (Your custom site-wide functionality)
+ /app/client/src/js/_pageType_and_component_template.js (A template which can be used to create new modules)
+ /app/client/src/types/*.js (Extra page-specific modules to be auto-compiled. My suggestion is to use *ClassName* .js and then require it at SilverStripe custom controller area)
2018-02-05 12:52:38 +01:00
2018-06-23 12:27:06 +02:00
+ /app/clent/src/scss (Your styling to be compiled)
+ /app/clent/src/scss/app.scss (main application file to include site-wide components)
2019-06-08 17:54:43 +02:00
+ /app/clent/src/scss/_variables.sccs (your custom and bootstrap variables)
2018-06-23 12:27:06 +02:00
+ /app/clent/src/scss/_layout.sccs (Your site-wide styling)
2018-02-05 12:52:38 +01:00
2019-10-20 03:00:05 +02:00
+ /app/client/dist (Compiled frontend files js, css, images etc)
2018-02-05 12:52:38 +01:00
### Commands:
2018-02-05 12:13:45 +01:00
+ yarn - to update packages
2018-02-22 14:39:58 +01:00
+ yarn start - to start webpack development webserver
+ yarn build - to build production assets
+ yarn lint:check - to check SCSS and JS linting
+ yarn lint:fix - to fix SCSS and JS linting automatically
2018-02-07 05:58:49 +01:00
### TODO:
+ Planktos torrent auto-generation for static files (https://github.com/xuset/planktos#----------planktos)
2018-06-23 12:27:06 +02:00
+ ServiceWorker auto-generation