Skip to content

Commit a4ea661

Browse files
Portugal, Marcelomportuga
authored andcommitted
chore(packages): add build steps for scoped packages
1 parent d2a2233 commit a4ea661

File tree

7 files changed

+103
-29
lines changed

7 files changed

+103
-29
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,10 @@ var
167167
sdist
168168
develop-eggs
169169
.installed.cfg
170+
packages/**/*.css
171+
packages/**/ui-grid.*.js
172+
packages/**/LICENSE.md
173+
packages/**/.npmignore
170174

171175
# Installer logs
172176
pip-log.txt

grunt/aliases.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ module.exports = function (grunt, options) {
55

66
// register before and after test tasks so we don't have to change cli
77
// options on the CI server
8-
'before-test': ['clean', 'newer:jshint', 'newer:jscs', 'ngtemplates', 'less', 'copy:font_dist'], // Have to run less so CSS files are present
8+
'before-test': ['clean', 'newer:jshint', 'newer:jscs', 'ngtemplates', 'less', 'copy:font_dist', 'copy:js_dist'], // Have to run less so CSS files are present
99
'after-test': ['build'],
1010
'default': ['before-test', 'test:single', 'after-test'],
1111

1212
// Build with no testing
13-
'build': ['ngtemplates', 'concat', 'uglify', 'less', 'uidocs-generator', 'copy:font_dist', 'copy:site', 'copy:less_customizer',],
13+
'build': ['ngtemplates', 'concat', 'uglify', 'less', 'uidocs-generator', 'copy:font_dist', 'copy:js_dist', 'copy:site', 'copy:less_customizer',],
1414
'build:less_dist': ['copy:less_dist', 'replace:less_dist'],
1515

1616
// Auto-test tasks for development

grunt/clean.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
module.exports =
22
// Clean the temp directory
3-
['.tmp', '<%= dist %>', 'docs', 'coverage']
3+
['.tmp', '<%= dist %>', 'docs', 'coverage',
4+
'packages/*/.npmignore', 'packages/*/LICENSE.md',
5+
'packages/*/*.css', 'packages/*/*.js']
46
;

grunt/concat.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,21 @@ const getLanguages = p => fs.readdirSync(p).filter(f => fs.statSync(path.join(p,
77
function getFiles() {
88
const files = {
99
'<%= dist %>/release/<%= pkg.name %>.js': ['packages/core/src/js/bootstrap.js', 'packages/**/src/js/**/*.js', '.tmp/template.js'],
10-
'<%= dist %>/release/<%= pkg.name %>.core.js': ['src/js/core/bootstrap.js', 'packages/core/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']
1111
};
1212
const packages = getDirectories('packages/');
1313

1414
packages.forEach((feat) => {
1515
if (feat === 'i18n') {
1616
const languages = getLanguages('packages/i18n/src/js/');
1717

18-
files['<%= dist %>/release/i18n/<%= pkg.name %>.language.all.js'] = languages.map((lang) => `packages/i18n/src/js/${lang}`);
18+
files['packages/i18n/<%= pkg.name %>.language.all.js'] = languages.map((lang) => `packages/i18n/src/js/${lang}`);
1919

2020
languages.forEach((lang) => {
21-
files[`<%= dist %>/release/i18n/<%= pkg.name %>.language.${lang}`] = [`packages/i18n/src/js/${lang}`];
21+
files[`packages/i18n/<%= pkg.name %>.language.${lang}`] = [`packages/i18n/src/js/${lang}`];
2222
});
2323
} else if (feat !== 'core') {
24-
files[`<%= dist %>/release/<%= pkg.name %>.${feat}.js`] = [`packages/${feat}/src/js/**/*.js`];
24+
files[`packages/${feat}/<%= pkg.name %>.${feat}.js`] = [`packages/${feat}/src/js/**/*.js`];
2525
}
2626
});
2727

grunt/copy.js

Lines changed: 54 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,33 @@
1-
var util = require('../lib/grunt/utils.js');
2-
var semver = require('semver');
3-
var currentTag = semver.clean( util.getCurrentTag() );
1+
const fs = require('fs');
2+
const path = require('path');
3+
const util = require('../lib/grunt/utils.js');
4+
const semver = require('semver');
5+
const currentTag = semver.clean(util.getCurrentTag());
6+
7+
const getDirectories = p => fs.readdirSync(p).filter(f => fs.statSync(path.join(p, f)).isDirectory());
8+
49
module.exports = function ( grunt ) {
10+
function getPackagesFiles() {
11+
const packages = getDirectories('packages/');
12+
13+
const npmIgnoreFiles = packages.map(function(feat) {
14+
return {
15+
flatten: true,
16+
src: 'misc/publish/.npmignore',
17+
dest: `packages/${feat}/.npmignore`
18+
}
19+
});
20+
21+
const licenseFiles = packages.map(function(feat) {
22+
return {
23+
flatten: true,
24+
src: 'LICENSE.md',
25+
dest: `packages/${feat}/LICENSE.md`
26+
}
27+
});
28+
29+
return npmIgnoreFiles.concat(licenseFiles);
30+
}
531
return {
632
site: {
733
options: {
@@ -56,6 +82,28 @@ module.exports = function ( grunt ) {
5682
}
5783
]
5884
},
85+
js_dist: {
86+
files: [
87+
{
88+
expand: true,
89+
flatten: true,
90+
cwd: 'packages',
91+
src: '*/*.js',
92+
dest: '<%= dist %>/release',
93+
filter: function(filepath) {
94+
return !filepath.includes('packages/i18n')
95+
}
96+
},
97+
{
98+
expand: true,
99+
flatten: true,
100+
cwd: 'packages',
101+
src: '*/*.js',
102+
dest: '<%= dist %>/release/i18n',
103+
filter: 'isFile'
104+
}
105+
]
106+
},
59107
i18n_cut_release: {
60108
files: [
61109
{
@@ -121,6 +169,9 @@ module.exports = function ( grunt ) {
121169
dest: '<%= dist %>/release/' + currentTag + '/less'
122170
}
123171
]
172+
},
173+
packages_publish: {
174+
files: getPackagesFiles()
124175
}
125176
};
126177
};

grunt/less.js

Lines changed: 34 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,47 @@
1+
const fs = require('fs');
2+
const path = require('path');
3+
4+
const getDirectories = p => fs.readdirSync(p)
5+
.filter(f => fs.statSync(path.join(p, f)).isDirectory() && fs.existsSync(path.join(p, f, 'less')));
6+
7+
function filterCoreLessFiles(filepath) {
8+
return filepath === 'packages/core/less/main.less' || !filepath.includes('packages/core/less/');
9+
}
10+
11+
function getFiles(compress) {
12+
const suffix = compress ? 'min.css' : 'css';
13+
const files = [
14+
{
15+
src: ['packages/core/less/main.less', 'packages/*/less/**/*.less', '.tmp/font/ui-grid-codes.css'],
16+
dest: `dist/release/<%= pkg.name %>.${suffix}`,
17+
filter: filterCoreLessFiles
18+
}
19+
];
20+
const packages = getDirectories('packages/');
21+
22+
packages.forEach((feat) => {
23+
files.push({
24+
src: `packages/${feat}/less/*.less`,
25+
dest: `packages/${feat}/<%= pkg.name %>.${feat}.${suffix}`,
26+
filter: filterCoreLessFiles
27+
});
28+
});
29+
30+
return files;
31+
}
32+
133
module.exports = {
234
dist: {
3-
// paths: ['/bower_components/bootstrap'],
435
options: {
536
banner: '<%= banner %>'
637
},
7-
files: [
8-
{
9-
src: ['packages/core/less/main.less', 'packages/*/less/**/*.less', '.tmp/font/ui-grid-codes.css'],
10-
dest: 'dist/release/<%= pkg.name %>.css',
11-
filter: function(filepath) {
12-
return filepath === 'packages/core/less/main.less' || !filepath.includes('packages/core/less/');
13-
}
14-
}
15-
]
38+
files: getFiles()
1639
},
1740
min: {
1841
options: {
1942
banner: '<%= banner %>',
2043
compress: true
2144
},
22-
files: [
23-
{
24-
src: ['packages/core/less/main.less', 'packages/*/less/**/*.less', '.tmp/font/ui-grid-codes.css'],
25-
dest: 'dist/release/<%= pkg.name %>.min.css',
26-
filter: function(filepath) {
27-
return filepath === 'packages/core/less/main.less' || !filepath.includes('packages/core/less/');
28-
}
29-
}
30-
]
45+
files: getFiles(true)
3146
}
3247
};

misc/publish/.npmignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
src/
2+
test/

0 commit comments

Comments
 (0)