π This release make us closer to 1.0.
Noticeable changes are:
- π New experimental
"cache"
option to boost performance.
Development startup time drastically reduced
(from 15s to 2s on average for the default theme).
To try this feature, just add"cache": true
in your phenomic config
(inpackage.json
). - π Added support for
webpack@2
(we still support webpack 1).
See details below for more explanations &
webpack 2 migration notes.
New base theme already have commented instructions for future migrations π. - π₯
react-hot-loader@3
is used (still in beta, but already battle tested).
You can now enjoy hot loading on React stateless components!
By the way, we changed the default theme to use stateless components. - β¨ New projects are setup with a new, more clear file tree,
see below for details. - π Documentation has been improved a little
("Getting Started" now have more answers to commons questions like
"how to add Sass?"). - π We improved CLI output to be more concise & make errors easier to spot
β To know what is coming next, check out our public ROADMAP.
And do not hesitate to give feedbacks, it's important for the community β€οΈ.
What's exactly in 0.17.0?
Breaking changes
-
Removed:
phenomicLoaderPlugins
&phenomicLoaderPresets
from "phenomic"
To avoid shipping unnecessary code into the client bundle (regression
from 0.16.0), we removed plugins & presets from βphenomicβ import.
Please directly userequire(βphenomic/lib/loader-*
, by replacing
camelCase by dashedCase.phenomicLoaderPlugins.initBodyPropertyFromContent
->
require("phenomic/lib/loader-plugin-init-body-property-from-content").default
phenomicLoaderPlugins.initHeadPropertyFromConfig
->
require("phenomic/lib/loader-plugin-init-head-property-from-config").default
phenomicLoaderPlugins.initHeadPropertyFromContent
->
require("phenomic/lib/loader-plugin-init-head-property-from-content").default
phenomicLoaderPlugins.initRawPropertyFromContent
->
require("phenomic/lib/loader-plugin-init-raw-property-from-content").default
phenomicLoaderPlugins.initRawBodyPropertyFromContent
->
require("phenomic/lib/loader-plugin-init-rawBody-property-from-content").default
phenomicLoaderPlugins.markdownInitHeadDescriptionPropertyFromContent
->
require("phenomic/lib/loader-plugin-markdown-init-head.description-property-from-content").default
phenomicLoaderPlugins.markdownTransformBodyPropertyToHtml
->
require("phenomic/lib/loader-plugin-markdown-transform-body-property-to-html").default
phenomicLoaderPresets.default
->require("phenomic/lib/loader-preset-default").default
phenomicLoaderPresets.markdown
->require("phenomic/lib/loader-preset-markdown").default
-
Removed:
PageContainer
does not wrap its child into a<div>
(#691 - @MoOx,
based on @DavidWells idea) -
Removed: Service Worker is disabled during development (like AppCache)
(#689 /
755a3c2 - @MoOx) -
Changed:
BodyContainer
now avoid wrapping content in a<div>
if a
single string is passed as a child.
(@MoOx) -
Changed: RSS feed must be generated using the new
PhenomicLoaderFeedWebpackPlugin
.
The loader does not handle RSS feed generation anymore.
See this commit for a feed migration example
(@MoOx)
Minor changes
- Changed:
phenomic/lib/PageContainer
has been relocated.
To prevent issue in the future, is now accessible by doing
import { PageContainer } from "phenomic"
.
If you want to import it with a different name, you can do it this way:
js import { PageContainer as PhenomicPageContainer } from "phenomic"
(#433 - @MoOx) - Changed: error messages for bad configuration are now more readable
(#672 - @MoOx) - Changed: improved CLI output for phenomic commands/dev server
( f382b20
/ 5255b03 - Added: π Cache option to improve performance by more than 300%
You can enable this experimental feature by adding
"cache": true
in yourpackage.json
phenomic
section.
If you encounter weird issues, try disablingbabel-loader
cacheDirectory
(and tell us about it!) - Added: Error message in the browser if app start fail at start during
development
(#679 - @MoOx) - Added: proper message if Node and npm version are not satisfying requirements
(#709 - @thangngoc89) - Added: [
remark-toc
][https://www.npmjs.com/package/remark-toc]
in default markdown transformation.
You can now use## Table of Contents
(or## toc
) to get a
generated table of contents.
(569d512 - @MoOx) - Added: cache
enhanceCollection
usage to boost performance for large
websites
(#762 - @thangngoc89) - Added:
webpack@2
support.
To upgrade, you work will basically be upgrading your webpack configuration
after upgrading webpack version to^2.1.0-beta.23
(and some plugins, see below).
See webpack 2 migration notes.
Basically you will have to:- Change for webpack
ExtractTextPlugin
(more explicit API) - Upgrade of the babel configuration since webpack natively understand
ES2015import
: add new sections in yourbabel.env
configuration.
webpack 2 understand nativelyimport
statements so itβs
unnecessary to
transform those (and it will allow webpack 2 enable tree shaking):
webpack-develompment
&webpack-production
. - webpack
DedupePlugin
must be disabled for now as it's not fully
compatible yet - Your
webpack.config
file can directly export a function
(instead of exporting amakeConfig
function)
as it's now natively supported by webpack 2. - All loaders options must be passed by loader
query
options or by using
webpack or via webpack.LoaderPlugin
(#421 - @MoOx)
- Change for webpack
Fixes
- Fixed: front matter
route
can use/
to define the homepage
(#721 - @thangngoc89)
What's new in 0.17.0 base theme?
-
Removed:
eslint
"fix" option has been removed fromeslint-loader
usage according to the feedback of the community.
(#752 - @ben-eb) -
Changed: new default tree structure.
We encourage you to update to a similar structure if you were using the previous one.
Main changes:web_modules/layouts
=>src/layouts
web_modules/{Components}
=>src/components/*
web_modules/app/*
=>src/*
web_modules/LayoutContainer
=>src/AppContainer.js
-
Changed: we replaced
babel-preset-react-hmre
byreact-hot-loader@3
You can now enjoy hot loading on React stateless components!
See how to do the same for you current project in this commit.
(#737 - @MoOx) -
Changed: all components without state are now real
stateless components
(#747 - @thangngoc89) -
Changed:
babel-preset-latest
is now used in place of
babel-preset-es2015
.
This preset cover all stable ES specifications that will land in future
versions (currently it covers some ES2017 features).
(#661 - @MoOx) -
Changed: update stylelint to ^7.2.0 & stylelint-config-standard to ^13.0.0
(7c3c843 - @ben-eb) -
Added: some default global CSS custom properties (variables) have been added
into the webpack configuration file
(#617 - @MoOx)