-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathindex.js
More file actions
60 lines (49 loc) · 1.65 KB
/
index.js
File metadata and controls
60 lines (49 loc) · 1.65 KB
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
var loaderUtils = require('loader-utils');
var htmlMinifier = require('html-minifier');
var path = require('path');
var jsesc = require('jsesc');
module.exports = function (source) {
if (this.resource === undefined) {
throw new Error('resource is not provided');
}
var separator = '/';
var query = loaderUtils.parseQuery(this.query);
var resourcePath;
var context = this.options && this.options.context;
var root = context || process.cwd();
var outputPath;
var outputSource = '';
var prefix = query.prefix || '';
var module = query.module ? query.module : 'ng';
// Change separators to unix style
prefix = prefix.replace(/\\/g, separator);
resourcePath = this.resource.replace(/\\/g, separator);
root = root.replace(/\\/g, separator);
if (prefix) {
outputPath = prefix + resourcePath.replace(root, '');
} else {
outputPath = resourcePath.replace(root, '').slice(1);
}
this.cacheable && this.cacheable();
if (source) {
outputSource = htmlMinifier.minify(source, {
removeComments: true,
removeCommentsFromCDATA: true,
removeCDATASectionsFromCDATA: true,
collapseWhitespace: true,
collapseBooleanAttributes: true,
removeAttributeQuotes: true,
useShortDoctype: true,
removeEmptyAttributes: true,
removeOptionalTags: true,
minifyJS: true,
minifyCSS: true
});
}
var escapedOutput = jsesc(outputSource);
return "var v1='" + escapedOutput + "';\n" +
"angular.module('" + module + "').run(['$templateCache', function ($templateCache) {" +
"$templateCache.put('" + outputPath + "', v1);"+
"}]);\n" +
"module.exports=v1";
}