forked from winjs-dev/cloud-utils
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfig.js
96 lines (87 loc) · 2.43 KB
/
config.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
const path = require('path');
const buble = require('rollup-plugin-buble')
// const cjs = require('rollup-plugin-commonjs')
const replace = require('rollup-plugin-replace')
const node = require('rollup-plugin-node-resolve')
const pack = require('../package.json')
const version = process.env.VERSION || pack.version
const moduleName = 'cloud-utils';
const banner =
`/*!
* ${moduleName} v${version} (https://github.com/cloud-templates/cloud-utils)
* API https://cloud-templates.github.io/cloud-utils/
* Copyright 2017-${(new Date).getFullYear()} ${pack.author.name}. All Rights Reserved
* Licensed under ${pack.license} (https://github.com/cloud-templates/cloud-utils/blob/master/LICENSE)
*/
`
const resolve = (p) => {
return path.resolve(__dirname, '../', p)
}
const builds = {
// Runtime only (CommonJS). Used by bundlers e.g. Webpack & Browserify
commonjs: {
entry: resolve('src/main.js'),
dest: resolve(`dist/${moduleName}.common.js`),
format: 'cjs',
banner
},
// Runtime only (ES Modules). Used by bundlers that support ES Modules,
// e.g. Rollup & Webpack 2
esm: {
entry: resolve('src/main.js'),
dest: resolve(`dist/${moduleName}.esm.js`),
format: 'es',
banner
},
// runtime-only production build (Browser)
production: {
entry: resolve('src/main.js'),
dest: resolve(`dist/${moduleName}.min.js`),
format: 'umd',
env: 'production',
moduleName,
banner
},
// runtime-only build (Browser)
development: {
entry: resolve('src/main.js'),
dest: resolve(`dist/${moduleName}.js`),
format: 'umd',
env: 'development',
moduleName,
banner
}
}
function genConfig(name) {
const opts = builds[name]
const config = {
input: opts.entry,
external: opts.external,
plugins: [
node(),
buble()
].concat(opts.plugins || []),
output: {
file: opts.dest,
format: opts.format,
banner: opts.banner,
name: opts.moduleName
}
}
const replacePluginOptions = {'__VERSION__': pack.version}
if (opts.env) {
replacePluginOptions['process.env.NODE_ENV'] = JSON.stringify(opts.env)
}
config.plugins.push(replace(replacePluginOptions))
Object.defineProperty(config, '_name', {
enumerable: false,
value: name
})
return config
}
if (process.env.TARGET) {
module.exports = genConfig(process.env.TARGET)
} else {
exports.getBuild = genConfig
exports.getAllBuilds = () => Object.keys(builds).map(genConfig)
}