github MoOx/phenomic 0.17.0

latest releases: v1.0.0, v1.0.0-beta.11, v1.0.0-beta.10...
7 years ago

πŸŽ‰ 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
    (in package.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

phenomic-0 17 0

❓ 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 use require(β€œ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

    (08bd04f - @MoOx)

  • 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 your package.json phenomic section.
    If you encounter weird issues, try disabling babel-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
      ES2015 import: add new sections in your babel.env configuration.
      webpack 2 understand natively importstatements 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 a makeConfig 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)

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 from eslint-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

    (#698 - @MoOx)

  • Changed: we replaced babel-preset-react-hmre by react-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: a default highlight.js theme has been
    (#702 - @MoOx)

  • Added: some default global CSS custom properties (variables) have been added
    into the webpack configuration file
    (#617 - @MoOx)

Don't miss a new phenomic release

NewReleases is sending notifications on new releases.