@messageflow/build
Quick build with Gulp
Better build process with Gulp for general Node.js projects written in TypeScript.
Table of contents
Pre-requisites
Setup
Install
# Install via NPM as one of the `devDependencies`
$ npm install --save-dev @messageflow/build
Usage
gulpfile.js
const gulp = require('gulp');
const { builder } = require('@messageflow/build');
const build = builder();
/** `cleanGlobs` can be helpful when the destination directory is not the `dist` directory. */
// const build = builder({
// dist: '.',
// cleanGlobs: [
// './*.js',
// './*.d.ts',
// '!./gulpfile.js',
// '!./json.d.ts',
// ],
// });
gulp.task('clean', build.clean);
gulp.task('lint', build.lint);
gulp.task('copy', build.copy);
gulp.task('ts', build.ts);
gulp.task('watch', build.watch);
gulp.task('default', build.default);
API Reference
DEFAULT_IGNORE_GLOBS
[
'!**/demo*/**/*.ts*',
'!**/test*/**/*.ts*',
]
DEFAULT_BABEL_CONFIG
{
presets: [
['@babel/preset-env', {
targets: { node: 'current' },
spec: true,
modules: false,
useBuiltIns: 'usage',
shippedProposals: true,
}],
['minify', {
replace: false,
mangle: { keepFnName: true },
removeConsole: false,
removeDebugger: true,
}],
],
}
BuilderParams
-
src
<?string> Optional source directory. Defaults tosrc
. -
dist
<?string> Optional destination directory. Defaults todist
. -
cleanGlobs
<?string|string[]> Optional glob patterns to clean files/ directories up before every build process initiates. This is required only when the destination directory is not thedist
directory. Defaults to the value ofdist
if unspecified. -
copyGlobs
<?string|string[]> Optional glob patterns to copy files/ directories to destination build directory. Defaults to['<SRC>/**/*.*', '!<SRC>/**/*.ts*', '<SRC>/**/*.d.ts']
. -
ignoreGlobs
<?string|string[]> Optional glob patterns to ignore files/ directories. Defaults to DEFAULT_IGNORE_GLOBS. This only works whenisProd
is set to true. -
isProd
<?boolean> Optional production flage. Set totrue
if the build process is meant for production. Defaults toprocess.env.NODE_ENV === 'production'
. -
rootPath
<?string> Optional path to current working directory. Defaults to.
. -
babelConfig
<?Object> Optional configuration for Babel. This is only needed whenisProd
is set to true. Defaults to DEFAULT_BABEL_CONFIG. -
tsConfig
<?string> Optional path totsconfig.json
. Defaults to./tsconfig.json
. -
tslintConfig
<?string> Optional path totslint.json
. Defaults to./tslint.json
. This defaults to./tslint.prod.json
whenisProd
is set to true.
builder([options])
-
options
<?BuilderParams> Optional configuration for the build process. -
returns: <Object> An object of build tasks to be assigned as Gulp task, e.g.
gulp.task('<TASK_NAME>', <GULP_TASK_FUNCTION>)
. It comprises of a list of tasks fo a common build process with Gulp for most of the projects:-
clean
- Always remove old files from previous build. -
lint
- Always lint all.ts
files with giventslint.json
. -
ts
- Compile all.ts
files with giventsconfig.json
. -
copy
- Copy all asset files such asimages
,json
,md
, etc. -
watch
- Run the build process by watching for flle changes. -
default
- Default build process that comprises all the above.
-
License
MIT License © Rong Sen Ng