Skip to content

Commit 9c9769e

Browse files
committed
fix(build): copy files that are included in html files to the same folder
This is e.g. needed to allow Dart benchmarks to be served via `pub`
1 parent 81a5ae8 commit 9c9769e

File tree

3 files changed

+31
-66
lines changed

3 files changed

+31
-66
lines changed

gulpfile.js

Lines changed: 14 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,14 @@ var _COMPILER_CONFIG_JS_DEFAULT = {
3535
};
3636

3737
var _HTLM_DEFAULT_SCRIPTS_JS = [
38-
{src: '../../traceur-runtime.js', mimeType: 'text/javascript'},
39-
{src: '../../es6-module-loader-sans-promises.src.js', mimeType: 'text/javascript'},
40-
{src: '../../zone.js', mimeType: 'text/javascript'},
41-
{src: '../../long-stack-trace-zone.js', mimeType: 'text/javascript'},
42-
{src: '../../system.src.js', mimeType: 'text/javascript'},
43-
{src: '../../extension-register.js', mimeType: 'text/javascript'},
44-
{src: '../../runtime_paths.js', mimeType: 'text/javascript'},
38+
{src: gulpTraceur.RUNTIME_PATH, mimeType: 'text/javascript', copy: true},
39+
{src: 'node_modules/es6-module-loader/dist/es6-module-loader-sans-promises.src.js',
40+
mimeType: 'text/javascript', copy: true},
41+
{src: 'node_modules/zone.js/zone.js', mimeType: 'text/javascript', copy: true},
42+
{src: 'node_modules/zone.js/long-stack-trace-zone.js', mimeType: 'text/javascript', copy: true},
43+
{src: 'node_modules/systemjs/dist/system.src.js', mimeType: 'text/javascript', copy: true},
44+
{src: 'node_modules/systemjs/lib/extension-register.js', mimeType: 'text/javascript', copy: true},
45+
{src: 'tools/build/snippets/runtime_paths.js', mimeType: 'text/javascript', copy: true},
4546
{
4647
inline: 'System.import(\'$MODULENAME$\').then(function(m) { m.main(); }, console.error.bind(console))',
4748
mimeType: 'text/javascript'
@@ -87,18 +88,6 @@ var SRC_FOLDER_INSERTION = {
8788
}
8889
};
8990

90-
var ES5_DEPS = [
91-
gulpTraceur.RUNTIME_PATH,
92-
'node_modules/es6-module-loader/dist/es6-module-loader-sans-promises.src.js',
93-
'node_modules/systemjs/dist/system.src.js',
94-
'node_modules/systemjs/lib/extension-register.js',
95-
'node_modules/zone.js/zone.js',
96-
'node_modules/zone.js/long-stack-trace-zone.js',
97-
'tools/build/snippets/runtime_paths.js',
98-
'tools/build/snippets/url_params_to_form.js',
99-
'node_modules/angular/angular.js'
100-
];
101-
10291
var CONFIG = {
10392
dest: {
10493
js: {
@@ -194,26 +183,13 @@ var CONFIG = {
194183
es6: {
195184
src: ['tools/build/es5build.js'],
196185
pipes: {}
197-
},
198-
es5: {
199-
src: ES5_DEPS,
200-
pipes: {}
201186
}
202187
},
203188
prod: {
204189
es6: {
205190
src: ['tools/build/es5build.js'],
206191
pipes: {}
207-
},
208-
es5: {
209-
src: ES5_DEPS,
210-
pipes: {}
211192
}
212-
},
213-
dart2js: {
214-
src: ['tools/build/snippets/url_params_to_form.js'],
215-
exclude: ['rtts_assert/'],
216-
pipes: {}
217193
}
218194
},
219195
dart: {
@@ -232,19 +208,19 @@ var CONFIG = {
232208
'**': _HTLM_DEFAULT_SCRIPTS_JS,
233209
'benchmarks/**':
234210
[
235-
{ src: '../../url_params_to_form.js', mimeType: 'text/javascript' }
211+
{ src: 'tools/build/snippets/url_params_to_form.js', mimeType: 'text/javascript', copy: true }
236212
].concat(_HTLM_DEFAULT_SCRIPTS_JS),
237213
'benchmarks_external/**':
238214
[
239-
{ src: '../../angular.js', mimeType: 'text/javascript' },
240-
{ src: '../../url_params_to_form.js', mimeType: 'text/javascript' }
215+
{ src: 'node_modules/angular/angular.js', mimeType: 'text/javascript', copy: true },
216+
{ src: 'tools/build/snippets/url_params_to_form.js', mimeType: 'text/javascript', copy: true }
241217
].concat(_HTLM_DEFAULT_SCRIPTS_JS)
242218
},
243219
dart: {
244220
'**': _HTML_DEFAULT_SCRIPTS_DART,
245221
'benchmarks*/**':
246222
[
247-
{ src: '../../url_params_to_form.js', mimeType: 'text/javascript' }
223+
{ src: 'tools/build/snippets/url_params_to_form.js', mimeType: 'text/javascript', copy: true }
248224
].concat(_HTML_DEFAULT_SCRIPTS_DART)
249225
}
250226
}
@@ -407,42 +383,20 @@ gulp.task('build/multicopy.js.dev.es6', copy.multicopy(gulp, gulpPlugins, {
407383
dest: CONFIG.dest.js.dev.es6
408384
}));
409385

410-
gulp.task('build/multicopy.js.dev.es5', copy.multicopy(gulp, gulpPlugins, {
411-
src: CONFIG.multicopy.js.dev.es5.src,
412-
pipes: CONFIG.multicopy.js.dev.es5.pipes,
413-
exclude: CONFIG.multicopy.js.dev.es5.exclude,
414-
dest: CONFIG.dest.js.dev.es5
415-
}));
416-
417386
gulp.task('build/multicopy.js.prod.es6', copy.multicopy(gulp, gulpPlugins, {
418387
src: CONFIG.multicopy.js.prod.es6.src,
419388
pipes: CONFIG.multicopy.js.prod.es6.pipes,
420389
exclude: CONFIG.multicopy.js.prod.es6.exclude,
421390
dest: CONFIG.dest.js.prod.es6
422391
}));
423392

424-
gulp.task('build/multicopy.js.prod.es5', copy.multicopy(gulp, gulpPlugins, {
425-
src: CONFIG.multicopy.js.prod.es5.src,
426-
pipes: CONFIG.multicopy.js.prod.es5.pipes,
427-
exclude: CONFIG.multicopy.js.prod.es5.exclude,
428-
dest: CONFIG.dest.js.prod.es5
429-
}));
430-
431393
gulp.task('build/multicopy.dart', copy.multicopy(gulp, gulpPlugins, {
432394
src: CONFIG.multicopy.dart.src,
433395
pipes: CONFIG.multicopy.dart.pipes,
434396
exclude: CONFIG.multicopy.dart.exclude,
435397
dest: CONFIG.dest.dart
436398
}));
437399

438-
gulp.task('build/multicopy.js.dart2js', copy.multicopy(gulp, gulpPlugins, {
439-
src: CONFIG.multicopy.js.dart2js.src,
440-
pipes: CONFIG.multicopy.js.dart2js.pipes,
441-
exclude: CONFIG.multicopy.js.dart2js.exclude,
442-
dest: CONFIG.dest.js.dart2js
443-
}));
444-
445-
446400
// ------------
447401
// pubspec
448402

@@ -640,23 +594,20 @@ gulp.task('build.dart', function(done) {
640594
'build/packages.dart',
641595
'build/analyze.dart',
642596
'build/pubbuild.dart',
643-
// Note: pubbuild.dart will clear the dart2js folder, so we need to copy
644-
// our files after this :-(
645-
'build/multicopy.js.dart2js',
646597
done
647598
);
648599
});
649600

650601
gulp.task('build.js.dev', function(done) {
651602
runSequence(
652-
['build/transpile.js.dev', 'build/html.js.dev', 'build/copy.js.dev', 'build/multicopy.js.dev.es6', 'build/multicopy.js.dev.es5'],
603+
['build/transpile.js.dev', 'build/html.js.dev', 'build/copy.js.dev', 'build/multicopy.js.dev.es6'],
653604
done
654605
);
655606
});
656607

657608
gulp.task('build.js.prod', function(done) {
658609
runSequence(
659-
['build/transpile.js.prod', 'build/html.js.prod', 'build/copy.js.prod', 'build/multicopy.js.prod.es6', 'build/multicopy.js.prod.es5'],
610+
['build/transpile.js.prod', 'build/html.js.prod', 'build/copy.js.prod', 'build/multicopy.js.prod.es6'],
660611
done
661612
);
662613
});

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
"selenium-webdriver": "2.x.x"
3434
},
3535
"devDependencies": {
36-
"temp": "^0.8.1",
3736
"angular": "1.3.5",
3837
"bower": "^1.3.12",
3938
"canonical-path": "0.0.2",
@@ -68,8 +67,10 @@
6867
"run-sequence": "^0.3.6",
6968
"source-map": "^0.3.0",
7069
"sprintf-js": "1.0.*",
70+
"temp": "^0.8.1",
7171
"ternary-stream": "^1.2.3",
7272
"through2": "^0.6.1",
73+
"vinyl": "^0.4.6",
7374
"yargs": "2.3.*"
7475
}
7576
}

