# apc-build

> Gulp build scripts for front end APC projects

Latest version **0.4.5** (published 2021-04-15) · MIT license · 0 weekly downloads

## Install

```sh
npm install apc-build
pnpm add apc-build
yarn add apc-build
bun add apc-build
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.4.5 |
| Published | 2021-04-15 |
| First published | 2017-11-22 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 26 |
| Unpacked size | 45.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Ian Egner |
| Maintainers | webdevian, computa_mike |
| Keywords | gulp, build, js, frontend |

## Links

- npm: https://www.npmjs.com/package/apc-build
- Repository: https://github.com/APCOvernight/apc-build
- Homepage: https://github.com/APCOvernight/apc-build#readme
- Issues: https://github.com/APCOvernight/apc-build/issues
- npm.io page: https://npm.io/package/apc-build

## Dependencies (26)

- [nyc](https://npm.io/package/nyc.md) ^15.1.0
- [chai](https://npm.io/package/chai.md) 4.2.0
- [mocha](https://npm.io/package/mocha.md) ^8.3.2
- [sinon](https://npm.io/package/sinon.md) 7.2.4
- [gulp-if](https://npm.io/package/gulp-if.md) 2.0.2
- [coveralls](https://npm.io/package/coveralls.md) 3.0.2
- [fancy-log](https://npm.io/package/fancy-log.md) ^1.3.2
- [gulp-size](https://npm.io/package/gulp-size.md) 3.0.0
- [browserify](https://npm.io/package/browserify.md) 16.2.0
- [gulp-babel](https://npm.io/package/gulp-babel.md) 8.0.0
- [sinon-chai](https://npm.io/package/sinon-chai.md) 3.3.0
- [@babel/core](https://npm.io/package/@babel/core.md) ^7.13.15
- [gulp-eslint](https://npm.io/package/gulp-eslint.md) 4.0.2
- [gulp-uglify](https://npm.io/package/gulp-uglify.md) 3.0.0
- [css-mqpacker](https://npm.io/package/css-mqpacker.md) 6.0.2
- [gulp-postcss](https://npm.io/package/gulp-postcss.md) 7.0.1
- [plugin-error](https://npm.io/package/plugin-error.md) ^1.0.1
- [vinyl-buffer](https://npm.io/package/vinyl-buffer.md) 1.0.1
- [gulp-imagemin](https://npm.io/package/gulp-imagemin.md) 5.0.3
- [gulp-dart-sass](https://npm.io/package/gulp-dart-sass.md) ^1.0.2
- [gulp-pug-linter](https://npm.io/package/gulp-pug-linter.md) 1.0.0
- [gulp-sourcemaps](https://npm.io/package/gulp-sourcemaps.md) 2.6.4
- [@babel/preset-env](https://npm.io/package/@babel/preset-env.md) ^7.13.15
- [gulp-autoprefixer](https://npm.io/package/gulp-autoprefixer.md) 5.0.0
- [@babel/preset-react](https://npm.io/package/@babel/preset-react.md) ^7.13.13
- [vinyl-source-stream](https://npm.io/package/vinyl-source-stream.md) 2.0.0

## Recent versions

- 0.4.5 (latest) — 2021-04-15
- 0.4.4 — 2021-04-14
- 1.0.0 — 2018-11-05
- 0.4.2 — 2018-02-07
- 0.4.1 — 2018-01-29
- 0.4.0 — 2018-01-03
- 0.3.1 — 2017-12-19
- 0.3.0 — 2017-11-28
- 0.2.1 — 2017-11-27
- 0.2.0 — 2017-11-24
- 0.1.2 — 2017-11-24
- 0.1.1 — 2017-11-23
- 0.1.0 — 2017-11-22

## README

# APC Build Tools

[![Build Status](https://travis-ci.org/APCOvernight/apc-build.svg?branch=master)](https://travis-ci.org/APCOvernight/apc-build) [![Coverage Status](https://coveralls.io/repos/github/APCOvernight/apc-build/badge.svg?branch=master)](https://coveralls.io/github/APCOvernight/apc-build?branch=master) [![Greenkeeper badge](https://badges.greenkeeper.io/APCOvernight/apc-build.svg)](https://greenkeeper.io/) [![Maintainability](https://api.codeclimate.com/v1/badges/af5c99c485663e078c61/maintainability)](https://codeclimate.com/github/APCOvernight/apc-build/maintainability)

Gulp build scripts for front end APC projects

- [APC Build Tools](#apc-build-tools)
  * [Task register helpers](#task-register-helpers)
  * [Gulp tasks](#gulp-tasks)
  * [Utilities](#utilities)

## Task register helpers

<a name="register"></a>

## register(gulp, config) ⇒ <code>Object</code>
Register gulp tasks based on a passed config object

**Returns**: <code>Object</code> - registerWatchers function and array of registered task names  

| Param | Type | Default | Description |
| --- | --- | --- | --- |
| gulp | <code>Object</code> |  | Gulp instance |
| config | <code>Object</code> |  | Config Object |
| config.scssSrc | <code>String</code> |  | Path of Sass files to lint and/or build |
| config.jsSrc | <code>Array</code> \| <code>String</code> |  | Path[s] of Js files to lint |
| config.jsEntry | <code>Array</code> \| <code>String</code> |  | Path[s] of Js files to build |
| config.pugSrc | <code>Array</code> \| <code>String</code> |  | Path[s] of pug files to lint |
| [config.scssIncludePaths] | <code>Array</code> | <code>[]</code> | SCSS include paths (for frameworks etc) |
| config.jsDest | <code>String</code> |  | Destination for Js built files |
| config.jsDestFilename | <code>String</code> |  | Filename for built Js file |
| config.cssDest | <code>String</code> |  | Destination for built CSS |
| config.jsSrc | <code>Array</code> \| <code>String</code> |  | Path[s] of Js files to lint |
| config.imgSrc | <code>Array</code> \| <code>String</code> |  | Path[s] for image files to be built |
| config.imgDest | <code>String</code> |  | Destination for built image files |
| [config.showFileSizes] | <code>Boolean</code> | <code>true</code> | Show file sizes in console output? |
| config.browserifyIgnore | <code>Array</code> |  | Browserify paths to ignore |

**Example**  
```js
const gulp = require('gulp')

