-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathrollup.config.js
90 lines (81 loc) · 1.85 KB
/
rollup.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
/* eslint no-console: 0 */
const fs = require('fs')
const path = require('path')
const babel = require('rollup-plugin-babel')
const vue = require('rollup-plugin-vue')
const replace = require('rollup-plugin-replace')
const sass = require('node-sass')
const autoprefixer = require('autoprefixer')
const postcss = require('postcss')
const meta = require('./package.json')
if (!fs.existsSync('dist')) {
fs.mkdirSync('dist')
}
const prefixer = postcss([
autoprefixer({
browsers: ['> 1%', 'last 2 versions', 'IE >= 9']
})
])
const banner = `/*!
* ${meta.name} v${meta.version}
* ${meta.homepage}
*
* @license
* Copyright (c) 2016 ${meta.author}
* Released under the MIT license
* ${meta.homepage}/blob/master/LICENSE
*/`
const name = 'VuexToast'
const plugins = [
vue({
compileTemplate: true,
css: !process.env.NODE_ENV && (styles => {
const out = path.resolve(__dirname, './dist/vuex-toast.css')
// compile scss
sass.render({
data: styles,
outputStyle: 'expanded',
outFile: out
}, (error, result) => {
if (error) {
console.error(formatSassError(error))
return
}
// autoprefixer
prefixer.process(result.css, { from: undefined }).then(result => {
result.warnings().forEach(warn => {
console.warn(warn.toString())
})
fs.writeFile(out, result.css)
})
})
})
}),
babel({
exclude: 'node_modules/**'
})
]
if (process.env.NODE_ENV) {
plugins.push(
replace({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
})
)
}
module.exports = {
input: 'src/index.js',
plugins,
output: {
name,
banner,
globals: {
vuex: 'Vuex'
}
},
external: [
'vuex'
]
}
function formatSassError(e) {
return `[${e.line}:${e.column}] ${e.message} (${e.file})`
}