tools/build/html.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ var util = require('./util');
22
var file2moduleName = require('./file2modulename');
33
var through2 = require('through2');
44
var path = require('path');
5+
var fs = require('fs');
6+
var VinylFile = require('vinyl');
57

68
module.exports = function(gulp, plugins, config) {
79
return function() {
@@ -11,10 +13,21 @@ module.exports = function(gulp, plugins, config) {
1113
var fileName = file.relative;
1214
var moduleName = file2moduleName(fileName);
1315
var moduleNameWithoutPath = path.basename(moduleName);
16+
var self = this;
1417
var scripts = util.filterByFile(config.scriptsPerFolder, fileName).map(function(script) {
1518
var scriptTag;
16-
if (script.src) {
17-
scriptTag = '<script src="'+script.src+'" type="'+script.mimeType+'"></script>';
19+
var scriptSrc = script.src;
20+
if (script.copy) {
21+
scriptSrc = path.basename(script.src);
22+
self.push(new VinylFile({
23+
cwd: file.cwd,
24+
base: file.base,
25+
path: path.join(path.dirname(file.path), scriptSrc),
26+
contents: fs.readFileSync(script.src)
27+
}));
28+
};
29+
if (scriptSrc) {
30+
scriptTag = '<script src="'+scriptSrc+'" type="'+script.mimeType+'"></script>';
1831
} else {
1932
scriptTag = '<script type="'+script.mimeType+'">'+script.inline+'</script>';
2033
}

0 commit comments

Comments
 (0)