A boilerplate for building pattern libraries on top of Patternlab. It uses Patternlab Edition Node - Webpack as foundation and is preconfigured for Nothing's internal tools and frameworks.
- Download/clone
npm installnpm run patternlab:serve
See upstream repository for further information.
To list all available commands type:
npm run patternlab:help
Generate documentation front-end:
npm run buildGenerate production bundles:
npm run packageWill store CSS, JavaScript, images and other assets minimized and production ready in the
dist folder. Output location can be placed. See configuration manual.
To watch for changes, re-generate the front-end, and server it via a BrowserSync server, type:
npm run serve
Webpack dev server should open http://localhost:3000 in your browser, both host and port are configurable in the patternlab-config.json file.
Unlike the other editions, there were a few options added just for this edition that allow for easier upgrading, and better flexibility.
In this edition, it's important to make the configuration for webpack something very easy to update, and very easy to modify. The current setting for webpack custom configuration and merge are described here.
You can change how it merges by changing this object in patternlab-config.json:
"webpackMerge": {
"entry": "replace"
},By default merge does a append if that option works for you only set which webpack configuration you want to change. The merge setting is: smartStrategy which is documented over on this page.
You can set several options to configure your dev server. You can also in the CLI pass any option on demand.
"webpackDevServer": {
"url": "http://localhost",
"port": 3000,
"watchContentBase": true,
"watchOptions": {
"aggregateTimeout": 500,
"ignored": [],
"info-verbosity": "verbose"
}
},You can safely modify the following settings in the the main webpack.babel.config that can change how the bundles get optimized.
Note: in webpack 4, these settings are automatically triggered when mode=production when running the dev server this is not used.
All uglify settings are in the patternlab-config.json:
"uglify": {
"sourceMap": false,
"parallel": true,
"uglifyOptions": {
"mangle": false
}
},In some cases you may want to add a namespace to your JS or CSS/SCSS files. You can now add a global NAMESPACE which can be read by any JS module. The sample of .scss includes how to use it in a .SCSS file.
This can be changed in thepatternlab-config.json under app:
"app": {
"namespace": ""
}- babel-cli - MIT
- babel-core - MIT
- babel-polyfill -MIT
- babel-loader -MIT
- babel-preset-env - MIT
- babel-register -MIT
- copy-webpack-plugin - MIT
- event-hooks-webpack-plugin - MIT
- globby - MIT
- patternlab-node - MIT
- styleguidekit-assets-default - MIT
- styleguidekit-mustache-default - MIT
- uglifyjs-webpack-plugin - MIT
- webpack - MIT
- webpack-config-utils - MIT
- webpack-dev-server - MIT
- webpack-merge - MIT
| Josh Schneider | GitHub | |
| Paul Wright | Website |