Skip to content

Commit 9c99618

Browse files
Portugal, Marcelomportuga
authored andcommitted
chore(template): only load templates needed for each feature
Updated the individual files to ensure they each only load the templates that they require.
1 parent a4ea661 commit 9c99618

File tree

4 files changed

+94
-47
lines changed

4 files changed

+94
-47
lines changed

grunt/concat.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@ const path = require('path');
33

44
const getDirectories = p => fs.readdirSync(p).filter(f => fs.statSync(path.join(p, f)).isDirectory());
55
const getLanguages = p => fs.readdirSync(p).filter(f => fs.statSync(path.join(p, f)).isFile());
6+
const getTemplateDirectories = p => fs.readdirSync(p)
7+
.filter(f => fs.statSync(path.join(p, f)).isDirectory() && fs.existsSync(path.join(p, f, 'src/templates')));
8+
const templateDirectories = getTemplateDirectories('packages/');
69

710
function getFiles() {
811
const files = {
912
'<%= dist %>/release/<%= pkg.name %>.js': ['packages/core/src/js/bootstrap.js', 'packages/**/src/js/**/*.js', '.tmp/template.js'],
10-
'packages/core/<%= pkg.name %>.core.js': ['src/js/core/bootstrap.js', 'packages/core/src/js/**/*.js', '.tmp/template.js']
13+
'packages/core/<%= pkg.name %>.core.js': ['src/js/core/bootstrap.js', 'packages/core/src/js/**/*.js', '.tmp/template-core.js']
1114
};
1215
const packages = getDirectories('packages/');
1316

@@ -21,7 +24,13 @@ function getFiles() {
2124
files[`packages/i18n/<%= pkg.name %>.language.${lang}`] = [`packages/i18n/src/js/${lang}`];
2225
});
2326
} else if (feat !== 'core') {
24-
files[`packages/${feat}/<%= pkg.name %>.${feat}.js`] = [`packages/${feat}/src/js/**/*.js`];
27+
let src = [`packages/${feat}/src/js/**/*.js`];
28+
29+
if (templateDirectories.includes(feat)) {
30+
src.push(`.tmp/template-${feat}.js`);
31+
}
32+
33+
files[`packages/${feat}/<%= pkg.name %>.${feat}.js`] = src;
2534
}
2635
});
2736

grunt/ngtemplates.js

Lines changed: 51 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,53 @@
1-
module.exports = {
2-
'uigrid': {
3-
// Look for templates in src and in feature template directories
4-
src: ['packages/*/src/templates/**/*.html'],
5-
dest: '.tmp/template.js',
6-
options: {
7-
module: 'ui.grid',
8-
htmlmin: { collapseWhitespace: true, collapseBooleanAttributes: true },
9-
// Strip .html extension
10-
url: function(url) {
11-
// Remove the packages/feature/src/templates/ prefix
12-
url = url.replace(/^packages\/[^\/]+?\/src\/templates\/ui-grid/, 'ui-grid');
13-
14-
// Replace feature prefix with just 'ui-grid'
15-
url = url.replace(/^packages\/[^\/]+?\/src\/templates/, 'ui-grid');
16-
17-
// Remove the .html extension
18-
return url.replace('.html', '');
1+
const fs = require('fs');
2+
const path = require('path');
3+
const _ = require('lodash');
4+
5+
const getDirectories = p => fs.readdirSync(p)
6+
.filter(f => fs.statSync(path.join(p, f)).isDirectory() && fs.existsSync(path.join(p, f, 'src/templates')));
7+
8+
const htmlmin = {collapseWhitespace: true, collapseBooleanAttributes: true};
9+
10+
// Strip .html extension
11+
function getUrl(url) {
12+
// Remove the packages/feature/src/templates/ prefix
13+
url = url.replace(/^packages\/[^\/]+?\/src\/templates\/ui-grid/, 'ui-grid');
14+
15+
// Replace feature prefix with just 'ui-grid'
16+
url = url.replace(/^packages\/[^\/]+?\/src\/templates/, 'ui-grid');
17+
18+
// Remove the .html extension
19+
return url.replace('.html', '');
20+
}
21+
22+
function getTemplatesConfig() {
23+
let templatesConfig = {
24+
uigrid: {
25+
// Look for templates in packages directories
26+
src: ['packages/*/src/templates/**/*.html'],
27+
dest: '.tmp/template.js',
28+
options: {
29+
module: 'ui.grid',
30+
htmlmin,
31+
url: getUrl
1932
}
2033
}
21-
}
22-
};
34+
};
35+
36+
const packages = getDirectories('packages/');
37+
38+
packages.forEach((feat) => {
39+
templatesConfig[`uigrid-${feat}`] = {
40+
src: [`packages/${feat}/src/templates/**/*.html`],
41+
dest: `.tmp/template-${feat}.js`,
42+
options: {
43+
module: feat === 'core' ? 'ui.grid' : `ui.grid.${_.camelCase(feat)}`,
44+
htmlmin,
45+
url: getUrl
46+
}
47+
};
48+
});
49+
50+
return templatesConfig;
51+
}
52+
53+
module.exports = getTemplatesConfig();

package-lock.json

Lines changed: 31 additions & 25 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
"karma-script-launcher": "~1.0.0",
7676
"less": "^3.8.0",
7777
"load-grunt-config": "^0.19.2",
78+
"lodash": "^4.17.11",
7879
"marked": "^0.4.0",
7980
"phantomjs-prebuilt": "^2.1.16",
8081
"protractor": "^5.4.0",

0 commit comments

Comments
 (0)