This repository has been archived by the owner on Sep 7, 2020. It is now read-only.
0.12.0
tl;dr;
Don't be afraid by the length of this release notes. It's for the better.
Most noticeable change occurs in the scripts
folder.
It might be a good idea is to take a look to the new folder of the default
boilerplate:
- There is now just 2 files:
phenomic.browser.js
(client runtime) and
phenomic.node.js
(for static build). - webpack configs can be moved at the root of you project and merged into a
single onewebpack.config.babel.js
. Phenomic specific configuration can be
removed (eg:entry
) and is now injected via Phenomic itself.
→ Example of update from phenomic 0.10 to 0.12
Details
- Fixed: Meta description should not contains new lines
(#414) - Removed: layouts now must be passed via props to
PageContainer
component.
This change has been introduced in0.10.0
but old way (via a
parameter in the formerscripts/build.js
andscripts/index-client.js
)
was still accepted.
If you do not have a warning in0.10.0
or newer, you won‘t be affected by
this change. - Removed: dev server does not pre-render anymore. During development, only
client side version is used. This is to avoid huge performance issue
introduced in[email protected]
. We might re-enable pre-rendering in a near
future.
See change below for more information
(#301) - Changed: dates of the front matter are now always strings,
for now,
until we serve pages as JavaScript (and not JSON).
By default the front-matter parsing method recognize dates as JavaScript dates
but when converted to JSON we end up with string.
The problem is that during the static build, we use date in memory
(real dates) and on the client, strings are used.
So, to ensure consistency, between static build and client build we are now
forcing string
(#397) - Changed: major refactoring to fix huge performance issue introduced in
[email protected]
(#301).
At the same time we introduced some internal changes, we have reduced the
required boilerplate and make some changes in order to simplify everything:- Removed:
scripts/config.js
. Configuration is now builded from a
"classic" webpack config. See change related to the webpack config below. - Removed:
scripts/webpack.config.client.js
content should be merged
with yourwebpack.config.babel.js
(please read the change below). - Changed:
scripts/webpack.config.babel.js
is now expected by default
to be found at the root of your project, like a classic webpack config.
Webpack configuration parts specific to Phenomic are now injected by
Phenomic itself.
Note that your config mustexport
amakeConfig
function.
This is required so Phenomic can easily create dynamic configurations.
This also prepare the upgrade to[email protected]
(which is in beta for a while, but starts to be
mature) that natively
allow webpack config to be exported as a function.
The path can be specified via an option (via CLI or config). - Removed:
scripts/build.js
in favor ofscripts/phenomic.node.js
.
The path can be specified via an option (via CLI or config).
Note that this file will be builded as
scripts/phenomic.node.bundle.js
for performance.
(New boilerplate (git)ignores*.bundle.js
files). - Changed:
scripts/index-client.js
is now
scripts/phenomic.browser.js
.
The path can be specified via an option (via CLI or config).
- Removed:
- Changed:
react-helmet@^3.0.0
is now required.
This brings us the ability to use all latestreact-helmet
's methods,
including:base
,link
,meta
,script
andhtmlAttributes
.
Check out react-helmet‘s documentation
for more information.
Except new features, no real breaking changes (except thatreact-helmet
don‘t includes some (may be) required polyfills by default).
You can upgrade by doing$ npm install react-helmet@^3.0.0 --save
(#348) - Changed:
PHENOMIC_PATHNAME
is nowPHENOMIC_USER_PATHNAME
.
But no need to update that in your configuration as it's injected
automatically. See changes in the boilerplate.
(#412) - Changed:
devPort
option must be a integer. - Changed:
content-loader
options that are defined in thephenomic
section of the webpack configuration should be defined under
contentLoader
, notloader
(even if this one is still supported for
now). - Changed:
content-loader
options are now taken fromquery
AND
phenomic.contentLoader
section (both are merged). - Added: unknown CLI args now throw errors
(#363) - Added: new injected constants in
process.env
:process.env.PHENOMIC_USER_URL
: your website homepage url
(package.json/homepage
field)process.env.PHENOMIC_USER_PATHNAME
: the base path of your website/appprocess.env.PHENOMIC_NAME
: Phenomic pretty nameprocess.env.PHENOMIC_VERSION
: Phenomic versionprocess.env.PHENOMIC_HOMEPAGE
: Phenomic homepage urlprocess.env.PHENOMIC_REPOSITORY
: Phenomic repository url
(#412 &
#361)
- Added: Warning for Service Worker when not using HTTPS
(#406)
Boilerplate
- Fixed: Meta og:url must be a full url
(#432 - Removed:
NODE_ENV
andPHENOMIC_PATHNAME
have been removed from the
boilerplate. These are now automatically defined.
(#412) - Changed: big changes in the
scripts
folder. Read note above. - Changed: lint command now ignore gitignored files in to be sure you don‘t
lint some builded files.
Note the--ignore-path .gitignore
part:
"lint:js": "eslint --ignore-path .gitignore --fix ."
- Changed:
content-loader
options are defined in the
phenomic.contentLoader
section of the webpack configuration so you can use
functions (eg: custom renderer). - Added: Polyfill CDN
to make sure your website work with old browsers as well.
(#348) - Added: (boilerplate) meta generator tag
(#361) - Added: Improve React's performance in production build by using
babel-preset-react-optimize
(#377) - Added: Use dynamic values for GitHub and Twitter.
(#419)