sd-builder v4.0.1
sd-builder
Opinionated builder for react web projects.
Usage
sd-builder dev
sets up dev environment with auto-recompilingsd-builder build
builds the projectsd-builder config
writes the app configuration toapp-config.js
Main conventions
Html
- The builder expects there to be an
app/main.html
file, 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.jsx
file, 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
.babelrc
config file.npm modules listed in
deps.json
'sjs
array are separated from the main bundle and compiled intobuild/_assets/js/vendor.js
.During
webpack
's compilationNODE_PATH
includes theapp
directory.It's possible to
require
/import
.js
,.jsx
and.json
files.Source maps are always generated.
Assets
- The content of the folder
app/assets
will be recursively copied intobuild/_assets
.
CSS
- Files listed in
deps.json
'scss
array are bundled (concat) intobuild/_assets/css/vendor.css
.
Fonts
- Files listed in
deps.json
'sfonts
array are copied (concat) intobuild/_assets/fonts
.
Version
- the build generates a
VERSION.txt
file (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.md
file 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
.env
file 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 todevelopment
EXEC_ENV
: defaults tobrowser
The variables are:
- passed to gulp-preprocess when
building
main.html
- passed to webpack
DefinePlugin
when 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.
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
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