forked from js-cookie/js-cookie
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGruntfile.js
112 lines (105 loc) · 2.64 KB
/
Gruntfile.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
function encodingMiddleware (request, response, next) {
const URL = require('url').URL
const url = new URL(request.url, 'http://localhost')
if (url.pathname !== '/encoding') {
next()
return
}
const cookieName = url.searchParams.get('name')
const cookieValue = url.searchParams.get('value')
response.setHeader('content-type', 'application/json')
response.end(
JSON.stringify({
name: cookieName,
value: cookieValue
})
)
}
const config = {
qunit: {
all: {
options: {
urls: [
'http://127.0.0.1:9998/',
'http://127.0.0.1:9998/module.html',
'http://127.0.0.1:9998/encoding.html?integration_baseurl=http://127.0.0.1:9998/'
]
}
}
},
nodeunit: {
all: 'test/node.js'
},
watch: {
options: {
livereload: true
},
files: ['src/**/*.mjs', 'test/**/*.js'],
tasks: 'default'
},
compare_size: {
files: [
'dist/js.cookie.mjs',
'dist/js.cookie.min.mjs',
'dist/js.cookie.js',
'dist/js.cookie.min.js'
],
options: {
compress: {
gz: (fileContents) => require('gzip-js').zip(fileContents, {}).length
}
}
},
connect: {
'build-qunit': {
options: {
port: 9998,
base: ['.', 'test'],
middleware: function (connect, options, middlewares) {
middlewares.unshift(encodingMiddleware)
return middlewares
}
}
},
tests: {
options: {
port: 10000,
base: ['.', 'test'],
open: 'http://127.0.0.1:10000',
keepalive: true,
livereload: true,
middleware: function (connect, options, middlewares) {
middlewares.unshift(encodingMiddleware)
return middlewares
}
}
}
},
exec: {
rollup: 'npx rollup -c',
lint: 'npx standard',
format:
'npx prettier -l --write --single-quote --no-semi "**/*.{html,js,json,md,mjs,yml}" && npx eslint "**/*.{html,md}" --fix && npx standard --fix',
'browserstack-runner': 'node_modules/.bin/browserstack-runner --verbose'
}
}
module.exports = function (grunt) {
grunt.initConfig(config)
// Load dependencies
Object.keys(grunt.file.readJSON('package.json').devDependencies)
.filter((key) => key !== 'grunt' && key.startsWith('grunt'))
.forEach(grunt.loadNpmTasks)
grunt.registerTask('test', [
'exec:lint',
'exec:rollup',
'connect:build-qunit',
'qunit',
'nodeunit'
])
grunt.registerTask('browserstack', [
'exec:rollup',
'exec:browserstack-runner'
])
grunt.registerTask('dev', ['exec:format', 'test', 'compare_size'])
grunt.registerTask('default', 'dev')
}