MCPcopy Index your code
hub / github.com/ampproject/amphtml / buildExtension

Function buildExtension

build-system/tasks/extension-helpers.js:418–454  ·  view source on GitHub ↗

* Copies extensions from * extensions/$name/$version/$name.js * to * dist/v0/$name-$version.js * * Optionally copies the CSS at extensions/$name/$version/$name.css into * a generated JS file that can be required from the extensions as * `import {CSS} from '../../../build/$name-0.1.css';` *

(name, version, hasCss, options)

Source from the content-addressed store, hash-verified

416 * @return {!Promise<void>}
417 */
418async function buildExtension(name, version, hasCss, options) {
419 options = options || {};
420 if (options.compileOnlyCss && !hasCss) {
421 return;
422 }
423 const extDir = 'extensions/' + name + '/' + version;
424
425 // Use a separate watcher for css and jison compilation.
426 // The watcher within compileJs recompiles the JS.
427 if (options.watch) {
428 await watchExtension(extDir, name, version, hasCss, options);
429 }
430
431 if (hasCss) {
432 await buildExtensionCss(extDir, name, version);
433 if (options.compileOnlyCss) {
434 return;
435 }
436 }
437
438 await compileJison(`${extDir}/**/*.jison`);
439 if (name === 'amp-bind') {
440 await doBuildJs(jsBundles, 'ww.max.js', options);
441 }
442 if (options.binaries) {
443 await buildBinaries(extDir, options.binaries, options);
444 }
445 if (name === 'amp-analytics') {
446 await analyticsVendorConfigs(options);
447 }
448
449 if (options.isRebuild) {
450 return;
451 }
452
453 await buildExtensionJs(extDir, name, {...options, bento: false});
454}
455
456/**
457 * @param {string} extDir

Callers 2

doBuildExtensionFunction · 0.85
watchFuncFunction · 0.85

Calls 7

watchExtensionFunction · 0.85
buildExtensionCssFunction · 0.85
compileJisonFunction · 0.85
doBuildJsFunction · 0.85
buildBinariesFunction · 0.85
analyticsVendorConfigsFunction · 0.85
buildExtensionJsFunction · 0.85

Tested by

no test coverage detected