Tree shaking with webpack settings

Webpack is a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packaging just about any resource or asset. Its such a great tool for web development. One of the great feature it offers is the ability to tree shaking the javascript and CSS bundles with the right plugins.

For js tree shaking. I have used UglifyJsPlugin. Below is how I got the plugin works in my webpack.config.js file.

For css tree shaking. I have used PurifyCSSPlugin. Below is how I got the plugin works in my webpack.config.js file.

In order for PurifyCSSPlugin, make sure the above code goes after ExtractTextPlugin. See below

Another nice feature that I love to use in my webpack config is the ability to control how chunks should be sorted before they are included to the html via chunksSortMode option of html-webpack-plugin

To control the order of the chunks, I name them with the number at the front of that name. For example

Any feedback, please leave your comments and I’ll get back to you ASAP.

Portfolio Press gallery introduction text

Portfolio Press has always been one of my favorite free themes in term of showcasing any work portfolio or just normal gallery of pictures.

However, in some cases we would love to have a little introduction paragraph or some kind of summary of what this gallery page we am showing is about.

It’s very straight forward to show the gallery but whatever content we composed through WordPress admin doesn’t really get used at all.

I have had a look around on google and even portfolio press forum, and I found someone else also have the same issue reported. However, it wasn’t really the solution I was looking for.

Therefore I come up with my solution.

First of all, I didn’t want to touch the original portfolio theme files for numerous reasons:

  1. Our changes in those original files will get swiped out when the theme gets updated.
  2. We might break some functions because we am not fully aware of everything inside the theme.

As reasons above, we’re better off to create a child theme which inherits from the portfolio press theme and make changes in the child theme files instead. Click here to find out why and how to create a child theme from Portfolio Press.

Once we have child theme ready, create a sub folder called ‘templates’ as image below

Portfolio Press Child Theme Folder Structure
Portfolio Press Child Theme Folder Structure

Next, create a copy of file called ‘full-width-image-gallery-formats.php‘ from the original Portfolio Press theme folder and move it into the themes folder created as above.

Then we need to add php code as below

right after

and before

That’s it. After this change, we now can reused the content of the page to show some introduction text or whatever content we want before the images gallery.

Let me know what your thoughts are on this. Hope this help someone 🙂


Binding for Converter Parameter

I have come across the situation where I need to do some Binding for ConverterParameter. Something like

I have done lots of research, and I found out that its impossible to do binding for ConverterParameter.
So I came up with the Solution. I created the Converter but inherited from FrameworkElement

public class ShowDeleteServiceConverter : FrameworkElement, IValueConverter

In the converter class, I created a dependency property

Now, I can do the Binding as usual


It might not be the best solution, but it works for me so far. If you have any idea, feel free to drop me comments.

Online Terminals

Looking for a online terminals to learn new programming languages?

Online Terminals
Online Terminals
There are times when we just wanna test or learn something quickly without going through all the hassles to set up the environments; we can definitely use Online terminals.

Online terminals is extremely useful. It provides lots of different terminals.

Whether you are professional developer or beginner just trying to learn how to code, I recommend to give this one a go. You will see how extremely convenient and useful it is.