const register = require('apc-build').register(gulp, {
  scssSrc: 'src/**\/*.scss',
  scssIncludePaths: [],
  cssDest: 'output/css',
  showFileSizes: true
})

console.log(register)
// Returns
// {
//   tasks: [ 'lint-sass', 'build-sass' ],
//   registerWatchers: [Function: registerWatchers]
// }
```
<a name="register.registerWatchers"></a>

### register.registerWatchers(gulp)
Register watchers corresponding to the tasks already set up

**Kind**: method of [<code>register</code>] return(#register)  

| Param | Type | Description |
| --- | --- | --- |
| gulp | <code>Object</code> | Gulp instance |

**Example**  
```js
const gulp = require('gulp')

const register = require('apc-build').register(gulp, config)

// Watchers corresponding to config values
// will be registered within watch task
gulp.task('watch', () => {
  register.registerWatchers(gulp)
})
```

## Gulp tasks

<dl>
<dt><a href="#build-img">build-img(gulp, path, dest)</a> ⇒ <code>function</code></dt>
<dd><p>Copy and compress images with imagemin</p>
</dd>
<dt><a href="#build-js">build-js(gulp, entries, dest, [destFilename], [showFileSizes], [browserifyIgnore])</a> ⇒ <code>function</code></dt>
<dd><p>Bundle and browserify front end JS files</p>
</dd>
<dt><a href="#build-sass">build-sass(gulp, path, dest, scssIncludePaths, showFileSizes)</a> ⇒ <code>function</code></dt>
<dd><p>Compile sass files</p>
</dd>
<dt><a href="#lint-js">lint-js(gulp, path)</a> ⇒ <code>function</code></dt>
<dd><p>Lint js files using eslint</p>
</dd>
<dt><a href="#lint-pug">lint-pug(gulp, path)</a> ⇒ <code>function</code></dt>
<dd><p>Lint pug files using pug linter</p>
</dd>
<dt><a href="#lint-sass">lint-sass(gulp, path)</a> ⇒ <code>function</code></dt>
<dd><p>Lint sass files using sass-lint</p>
</dd>
</dl>

<a name="build-img"></a>

## build-img(gulp, path, dest) ⇒ <code>function</code>
Copy and compress images with imagemin

**Returns**: <code>function</code> - Gulp task  

| Param | Type | Description |
| --- | --- | --- |
| gulp | <code>Object</code> | Gulp instance |
| path | <code>Array</code> \| <code>String</code> | Path[s] for image files to be built |
| dest | <code>String</code> | Output Destination |

**Example**  
```js
const gulp = require('gulp')
const tasks = require('apc-build')

