sd-builder v4.0.1
sd-builder
Opinionated builder for react web projects.
Usage
sd-builder devsets up dev environment with auto-recompilingsd-builder buildbuilds the projectsd-builder configwrites the app configuration toapp-config.js
Main conventions
Html
- The builder expects there to be an
app/main.htmlfile, which is compiled intobuild/index.html. For now the compilation consists in a simple a copy/paste.
JS
The builder expects there to be an
app/main.jsxfile, which is used aswebpack's entry point. The generated bundle is written tobuild/_assets/js/app.js.Files are compiled by babel. It's up to the user to specify which plugins to use by installing and listing them in a
.babelrcconfig file.npm modules listed in
deps.json'sjsarray are separated from the main bundle and compiled intobuild/_assets/js/vendor.js.During
webpack's compilationNODE_PATHincludes theappdirectory.It's possible to
require/import.js,.jsxand.jsonfiles.Source maps are always generated.
Assets
- The content of the folder
app/assetswill be recursively copied intobuild/_assets.
CSS
- Files listed in
deps.json'scssarray are bundled (concat) intobuild/_assets/css/vendor.css.
Fonts
- Files listed in
deps.json'sfontsarray are copied (concat) intobuild/_assets/fonts.
Version
- the build generates a
VERSION.txtfile (written tobuild/VERSION.txt) with the following format:- if building in a git repository,
[package.json version] - [git commit sha] - otherwise,
[package.json version]
- if building in a git repository,
Changelog
- when a
CHANGELOG.mdfile is present, it's copied tobuild/CHANGELOG.md
Configuration
Running sd-builder config a build/app-config.js file is generated, exporting
one global variable, window.APP_CONFIG, which is a map of key-value pairs
gathered from:
- the
.envfile whenNODE_ENV=development - environment variables prefixed by
__APP_CONFIG__file whenNODE_ENV=production
You should add app-config.js script in your main.html file.
<script src="app-config.js"></script>Build customization via build-time environment variables
At build time, the following environment variables can be used to customize the build:
NODE_ENV: defaults todevelopmentEXEC_ENV: defaults tobrowser
The variables are:
- passed to gulp-preprocess when
building
main.html - passed to webpack
DefinePluginwhen building js files
Example main.html build customization:
<!-- @if EXEC_ENV=='cordova' -->
<!--
This ends up in the compiled index.html only when, in the build
environment, process.env.EXEC_ENV === "cordova"
-->
<script src="cordova.js"></script>
<!-- @endif -->Example js build customization:
console.log(process.env.EXEC_ENV);
/*
* When in the build environment process.env.EXEC_ENV === "cordova", the above
* line of code will be compiled into the line `console.log("cordova");`
*/When NODE_ENV=production JS and CSS files are minified.
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago