-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmake.js
132 lines (122 loc) · 2.74 KB
/
make.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
let b = require('substance-bundler')
let rollup = require('substance-bundler/extensions/rollup')
let nodeResolve = require('rollup-plugin-node-resolve')
let commonjs = require('rollup-plugin-commonjs')
let nodeBuiltins = require('rollup-plugin-node-builtins')
let nodeGlobals = require('rollup-plugin-node-globals')
let path = require('path')
const TMP = path.join(__dirname, 'tmp')
b.task('clean', () => {
b.rm('./dist')
b.rm('./tmp')
})
b.task('tape:browser', () => {
rollup(b, {
input: './.make/tape.js',
output: {
file: path.join(TMP, 'tape.browser.js'),
format: 'umd',
name: 'tape'
},
plugins: [
nodeResolve({
preferBuiltins: true
}),
commonjs(),
nodeBuiltins()
]
})
})
b.task('tape:node', () => {
rollup(b, {
input: '.make/tape.js',
output: {
file: path.join(TMP, 'tape.cjs.js'),
format: 'commonjs'
},
plugins: [
nodeResolve({
preferBuiltins: true
}),
commonjs(),
nodeBuiltins()
]
})
})
// Bundling the test API for use in nodejs
b.task('api:node', ['tape:node'], () => {
rollup(b, {
input: 'src/api.cjs.js',
output: [{
file: './dist/test.cjs.js',
format: 'cjs'
}],
plugins: [
_resolveTape({
tape: path.join(TMP, 'tape.cjs.js')
}),
nodeResolve(),
commonjs()
],
external: ['events', 'fs', 'path', 'stream', 'util']
})
})
// Bundling the test API for use in the browser (e.g. in karma)
b.task('api:browser', ['tape:browser'], () => {
rollup(b, {
input: './src/api.browser.js',
output: [{
file: './dist/test.browser.js',
format: 'umd',
name: 'substanceTest'
}],
plugins: [
_resolveTape({
tape: path.join(TMP, 'tape.browser.js')
}),
nodeResolve({
preferBuiltins: true
}),
commonjs(),
nodeBuiltins(),
nodeGlobals()
]
})
})
b.task('suite', ['tape:browser'], () => {
b.copy('src/index.html', 'dist/')
b.copy('src/test.css', 'dist/')
rollup(b, {
input: './src/suite.js',
output: {
file: './dist/testsuite.js',
format: 'umd',
// Note: important registering this at the same global name as the API
name: 'substanceTest'
},
plugins: [
_resolveTape({
tape: path.join(TMP, 'tape.browser.js')
}),
nodeResolve({
preferBuiltins: true
}),
commonjs(),
nodeBuiltins(),
nodeGlobals()
]
})
})
b.task('api', ['api:node', 'api:browser'])
b.task('default', ['clean', 'api', 'suite'])
function _resolveTape (options = {}) {
return {
name: '_resolve-tape',
resolveId (source) {
if (source === 'tape') {
return options.tape
}
return null
}
}
}