gulp.task('build-img', tasks['build-img'](gulp, ['src/img/*'], 'dist/img'))
```
<a name="build-js"></a>

## build-js(gulp, entries, dest, [destFilename], [showFileSizes], [browserifyIgnore]) ⇒ <code>function</code>
Bundle and browserify front end JS files

**Returns**: <code>function</code> - Gulp task  

| Param | Type | Default | Description |
| --- | --- | --- | --- |
| gulp | <code>Object</code> |  | Gulp instance |
| entries | <code>String</code> \| <code>Array</code> |  | Path[s] of Js files to build |
| dest | <code>String</code> |  | Destination for Js built files |
| [destFilename] | <code>String</code> | <code>&#x27;bundle.js&#x27;</code> | Filename for built Js file |
| [showFileSizes] | <code>Boolean</code> | <code>true</code> | Show file sizes in console output? |
| [browserifyIgnore] | <code>Array</code> | <code>[]</code> | Browserify paths to ignore |

**Example**  
```js
const gulp = require('gulp')
const tasks = require('apc-build')

gulp.task('build-js', tasks['build-js'](gulp, ['src/js/entry.js'], 'dist/js', 'bundle.js'))
```
<a name="build-sass"></a>

## build-sass(gulp, path, dest, scssIncludePaths, showFileSizes) ⇒ <code>function</code>
Compile sass files

**Returns**: <code>function</code> - Gulp task  

| Param | Type | Description |
| --- | --- | --- |
| gulp | <code>Object</code> | Gulp instance |
| path | <code>Array</code> \| <code>String</code> | Path of Sass files to build |
| dest | <code>String</code> | Destination for built CSS |
| scssIncludePaths | <code>Array</code> | Sass include paths (for frameworks etc) |
| showFileSizes | <code>Boolean</code> | Show file sizes in console output? |

**Example**  
```js
const gulp = require('gulp')
const tasks = require('apc-build')

gulp.task('build-sass', tasks['build-sass'](gulp, ['src/scss/*.scss'], 'dist/css', ['node_modules/foundation-sites/scss']))
```

<a name="lint-js"></a>

## lint-js(gulp, path) ⇒ <code>function</code>
Lint js files using eslint

**Returns**: <code>function</code> - Gulp task  

| Param | Type | Description |
| --- | --- | --- |
| gulp | <code>Object</code> | Gulp instance |
| path | <code>Array</code> \| <code>String</code> | Path[s] of Js files to lint |

**Example**  
```js
const gulp = require('gulp')
const tasks = require('apc-build')

gulp.task('lint-js', tasks['lint-js'](gulp, ['src/js/*']))
```
<a name="lint-pug"></a>

## lint-pug(gulp, path) ⇒ <code>function</code>
Lint pug files using pug linter

**Returns**: <code>function</code> - Gulp task  

| Param | Type | Description |
| --- | --- | --- |
| gulp | <code>Object</code> | Gulp instance |
| path | <code>Array</code> \| <code>String</code> | Path[s] of pug files to lint |

**Example**  
```js
const gulp = require('gulp')
const tasks = require('apc-build')

gulp.task('lint-pug', tasks['lint-pug'](gulp, ['app/views/*.pug']))
```
<a name="lint-sass"></a>

## lint-sass(gulp, path) ⇒ <code>function</code>
Lint sass files using sass-lint

**Returns**: <code>function</code> - Gulp task  

| Param | Type | Description |
| --- | --- | --- |
| gulp | <code>Object</code> | Gulp instance |
| path | <code>String</code> | Path of Sass files to lint and/or build |

**Example**  
```js
const gulp = require('gulp')
const tasks = require('apc-build')

gulp.task('lint-sass', tasks['lint-sass'](gulp, 'src/scss/*'))
```

## Utilities

<a name="is-gulp"></a>

## is-gulp(gulp)
Test if object is an instance of gulp

**Throws**:

- <code>Error</code> Gulp instance not passed


| Param | Type | Description |
| --- | --- | --- |
| gulp | <code>Object</code> | Gulp instance |

---
_Source: https://npm.io/package/apc-build · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
