js-build-tools 1.2.3 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +573 -250
- package/dist/build.js +22 -15
- package/dist/build.min.js +1 -1
- package/dist/bundle.js +11 -8
- package/dist/bundle.min.js +1 -1
- package/dist/bundleLint.js +17 -13
- package/dist/bundleLint.min.js +1 -1
- package/dist/bundleMinify.js +8 -12
- package/dist/bundleMinify.min.js +1 -1
- package/dist/compileReadme.js +8 -6
- package/dist/compileReadme.min.js +1 -1
- package/dist/default.js +12 -7
- package/dist/default.min.js +1 -1
- package/dist/dist.js +6 -2
- package/dist/dist.min.js +1 -1
- package/dist/distLint.js +15 -12
- package/dist/distLint.min.js +1 -1
- package/dist/distMinify.js +7 -12
- package/dist/distMinify.min.js +1 -1
- package/dist/partials/addToReadme.js +25 -0
- package/dist/partials/beginWatcher.js +16 -0
- package/dist/partials/clean.js +21 -0
- package/dist/partials/distFor.js +23 -0
- package/dist/partials/distForSrc.js +16 -0
- package/dist/partials/distSeries.js +31 -0
- package/dist/partials/minifyFor.js +21 -0
- package/dist/partials/readmeTemplate.js +18 -0
- package/dist/partials/runOnChange.js +63 -0
- package/dist/partials/tsFor.js +24 -0
- package/dist/partials.js +33 -0
- package/dist/partials.min.js +1 -0
- package/dist/test-helpers/circularObject.js +50 -0
- package/dist/test-helpers/countMatches.js +16 -0
- package/dist/test-helpers/deepReferenceObject.js +20 -0
- package/dist/test-helpers/domItem.js +33 -0
- package/dist/test-helpers/jsonDom.js +20 -0
- package/dist/test-helpers/linkedList.js +23 -0
- package/dist/test-helpers/logObject.js +24 -0
- package/dist/test-helpers/multiReferenceObject.js +20 -0
- package/dist/test-helpers/nodeTree.js +28 -0
- package/dist/test-helpers/setUp.js +127 -0
- package/dist/testFull.js +16 -5
- package/dist/testFull.min.js +1 -1
- package/dist/testHelpers.js +29 -194
- package/dist/testHelpers.min.js +1 -1
- package/dist/testQuick.js +18 -7
- package/dist/testQuick.min.js +1 -1
- package/dist/typeScript.js +14 -0
- package/dist/typeScript.min.js +1 -0
- package/dist/watchFull.js +9 -16
- package/dist/watchFull.min.js +1 -1
- package/dist/watchTest.js +11 -9
- package/dist/watchTest.min.js +1 -1
- package/functions/build.js +8 -5
- package/functions/build.test.js +59 -0
- package/functions/bundle.js +6 -4
- package/functions/bundle.test.js +68 -0
- package/functions/bundleLint.js +5 -3
- package/functions/bundleLint.test.js +61 -0
- package/functions/bundleMinify.js +4 -7
- package/functions/bundleMinify.test.js +14 -0
- package/functions/compileReadme.js +3 -2
- package/functions/compileReadme.test.js +18 -0
- package/functions/default.js +5 -2
- package/functions/default.test.js +32 -0
- package/functions/dist.js +3 -1
- package/functions/dist.test.js +43 -0
- package/functions/distLint.js +4 -2
- package/functions/distLint.test.js +58 -0
- package/functions/distMinify.js +4 -7
- package/functions/distMinify.test.js +14 -0
- package/functions/partials/addToReadme.js +20 -0
- package/functions/partials/addToReadme.test.js +28 -0
- package/functions/partials/beginWatcher.js +12 -0
- package/functions/partials/beginWatcher.test.js +18 -0
- package/functions/partials/clean.js +14 -0
- package/functions/partials/clean.test.js +20 -0
- package/functions/partials/distFor.js +18 -0
- package/functions/partials/distFor.test.js +125 -0
- package/functions/partials/distForSrc.js +14 -0
- package/functions/partials/distForSrc.test.js +17 -0
- package/functions/partials/distSeries.js +21 -0
- package/functions/partials/distSeries.test.js +33 -0
- package/functions/partials/minifyFor.js +16 -0
- package/functions/partials/minifyFor.test.js +48 -0
- package/functions/partials/readmeTemplate.js +15 -0
- package/functions/partials/readmeTemplate.test.js +33 -0
- package/functions/partials/runOnChange.js +57 -0
- package/functions/partials/runOnChange.test.js +93 -0
- package/functions/partials/tsFor.js +21 -0
- package/functions/partials/tsFor.test.js +44 -0
- package/functions/partials.js +32 -0
- package/functions/partials.test.js +7 -0
- package/functions/test-helpers/circularObject.js +28 -0
- package/functions/test-helpers/circularObject.test.js +14 -0
- package/functions/test-helpers/countMatches.js +11 -0
- package/functions/test-helpers/countMatches.test.js +9 -0
- package/functions/test-helpers/deepReferenceObject.js +25 -0
- package/functions/test-helpers/deepReferenceObject.test.js +7 -0
- package/functions/test-helpers/domItem.js +31 -0
- package/functions/test-helpers/domItem.test.js +12 -0
- package/functions/test-helpers/jsonDom.js +16 -0
- package/functions/test-helpers/jsonDom.test.js +12 -0
- package/functions/test-helpers/linkedList.js +10 -0
- package/functions/test-helpers/linkedList.test.js +22 -0
- package/functions/test-helpers/logObject.js +18 -0
- package/functions/test-helpers/logObject.test.js +20 -0
- package/functions/test-helpers/multiReferenceObject.js +25 -0
- package/functions/test-helpers/multiReferenceObject.test.js +14 -0
- package/functions/test-helpers/nodeTree.js +11 -0
- package/functions/test-helpers/nodeTree.test.js +18 -0
- package/functions/test-helpers/setUp.js +67 -0
- package/functions/test-helpers/setUp.test.js +18 -0
- package/functions/testFull.js +13 -3
- package/functions/testFull.test.js +16 -0
- package/functions/testHelpers.js +27 -137
- package/functions/testHelpers.test.js +3 -96
- package/functions/testQuick.js +12 -2
- package/functions/testQuick.test.js +16 -0
- package/functions/typeScript.js +11 -0
- package/functions/typeScript.test.js +10 -0
- package/functions/watchFull.js +6 -12
- package/functions/watchFull.test.js +40 -0
- package/functions/watchTest.js +4 -2
- package/functions/watchTest.test.js +48 -0
- package/gulp.config.js +161 -16
- package/gulpfile.base.js +9 -0
- package/package.json +1 -1
- package/dist/addToReadme.js +0 -22
- package/dist/addToReadme.min.js +0 -1
- package/dist/clean.js +0 -11
- package/dist/clean.min.js +0 -1
- package/dist/distFor.js +0 -21
- package/dist/distFor.min.js +0 -1
- package/dist/readmeTemplate.js +0 -15
- package/dist/readmeTemplate.min.js +0 -1
- package/functions/addToReadme.js +0 -17
- package/functions/clean.js +0 -10
- package/functions/distFor.js +0 -15
- package/functions/readmeTemplate.js +0 -13
package/dist/testQuick.js
CHANGED
|
@@ -1,15 +1,26 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
} = require('jest')
|
|
3
|
+
var gulpConfig = require('../gulp.config.js')
|
|
4
|
+
var _require = require('jest')
|
|
5
|
+
var runCLI = _require.runCLI
|
|
7
6
|
|
|
8
7
|
/**
|
|
9
8
|
* Run the Jest tests for files which have been modified (based on git status).
|
|
9
|
+
* @function
|
|
10
|
+
* @memberOf module:js-build-tools
|
|
11
|
+
* @param {function} [done=null]
|
|
12
|
+
* @param {Array.<string>|string} [testPath='path/config/test/files']
|
|
10
13
|
* @returns {Promise<*>}
|
|
11
14
|
*/
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
var testQuick = function testQuick () {
|
|
16
|
+
var done = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null
|
|
17
|
+
var testPath = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : gulpConfig.get('testPath')
|
|
18
|
+
if (!Array.isArray(testPath)) {
|
|
19
|
+
// The testPath must be an array of strings
|
|
20
|
+
testPath = [testPath]
|
|
21
|
+
}
|
|
22
|
+
return runCLI({
|
|
23
|
+
onlyChanged: true
|
|
24
|
+
}, testPath)
|
|
25
|
+
}
|
|
15
26
|
module.exports = testQuick
|
package/dist/testQuick.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var gulpConfig=require("../gulp.config.js"),_require=require("jest"),runCLI=_require.runCLI,testQuick=function(){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:gulpConfig.get("testPath");return Array.isArray(r)||(r=[r]),runCLI({onlyChanged:!0},r)};module.exports=testQuick;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
var tsFor = require('./partials/tsFor')
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Simplified typescript task using tsFor.
|
|
7
|
+
* @function
|
|
8
|
+
* @memberOf module:js-build-tools
|
|
9
|
+
* @returns {stream.Stream}
|
|
10
|
+
*/
|
|
11
|
+
var typeScript = function typeScript () {
|
|
12
|
+
return tsFor()
|
|
13
|
+
}
|
|
14
|
+
module.exports = typeScript
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var tsFor=require("./partials/tsFor"),typeScript=function(){return tsFor()};module.exports=typeScript;
|
package/dist/watchFull.js
CHANGED
|
@@ -1,23 +1,16 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
require('
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const gulpConfig = require('../gulp.config.js')
|
|
7
|
-
const {
|
|
8
|
-
parallel,
|
|
9
|
-
series,
|
|
10
|
-
watch
|
|
11
|
-
} = require('gulp')
|
|
12
|
-
const testQuick = require('./testQuick')
|
|
3
|
+
var _require = require('./partials')
|
|
4
|
+
var beginWatcher = _require.beginWatcher
|
|
5
|
+
var runOnChange = _require.runOnChange
|
|
13
6
|
|
|
14
7
|
/**
|
|
15
8
|
* Watch for changes and run the distribution for the changed files, then bundle and test the changed files.
|
|
16
|
-
* @
|
|
9
|
+
* @function
|
|
10
|
+
* @memberOf module:js-build-tools
|
|
11
|
+
* @returns {FSWatcher}
|
|
17
12
|
*/
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return parallel(testQuick, series(distForPath, bundle))()
|
|
22
|
-
})
|
|
13
|
+
var watchFull = function watchFull () {
|
|
14
|
+
return beginWatcher().on('change', runOnChange)
|
|
15
|
+
}
|
|
23
16
|
module.exports = watchFull
|
package/dist/watchFull.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var _require=require("./partials"),beginWatcher=_require.beginWatcher,runOnChange=_require.runOnChange,watchFull=function(){return beginWatcher().on("change",runOnChange)};module.exports=watchFull;
|
package/dist/watchTest.js
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
} = require('gulp')
|
|
8
|
-
const testQuick = require('./testQuick')
|
|
3
|
+
var gulpConfig = require('../gulp.config.js')
|
|
4
|
+
var _require = require('gulp')
|
|
5
|
+
var watch = _require.watch
|
|
6
|
+
var testQuick = require('./testQuick')
|
|
9
7
|
|
|
10
8
|
/**
|
|
11
9
|
* Watch for changes and run the tests.
|
|
10
|
+
* @function
|
|
11
|
+
* @memberOf module:js-build-tools
|
|
12
12
|
* @returns {*}
|
|
13
13
|
*/
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
var watchTest = function watchTest () {
|
|
15
|
+
return watch(gulpConfig.get('watchSearch'), {
|
|
16
|
+
ignoreInitial: false
|
|
17
|
+
}, testQuick)
|
|
18
|
+
}
|
|
17
19
|
module.exports = watchTest
|
package/dist/watchTest.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var gulpConfig=require("../gulp.config.js"),_require=require("gulp"),watch=_require.watch,testQuick=require("./testQuick"),watchTest=function(){return watch(gulpConfig.get("watchSearch"),{ignoreInitial:!1},testQuick)};module.exports=watchTest;
|
package/functions/build.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const bundle = require('./bundle')
|
|
2
2
|
const bundleLint = require('./bundleLint')
|
|
3
3
|
const bundleMinify = require('./bundleMinify')
|
|
4
|
-
const clean = require('./
|
|
4
|
+
const { clean, distSeries } = require('./partials')
|
|
5
5
|
const compileReadme = require('./compileReadme')
|
|
6
6
|
const dist = require('./dist')
|
|
7
7
|
const distLint = require('./distLint')
|
|
@@ -13,13 +13,16 @@ const testFull = require('./testFull')
|
|
|
13
13
|
/**
|
|
14
14
|
* Runs several processes to build and validate the project.
|
|
15
15
|
* Cleans, distributes (lint and minify), bundles (lint and minify), creates the readme, then runs the tests.
|
|
16
|
+
* @memberOf module:js-build-tools
|
|
17
|
+
* @param {function} [done=null]
|
|
18
|
+
* @returns {stream.Stream}
|
|
16
19
|
*/
|
|
17
|
-
const build = parallel(
|
|
18
|
-
gulpConfig.nodeOnly
|
|
20
|
+
const build = (done = null) => parallel(
|
|
21
|
+
gulpConfig.get('nodeOnly')
|
|
19
22
|
? series(clean, dist, parallel(distLint, distMinify))
|
|
20
|
-
: series(clean,
|
|
23
|
+
: series(clean, distSeries, parallel(distLint, distMinify), bundle, parallel(bundleLint, bundleMinify)),
|
|
21
24
|
compileReadme,
|
|
22
25
|
testFull
|
|
23
|
-
)
|
|
26
|
+
)(done)
|
|
24
27
|
|
|
25
28
|
module.exports = build
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
const { setUp } = require('./testHelpers')
|
|
2
|
+
const gulpConfig = setUp.gulpConfig
|
|
3
|
+
const build = require('./build')
|
|
4
|
+
const bundle = require('./bundle')
|
|
5
|
+
const bundleLint = require('./bundleLint')
|
|
6
|
+
const bundleMinify = require('./bundleMinify')
|
|
7
|
+
const { clean, distSeries } = require('./partials')
|
|
8
|
+
const compileReadme = require('./compileReadme')
|
|
9
|
+
const dist = require('./dist')
|
|
10
|
+
const distLint = require('./distLint')
|
|
11
|
+
const distMinify = require('./distMinify')
|
|
12
|
+
const testFull = require('./testFull')
|
|
13
|
+
|
|
14
|
+
const genericFunction = () => Promise.resolve(true)
|
|
15
|
+
jest.mock('./bundle', () => jest.fn(genericFunction))
|
|
16
|
+
jest.mock('./bundleLint', () => jest.fn(genericFunction))
|
|
17
|
+
jest.mock('./bundleMinify', () => jest.fn(genericFunction))
|
|
18
|
+
jest.mock('./partials/clean', () => jest.fn(genericFunction))
|
|
19
|
+
jest.mock('./compileReadme', () => jest.fn(genericFunction))
|
|
20
|
+
jest.mock('./dist', () => jest.fn(genericFunction))
|
|
21
|
+
jest.mock('./distLint', () => jest.fn(genericFunction))
|
|
22
|
+
jest.mock('./distMinify', () => jest.fn(genericFunction))
|
|
23
|
+
jest.mock('./partials/distSeries', () => jest.fn(genericFunction))
|
|
24
|
+
jest.mock('./testFull', () => jest.fn(genericFunction))
|
|
25
|
+
|
|
26
|
+
describe('build', () => {
|
|
27
|
+
test('when nodeOnly true: calls clean, dist, distLint, distMinify, compileReadme, testFull', done => {
|
|
28
|
+
gulpConfig.set('nodeOnly', true)
|
|
29
|
+
expect.assertions(6)
|
|
30
|
+
build()
|
|
31
|
+
setTimeout(() => {
|
|
32
|
+
expect(clean).toHaveBeenCalled()
|
|
33
|
+
expect(dist).toHaveBeenCalled()
|
|
34
|
+
expect(distLint).toHaveBeenCalled()
|
|
35
|
+
expect(distMinify).toHaveBeenCalled()
|
|
36
|
+
expect(compileReadme).toHaveBeenCalled()
|
|
37
|
+
expect(testFull).toHaveBeenCalled()
|
|
38
|
+
done()
|
|
39
|
+
}, 500)
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
test('when nodeOnly false: calls clean, distSeries, distLint, distMinify, bundle, bundleLint, bundleMinify, compileReadme, testFull', done => {
|
|
43
|
+
gulpConfig.set('nodeOnly', false)
|
|
44
|
+
expect.assertions(9)
|
|
45
|
+
build()
|
|
46
|
+
setTimeout(() => {
|
|
47
|
+
expect(clean).toHaveBeenCalled()
|
|
48
|
+
expect(distSeries).toHaveBeenCalled()
|
|
49
|
+
expect(distLint).toHaveBeenCalled()
|
|
50
|
+
expect(distMinify).toHaveBeenCalled()
|
|
51
|
+
expect(bundle).toHaveBeenCalled()
|
|
52
|
+
expect(bundleLint).toHaveBeenCalled()
|
|
53
|
+
expect(bundleMinify).toHaveBeenCalled()
|
|
54
|
+
expect(compileReadme).toHaveBeenCalled()
|
|
55
|
+
expect(testFull).toHaveBeenCalled()
|
|
56
|
+
done()
|
|
57
|
+
}, 500)
|
|
58
|
+
})
|
|
59
|
+
})
|
package/functions/bundle.js
CHANGED
|
@@ -5,11 +5,13 @@ const source = require('vinyl-source-stream')
|
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Starting at the distribution entry point, bundle all the files into a single file and store them in the specified output directory.
|
|
8
|
-
* @
|
|
8
|
+
* @function
|
|
9
|
+
* @memberOf module:js-build-tools
|
|
10
|
+
* @returns {stream.Stream}
|
|
9
11
|
*/
|
|
10
|
-
const bundle = () => browserify(gulpConfig.distMain)
|
|
12
|
+
const bundle = () => browserify(gulpConfig.get('distMain'))
|
|
11
13
|
.bundle()
|
|
12
|
-
.pipe(source(`${gulpConfig.browserName}.js`))
|
|
13
|
-
.pipe(dest(gulpConfig.browserPath))
|
|
14
|
+
.pipe(source(`${gulpConfig.get('browserName')}.js`))
|
|
15
|
+
.pipe(dest(gulpConfig.get('browserPath')))
|
|
14
16
|
|
|
15
17
|
module.exports = bundle
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
const fs = require('fs')
|
|
2
|
+
const setUp = require('./test-helpers/setUp')
|
|
3
|
+
setUp.setDefaults('test-bundle')
|
|
4
|
+
const gulpConfig = setUp.gulpConfig
|
|
5
|
+
const bundle = require('./bundle')
|
|
6
|
+
const { countMatches } = require('./testHelpers')
|
|
7
|
+
|
|
8
|
+
const file1Contents = 'function file1 () {\n' +
|
|
9
|
+
' console.log(\'Hello from file1\')\n' +
|
|
10
|
+
'}\n' +
|
|
11
|
+
'\n' +
|
|
12
|
+
'module.exports = file1\n'
|
|
13
|
+
const file2Contents = 'function file2 () {\n' +
|
|
14
|
+
' console.log(\'Good-bye from file2\')\n' +
|
|
15
|
+
'}\n' +
|
|
16
|
+
'\n' +
|
|
17
|
+
'module.exports = file2\n'
|
|
18
|
+
const mainFileContents = 'const file1 = require(\'./sources/file1\')\n' +
|
|
19
|
+
'const file2 = require(\'./sources/file2\')\n' +
|
|
20
|
+
'\n' +
|
|
21
|
+
'module.exports = {\n' +
|
|
22
|
+
' file1,\n' +
|
|
23
|
+
' file2,\n' +
|
|
24
|
+
'}\n'
|
|
25
|
+
|
|
26
|
+
beforeEach(
|
|
27
|
+
() => setUp.beforeEach()
|
|
28
|
+
.then(
|
|
29
|
+
async () => {
|
|
30
|
+
const distPath = gulpConfig.get('distPath')
|
|
31
|
+
const mainFile = gulpConfig.get('distMain')
|
|
32
|
+
const sourcesPath = `${distPath}/sources`
|
|
33
|
+
await fs.mkdirSync(distPath)
|
|
34
|
+
await fs.mkdirSync(sourcesPath)
|
|
35
|
+
await fs.writeFileSync(`${sourcesPath}/file1.js`, file1Contents)
|
|
36
|
+
await fs.writeFileSync(`${sourcesPath}/file2.js`, file2Contents)
|
|
37
|
+
return fs.writeFileSync(`${mainFile}.js`, mainFileContents)
|
|
38
|
+
}
|
|
39
|
+
)
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
afterEach(setUp.afterEach)
|
|
43
|
+
|
|
44
|
+
describe('bundle', () => {
|
|
45
|
+
test('copies all the dist contents into a single file for browsers', done => {
|
|
46
|
+
const distPath = gulpConfig.get('distPath')
|
|
47
|
+
const destFile = `${gulpConfig.get('browserName')}.js`
|
|
48
|
+
const destPath = gulpConfig.get('browserPath')
|
|
49
|
+
const bundledFile = `${destPath}/${destFile}`
|
|
50
|
+
const sourcesPath = `${distPath}/sources`
|
|
51
|
+
const file1Path = `${sourcesPath}/file1.js`
|
|
52
|
+
const file2Path = `${sourcesPath}/file2.js`
|
|
53
|
+
const oldFile1Contents = fs.readFileSync(file1Path).toString()
|
|
54
|
+
const oldFile2Contents = fs.readFileSync(file2Path).toString()
|
|
55
|
+
expect.assertions(2)
|
|
56
|
+
bundle()
|
|
57
|
+
.on('finish', () => {
|
|
58
|
+
const bundledContents = fs.readFileSync(bundledFile).toString()
|
|
59
|
+
expect(countMatches(bundledContents, oldFile1Contents)).toEqual(1)
|
|
60
|
+
expect(countMatches(bundledContents, oldFile2Contents)).toEqual(1)
|
|
61
|
+
done()
|
|
62
|
+
})
|
|
63
|
+
.on('error', error => {
|
|
64
|
+
console.error('Encountered error', error)
|
|
65
|
+
done()
|
|
66
|
+
})
|
|
67
|
+
}, 500)
|
|
68
|
+
})
|
package/functions/bundleLint.js
CHANGED
|
@@ -4,14 +4,16 @@ const standard = require('gulp-standard')
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Applies Standard code style linting to bundled file.
|
|
7
|
-
* @
|
|
7
|
+
* @function
|
|
8
|
+
* @memberOf module:js-build-tools
|
|
9
|
+
* @returns {stream.Stream}
|
|
8
10
|
*/
|
|
9
|
-
const bundleLint = () => src(`${gulpConfig.browserPath}/${gulpConfig.browserName}.js`)
|
|
11
|
+
const bundleLint = () => src(`${gulpConfig.get('browserPath')}/${gulpConfig.get('browserName')}.js`)
|
|
10
12
|
.pipe(standard({ fix: true }))
|
|
11
13
|
.pipe(standard.reporter('default', {
|
|
12
14
|
fix: true,
|
|
13
15
|
quiet: true
|
|
14
16
|
}))
|
|
15
|
-
.pipe(dest(gulpConfig.browserPath))
|
|
17
|
+
.pipe(dest(gulpConfig.get('browserPath')))
|
|
16
18
|
|
|
17
19
|
module.exports = bundleLint
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
const fs = require('fs')
|
|
2
|
+
const setUp = require('./test-helpers/setUp')
|
|
3
|
+
setUp.setDefaults('test-bundle-lint')
|
|
4
|
+
const gulpConfig = setUp.gulpConfig
|
|
5
|
+
const bundleLint = require('./bundleLint')
|
|
6
|
+
const { countMatches } = require('./testHelpers')
|
|
7
|
+
|
|
8
|
+
const lintableContents = 'const gulpConfig = require("../gulp.config.js");\n' +
|
|
9
|
+
'const { dest, src } = require("gulp");\n' +
|
|
10
|
+
'const standard = require("gulp-standard");\n' +
|
|
11
|
+
'\n' +
|
|
12
|
+
'/**\n' +
|
|
13
|
+
' * Applies Standard code style linting to distribution files.\n' +
|
|
14
|
+
' * @returns {*}\n' +
|
|
15
|
+
' */\n' +
|
|
16
|
+
'const bundleLint = () => src(`${gulpConfig.get(\"browserPath\")}/${gulpConfig.get(\"browserName\")}.js`)\n' +
|
|
17
|
+
' .pipe(standard({ fix: true }))\n' +
|
|
18
|
+
' .pipe(standard.reporter("default", {\n' +
|
|
19
|
+
' fix: true,\n' +
|
|
20
|
+
' quiet: true\n' +
|
|
21
|
+
' }))\n' +
|
|
22
|
+
' .pipe(dest(gulpConfig.get("browserPath")));\n' +
|
|
23
|
+
'\n' +
|
|
24
|
+
'module.exports = bundleLint;'
|
|
25
|
+
|
|
26
|
+
beforeEach(
|
|
27
|
+
() => setUp.beforeEach()
|
|
28
|
+
.then(
|
|
29
|
+
async () => {
|
|
30
|
+
const browserPath = gulpConfig.get('browserPath')
|
|
31
|
+
const browserName = gulpConfig.get('browserName')
|
|
32
|
+
await fs.mkdirSync(browserPath)
|
|
33
|
+
return fs.writeFileSync(`${browserPath}/${browserName}.js`, lintableContents)
|
|
34
|
+
}
|
|
35
|
+
)
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
afterEach(setUp.afterEach)
|
|
39
|
+
|
|
40
|
+
describe('bundleLint', () => {
|
|
41
|
+
test('copies the src directory and babelifies it into the dist directory', done => {
|
|
42
|
+
const browserPath = gulpConfig.get('browserPath')
|
|
43
|
+
const browserName = gulpConfig.get('browserName')
|
|
44
|
+
const fullPath = `${browserPath}/${browserName}.js`
|
|
45
|
+
const oldContents = fs.readFileSync(fullPath).toString()
|
|
46
|
+
expect.assertions(4)
|
|
47
|
+
expect(countMatches(oldContents, '"')).toEqual(14)
|
|
48
|
+
expect(countMatches(oldContents, ';')).toEqual(5)
|
|
49
|
+
bundleLint()
|
|
50
|
+
.on('finish', () => {
|
|
51
|
+
const lintedContents = fs.readFileSync(fullPath).toString()
|
|
52
|
+
expect(countMatches(lintedContents, '"')).toEqual(0)
|
|
53
|
+
expect(countMatches(lintedContents, ';')).toEqual(0)
|
|
54
|
+
done()
|
|
55
|
+
})
|
|
56
|
+
.on('error', error => {
|
|
57
|
+
console.error('Encountered error', error)
|
|
58
|
+
done()
|
|
59
|
+
})
|
|
60
|
+
}, 10000)
|
|
61
|
+
})
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
const { dest, src } = require('gulp')
|
|
2
1
|
const gulpConfig = require('../gulp.config.js')
|
|
3
|
-
const
|
|
4
|
-
const rename = require('gulp-rename')
|
|
2
|
+
const minifyFor = require('./partials/minifyFor')
|
|
5
3
|
|
|
6
4
|
/**
|
|
7
5
|
* Creates the minified bundle file.
|
|
6
|
+
* @function
|
|
7
|
+
* @memberOf module:js-build-tools
|
|
8
8
|
* @returns {*}
|
|
9
9
|
*/
|
|
10
|
-
const bundleMinify = () =>
|
|
11
|
-
.pipe(uglify())
|
|
12
|
-
.pipe(rename({ extname: '.min.js' }))
|
|
13
|
-
.pipe(dest(gulpConfig.browserPath))
|
|
10
|
+
const bundleMinify = () => minifyFor(`${gulpConfig.get('browserPath')}/${gulpConfig.get('browserName')}.js`, gulpConfig.get('browserPath'))
|
|
14
11
|
|
|
15
12
|
module.exports = bundleMinify
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const { setUp } = require('./testHelpers')
|
|
2
|
+
const gulpConfig = setUp.gulpConfig
|
|
3
|
+
const bundleMinify = require('./bundleMinify')
|
|
4
|
+
const minifyFor = require('./partials/minifyFor')
|
|
5
|
+
|
|
6
|
+
jest.mock('./partials/minifyFor', () => jest.fn(() => Promise.resolve(true)))
|
|
7
|
+
|
|
8
|
+
describe('bundleMinify', () => {
|
|
9
|
+
test('calls minifyFor with configurations', () => {
|
|
10
|
+
expect.assertions(1)
|
|
11
|
+
bundleMinify()
|
|
12
|
+
expect(minifyFor).toHaveBeenCalledWith(`${gulpConfig.get('browserPath')}/${gulpConfig.get('browserName')}.js`, gulpConfig.get('browserPath'))
|
|
13
|
+
})
|
|
14
|
+
})
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
const addToReadme = require('./
|
|
2
|
-
const readmeTemplate = require('./readmeTemplate')
|
|
1
|
+
const { addToReadme, readmeTemplate } = require('./partials')
|
|
3
2
|
const { series } = require('gulp')
|
|
4
3
|
|
|
5
4
|
/**
|
|
6
5
|
* Generate the README.md file based off of the template, then append the generated documentation.
|
|
6
|
+
* @memberOf module:js-build-tools
|
|
7
|
+
* @returns {stream.Stream}
|
|
7
8
|
*/
|
|
8
9
|
const compileReadme = series(readmeTemplate, addToReadme)
|
|
9
10
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const compileReadme = require('./compileReadme')
|
|
2
|
+
const { addToReadme, readmeTemplate} = require('./partials')
|
|
3
|
+
|
|
4
|
+
const genericFunction = () => Promise.resolve(true)
|
|
5
|
+
jest.mock('./partials/addToReadme', () => jest.fn(genericFunction))
|
|
6
|
+
jest.mock('./partials/readmeTemplate', () => jest.fn(genericFunction))
|
|
7
|
+
|
|
8
|
+
describe('compileReadme', () => {
|
|
9
|
+
test('calls readmeTemplate and addToReadme', done => {
|
|
10
|
+
expect.assertions(2)
|
|
11
|
+
compileReadme()
|
|
12
|
+
setTimeout(() => {
|
|
13
|
+
expect(readmeTemplate).toHaveBeenCalled()
|
|
14
|
+
expect(addToReadme).toHaveBeenCalled()
|
|
15
|
+
done()
|
|
16
|
+
}, 500)
|
|
17
|
+
})
|
|
18
|
+
})
|
package/functions/default.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
const { series } = require('gulp')
|
|
2
1
|
const dist = require('./dist')
|
|
3
2
|
const bundle = require('./bundle')
|
|
4
3
|
const gulpConfig = require('../gulp.config')
|
|
4
|
+
const { series } = require('gulp')
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Recommended as the default task, runs the simple dist and bundle tasks.
|
|
8
|
+
* @memberOf module:js-build-tools
|
|
9
|
+
* @param {function} [done=null]
|
|
10
|
+
* @returns {stream.Stream}
|
|
8
11
|
*/
|
|
9
|
-
const defaultCmd = gulpConfig.nodeOnly ? series(dist) : series(dist, bundle)
|
|
12
|
+
const defaultCmd = (done = null) => gulpConfig.get('nodeOnly') ? series(dist)(done) : series(dist, bundle)(done)
|
|
10
13
|
|
|
11
14
|
module.exports = defaultCmd
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const { setUp } = require('./testHelpers')
|
|
2
|
+
const gulpConfig = setUp.gulpConfig
|
|
3
|
+
const bundle = require('./bundle')
|
|
4
|
+
const dist = require('./dist')
|
|
5
|
+
const defaultCmd = require('./default')
|
|
6
|
+
|
|
7
|
+
const genericFunction = () => Promise.resolve(true)
|
|
8
|
+
jest.mock('./bundle', () => jest.fn(genericFunction))
|
|
9
|
+
jest.mock('./dist', () => jest.fn(genericFunction))
|
|
10
|
+
|
|
11
|
+
describe('distMinify', () => {
|
|
12
|
+
test('calls dist for nodeOnly true', done => {
|
|
13
|
+
gulpConfig.set('nodeOnly', true)
|
|
14
|
+
expect.assertions(1)
|
|
15
|
+
defaultCmd()
|
|
16
|
+
setTimeout(() => {
|
|
17
|
+
expect(dist).toHaveBeenCalled()
|
|
18
|
+
done()
|
|
19
|
+
}, 500)
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
test('calls dist and bundle for nodeOnly false', done => {
|
|
23
|
+
gulpConfig.set('nodeOnly', false)
|
|
24
|
+
expect.assertions(2)
|
|
25
|
+
defaultCmd()
|
|
26
|
+
setTimeout(() => {
|
|
27
|
+
expect(dist).toHaveBeenCalled()
|
|
28
|
+
expect(bundle).toHaveBeenCalled()
|
|
29
|
+
done()
|
|
30
|
+
}, 500)
|
|
31
|
+
})
|
|
32
|
+
})
|
package/functions/dist.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
const distFor = require('./distFor.js')
|
|
1
|
+
const distFor = require('./partials/distFor.js')
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Simplified distribution tasks which will use arguments from distFor.
|
|
5
|
+
* @function
|
|
6
|
+
* @memberOf module:js-build-tools
|
|
5
7
|
* @returns {*}
|
|
6
8
|
*/
|
|
7
9
|
const dist = () => distFor()
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const fs = require('fs')
|
|
2
|
+
const setUp = require('./test-helpers/setUp')
|
|
3
|
+
setUp.setDefaults('test-dist')
|
|
4
|
+
const gulpConfig = setUp.gulpConfig
|
|
5
|
+
const dist = require('./dist')
|
|
6
|
+
|
|
7
|
+
const rawContents = 'const distFor = require(\'./distFor.js\')\n' +
|
|
8
|
+
'\n' +
|
|
9
|
+
'/**\n' +
|
|
10
|
+
' * Simplified distribution tasks which will use arguments from distFor.\n' +
|
|
11
|
+
' * @returns {*}\n' +
|
|
12
|
+
' */\n' +
|
|
13
|
+
'const dist = () => distFor()\n' +
|
|
14
|
+
'\n' +
|
|
15
|
+
'module.exports = dist\n'
|
|
16
|
+
|
|
17
|
+
beforeEach(
|
|
18
|
+
() => setUp.beforeEach()
|
|
19
|
+
.then(
|
|
20
|
+
async () => {
|
|
21
|
+
const srcPath = gulpConfig.get('srcPath')
|
|
22
|
+
return fs.writeFileSync(`${srcPath}/dist.js`, rawContents)
|
|
23
|
+
}
|
|
24
|
+
)
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
afterEach(setUp.afterEach)
|
|
28
|
+
|
|
29
|
+
describe('dist', () => {
|
|
30
|
+
test('uses the configured paths', done => {
|
|
31
|
+
const distPath = gulpConfig.get('distPath')
|
|
32
|
+
expect.assertions(1)
|
|
33
|
+
dist()
|
|
34
|
+
.on('finish', () => {
|
|
35
|
+
expect(fs.existsSync(distPath)).toBeTruthy()
|
|
36
|
+
done()
|
|
37
|
+
})
|
|
38
|
+
.on('error', error => {
|
|
39
|
+
console.error('Encountered error', error)
|
|
40
|
+
done()
|
|
41
|
+
})
|
|
42
|
+
}, 10000)
|
|
43
|
+
})
|
package/functions/distLint.js
CHANGED
|
@@ -4,14 +4,16 @@ const standard = require('gulp-standard')
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Applies Standard code style linting to distribution files.
|
|
7
|
+
* @function
|
|
8
|
+
* @memberOf module:js-build-tools
|
|
7
9
|
* @returns {*}
|
|
8
10
|
*/
|
|
9
|
-
const distLint = () => src(gulpConfig.distSearch)
|
|
11
|
+
const distLint = () => src(gulpConfig.get('distSearch'))
|
|
10
12
|
.pipe(standard({ fix: true }))
|
|
11
13
|
.pipe(standard.reporter('default', {
|
|
12
14
|
fix: true,
|
|
13
15
|
quiet: true
|
|
14
16
|
}))
|
|
15
|
-
.pipe(dest(gulpConfig.distPath))
|
|
17
|
+
.pipe(dest(gulpConfig.get('distPath')))
|
|
16
18
|
|
|
17
19
|
module.exports = distLint
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
const fs = require('fs')
|
|
2
|
+
const setUp = require('./test-helpers/setUp')
|
|
3
|
+
setUp.setDefaults('test-dist-lint')
|
|
4
|
+
const gulpConfig = setUp.gulpConfig
|
|
5
|
+
const distLint = require('./distLint')
|
|
6
|
+
const { countMatches } = require('./testHelpers')
|
|
7
|
+
|
|
8
|
+
const lintableContents = 'const gulpConfig = require("../gulp.config.js");\n' +
|
|
9
|
+
'const { dest, src } = require("gulp");\n' +
|
|
10
|
+
'const standard = require("gulp-standard");\n' +
|
|
11
|
+
'\n' +
|
|
12
|
+
'/**\n' +
|
|
13
|
+
' * Applies Standard code style linting to distribution files.\n' +
|
|
14
|
+
' * @returns {*}\n' +
|
|
15
|
+
' */\n' +
|
|
16
|
+
'const distLint = () => src(gulpConfig.get("distSearch"))\n' +
|
|
17
|
+
' .pipe(standard({ fix: true }))\n' +
|
|
18
|
+
' .pipe(standard.reporter("default", {\n' +
|
|
19
|
+
' fix: true,\n' +
|
|
20
|
+
' quiet: true\n' +
|
|
21
|
+
' }))\n' +
|
|
22
|
+
' .pipe(dest(gulpConfig.get("distPath")));\n' +
|
|
23
|
+
'\n' +
|
|
24
|
+
'module.exports = distLint;'
|
|
25
|
+
|
|
26
|
+
beforeEach(
|
|
27
|
+
() => setUp.beforeEach()
|
|
28
|
+
.then(
|
|
29
|
+
async () => {
|
|
30
|
+
const distPath = gulpConfig.get('distPath')
|
|
31
|
+
await fs.mkdirSync(distPath)
|
|
32
|
+
return fs.writeFileSync(`${distPath}/distLint.js`, lintableContents)
|
|
33
|
+
}
|
|
34
|
+
)
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
afterEach(setUp.afterEach)
|
|
38
|
+
|
|
39
|
+
describe('distLint', () => {
|
|
40
|
+
test('copies the src directory and babelifies it into the dist directory', done => {
|
|
41
|
+
const distPath = gulpConfig.get('distPath')
|
|
42
|
+
const oldContents = fs.readFileSync(`${distPath}/distLint.js`).toString()
|
|
43
|
+
expect.assertions(4)
|
|
44
|
+
expect(countMatches(oldContents, '"')).toEqual(12)
|
|
45
|
+
expect(countMatches(oldContents, ';')).toEqual(5)
|
|
46
|
+
distLint()
|
|
47
|
+
.on('finish', () => {
|
|
48
|
+
const lintedContents = fs.readFileSync(`${distPath}/distLint.js`).toString()
|
|
49
|
+
expect(countMatches(lintedContents, '"')).toEqual(0)
|
|
50
|
+
expect(countMatches(lintedContents, ';')).toEqual(0)
|
|
51
|
+
done()
|
|
52
|
+
})
|
|
53
|
+
.on('error', error => {
|
|
54
|
+
console.error('Encountered error', error)
|
|
55
|
+
done()
|
|
56
|
+
})
|
|
57
|
+
}, 10000)
|
|
58
|
+
})
|