From d8ddcaf2da9c5ea25d6e318253f05e797aa07e5c Mon Sep 17 00:00:00 2001 From: Andreas Pizsa Date: Thu, 8 Nov 2018 07:04:58 +0100 Subject: [PATCH] fix: Treat webmanifest as an entry module (#2254) --- .../parcel-bundler/src/assets/HTMLAsset.js | 14 +++++++++++++ packages/core/parcel-bundler/test/html.js | 20 +++++++++++++++++++ .../test/integration/html-manifest/index.html | 8 ++++++++ .../html-manifest/manifest.webmanifest | 3 +++ packages/core/workers/test/mocha.opts | 3 ++- 5 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 packages/core/parcel-bundler/test/integration/html-manifest/index.html create mode 100644 packages/core/parcel-bundler/test/integration/html-manifest/manifest.webmanifest diff --git a/packages/core/parcel-bundler/src/assets/HTMLAsset.js b/packages/core/parcel-bundler/src/assets/HTMLAsset.js index 1e561c7436c..e2646c7fbee 100644 --- a/packages/core/parcel-bundler/src/assets/HTMLAsset.js +++ b/packages/core/parcel-bundler/src/assets/HTMLAsset.js @@ -153,6 +153,20 @@ class HTMLAsset extends Asset { } } + if ( + node.tag === 'link' && + node.attrs.rel === 'manifest' && + node.attrs.href + ) { + node.attrs.href = this.getAttrDepHandler('href').call( + this, + node.attrs.href, + {entry: true} + ); + this.isAstDirty = true; + return node; + } + for (let attr in node.attrs) { let elements = ATTRS[attr]; // Check for virtual paths diff --git a/packages/core/parcel-bundler/test/html.js b/packages/core/parcel-bundler/test/html.js index b5574abf088..86576636b2e 100644 --- a/packages/core/parcel-bundler/test/html.js +++ b/packages/core/parcel-bundler/test/html.js @@ -591,6 +591,26 @@ describe('html', function() { }); }); + it("should treat webmanifest as an entry module so it doesn't get content hashed", async function() { + const b = await bundle( + path.join(__dirname, '/integration/html-manifest/index.html') + ); + + await assertBundleTree(b, { + name: 'index.html', + assets: ['index.html'], + childBundles: [ + { + type: 'webmanifest', + assets: ['manifest.webmanifest'] + } + ] + }); + + const html = await fs.readFile(path.join(__dirname, '/dist/index.html')); + assert(html.includes('')); + }); + it('should bundle svg files correctly', async function() { let b = await bundle( path.join(__dirname, '/integration/html-svg/index.html') diff --git a/packages/core/parcel-bundler/test/integration/html-manifest/index.html b/packages/core/parcel-bundler/test/integration/html-manifest/index.html new file mode 100644 index 00000000000..eee9d552a13 --- /dev/null +++ b/packages/core/parcel-bundler/test/integration/html-manifest/index.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/packages/core/parcel-bundler/test/integration/html-manifest/manifest.webmanifest b/packages/core/parcel-bundler/test/integration/html-manifest/manifest.webmanifest new file mode 100644 index 00000000000..17971333806 --- /dev/null +++ b/packages/core/parcel-bundler/test/integration/html-manifest/manifest.webmanifest @@ -0,0 +1,3 @@ +{ + +} diff --git a/packages/core/workers/test/mocha.opts b/packages/core/workers/test/mocha.opts index 25e899b94a7..829b5e4370c 100644 --- a/packages/core/workers/test/mocha.opts +++ b/packages/core/workers/test/mocha.opts @@ -1,2 +1,3 @@ --require @parcel/babel-register ---exit \ No newline at end of file +--exit +--timeout 20s