-
Notifications
You must be signed in to change notification settings - Fork 0
/
Gruntfile.js
50 lines (44 loc) · 1.17 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
module.exports = function( grunt ) {
const path = require('path');
const fs = require('fs');
let package_json = JSON.parse(fs.readFileSync('./package.json', 'utf8'));
var buildFilesAndDirs = [
'./**',
'!./assets/**',
'./assets/dist/**',
'!./dist/**',
'!./node_modules/**',
'!./composer.json',
'!./composer.lock',
'!./package.json',
'!./package-lock.json',
'!./Gruntfile.js',
'!./webpack.config.js'
];
var skipExtensionsOnBuild = ['.scss', '.map'];
grunt.initConfig({
zip: {
'skip-files': {
router: function (filepath) {
var extname = path.extname(filepath);
if (skipExtensionsOnBuild.indexOf(extname) != -1) {
return null;
}
return filepath;
},
src: buildFilesAndDirs,
dest: 'dist/' + package_json.name + '.zip'
}
},
});
// Load required grunt/node modules
grunt.loadNpmTasks('grunt-zip');
// run webpack prod command
grunt.registerTask('webpack-prod', '', function () {
var exec = require('child_process').execSync;
var result = exec("npm run prod", { encoding: 'utf8' });
grunt.log.writeln(result);
});
// zip the files
grunt.registerTask('zip-prod', ['webpack-prod', 'zip'] );
};