From 1163a443956838acac0ec4d5a157334e5ec801d5 Mon Sep 17 00:00:00 2001 From: Van Nguyen Date: Tue, 22 Oct 2019 17:13:50 +1100 Subject: [PATCH 01/11] Use this.emitFile to generate css files --- README.md | 7 ++++--- index.js | 38 +++++++++++++------------------------- package-lock.json | 23 ++++++++++++----------- package.json | 4 ++-- 4 files changed, 31 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index 5755824..126f306 100644 --- a/README.md +++ b/README.md @@ -59,9 +59,10 @@ export default { console.log(css.code); // the concatenated CSS console.log(css.map); // a sourcemap - // creates `main.css` and `main.css.map` — pass `false` - // as the second argument if you don't want the sourcemap - css.write('public/main.css'); + // creates `main.css` and `main.css.map` + // using a falsy name will default to the bundle name + // — pass `false` as the second argument if you don't want the sourcemap + css.write('main.css'); }, // Warnings are normally passed straight to Rollup. You can diff --git a/index.js b/index.js index 0d52cfb..682854a 100644 --- a/index.js +++ b/index.js @@ -64,22 +64,10 @@ function exists(file) { } } -function mkdirp(dir) { - const parent = path.dirname(dir); - if (parent === dir) return; - - mkdirp(parent); - - try { - fs.mkdirSync(dir); - } catch (err) { - if (err.code !== 'EEXIST') throw err; - } -} - class CssWriter { - constructor (code, map, warn) { + constructor (code, filename, map, warn, bundle) { this.code = code; + this.filename = filename; this.map = { version: 3, file: null, @@ -89,26 +77,24 @@ class CssWriter { mappings: map.mappings }; this.warn = warn; + this.bundle = bundle; } - write(dest, map) { - dest = path.resolve(dest); - mkdirp(path.dirname(dest)); - + write(dest = this.filename, map) { const basename = path.basename(dest); if (map !== false) { - fs.writeFileSync(dest, `${this.code}\n/*# sourceMappingURL=${basename}.map */`); - fs.writeFileSync(`${dest}.map`, JSON.stringify({ + this.bundle.emitFile({type: 'asset', fileName: dest, source: `${this.code}\n/*# sourceMappingURL=${basename}.map */`}); + this.bundle.emitFile({type: 'asset', fileName: `${dest}.map`, source: JSON.stringify({ version: 3, file: basename, sources: this.map.sources.map(source => path.relative(path.dirname(dest), source)), sourcesContent: this.map.sourcesContent, names: [], mappings: this.map.mappings - }, null, ' ')); + }, null, ' ')}); } else { - fs.writeFileSync(dest, this.code); + this.bundle.emitFile({type: 'asset', fileName: dest, source: this.code}); } } @@ -292,7 +278,7 @@ module.exports = function svelte(options = {}) { return compiled.js; }); }, - generateBundle() { + generateBundle(options, bundle) { if (css) { // write out CSS file. TODO would be nice if there was a // a more idiomatic way to do this in Rollup @@ -327,11 +313,13 @@ module.exports = function svelte(options = {}) { } } - const writer = new CssWriter(result, { + const filename = Object.keys(bundle)[0].split('.').shift() + '.css'; + + const writer = new CssWriter(result, filename, { sources, sourcesContent, mappings: encode(mappings) - }, this.warn); + }, this.warn, this); css(writer); } diff --git a/package-lock.json b/package-lock.json index 45295bb..0bbd624 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,15 +37,15 @@ "dev": true }, "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "version": "0.0.44", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.44.tgz", + "integrity": "sha512-iaIVzr+w2ZJ5HkidlZ3EJM8VTZb2MJLCjw3V+505yVts0gRC4UMvjw0d1HPtGqI/HQC/KdsYtayfzl+AXY2R8g==", "dev": true }, "@types/node": { - "version": "10.12.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.12.tgz", - "integrity": "sha512-Pr+6JRiKkfsFvmU/LK68oBRCQeEg36TyAbPhc2xpez24OOZZCuoIhWGTd39VZy6nGafSbxzGouFPTFD/rR1A0A==", + "version": "14.0.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.11.tgz", + "integrity": "sha512-lCvvI24L21ZVeIiyIUHZ5Oflv1hhHQ5E1S25IRlKIXaRkVgmXpJMI3wUJkmym2bTbCe+WoIibQnMVAU3FguaOg==", "dev": true }, "acorn": { @@ -1403,13 +1403,14 @@ } }, "rollup": { - "version": "0.67.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.67.4.tgz", - "integrity": "sha512-AVuP73mkb4BBMUmksQ3Jw0jTrBTU1i7rLiUYjFxLZGb3xiFmtVEg40oByphkZAsiL0bJC3hRAJUQos/e5EBd+w==", + "version": "1.32.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", + "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", "dev": true, "requires": { - "@types/estree": "0.0.39", - "@types/node": "*" + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" } }, "rollup-pluginutils": { diff --git a/package.json b/package.json index 2a71b7e..a5aeb59 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "eslint": "^6.8.0", "locate-character": "^2.0.5", "mocha": "^7.1.1", - "rollup": "^0.67.4", + "rollup": "^1.32.1", "sander": "^0.6.0", "source-map": "^0.7.3", "svelte": "^3.0.0-beta.5" @@ -41,6 +41,6 @@ }, "peerDependencies": { "svelte": "*", - "rollup": ">=0.60.0" + "rollup": ">=1.32.1" } } From 5b6e1fdf0c92e74bc43093076d6b620a04d06ab3 Mon Sep 17 00:00:00 2001 From: pngwn Date: Fri, 31 Jul 2020 20:36:27 +0100 Subject: [PATCH 02/11] fix tests --- test/test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test.js b/test/test.js index c48e0e0..16c6b67 100644 --- a/test/test.js +++ b/test/test.js @@ -278,7 +278,7 @@ describe('rollup-plugin-svelte', () => { plugin({ css: value => { css = value; - css.write('test/deterministic-css/dist/bundle.css'); + css.write('bundle.css'); } }) ], @@ -315,7 +315,7 @@ describe('rollup-plugin-svelte', () => { plugin({ css: value => { css = value; - css.write('test/filename-test/dist/bundle.css'); + css.write('bundle.css'); } }) ], From 7e2224cce01d17ed34e5e752aedb70269b622fbb Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 3 Aug 2020 08:57:13 -0700 Subject: [PATCH 03/11] Fix peerDependencies version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a5aeb59..c4888a9 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,6 @@ }, "peerDependencies": { "svelte": "*", - "rollup": ">=1.32.1" + "rollup": ">=1.0.0" } } From 7ac3103fb05ecc725207ca4a7badfe82a88e0bba Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 3 Aug 2020 09:17:42 -0700 Subject: [PATCH 04/11] Remove unnecessary default value --- index.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index 682854a..f59d814 100644 --- a/index.js +++ b/index.js @@ -65,9 +65,8 @@ function exists(file) { } class CssWriter { - constructor (code, filename, map, warn, bundle) { + constructor (code, map, warn, bundle) { this.code = code; - this.filename = filename; this.map = { version: 3, file: null, @@ -80,7 +79,7 @@ class CssWriter { this.bundle = bundle; } - write(dest = this.filename, map) { + write(dest, map) { const basename = path.basename(dest); if (map !== false) { @@ -313,9 +312,7 @@ module.exports = function svelte(options = {}) { } } - const filename = Object.keys(bundle)[0].split('.').shift() + '.css'; - - const writer = new CssWriter(result, filename, { + const writer = new CssWriter(result, { sources, sourcesContent, mappings: encode(mappings) From 791afeec8fc324f8587202c3e2d606388e1360d3 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 3 Aug 2020 09:21:56 -0700 Subject: [PATCH 05/11] Update README to match latest commit --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 126f306..00a6d21 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,6 @@ export default { console.log(css.map); // a sourcemap // creates `main.css` and `main.css.map` - // using a falsy name will default to the bundle name // — pass `false` as the second argument if you don't want the sourcemap css.write('main.css'); }, From 064a0a2ac965d831e3e88e76a1f3cc8eaecad210 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 3 Aug 2020 09:36:31 -0700 Subject: [PATCH 06/11] Revert last commit --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 00a6d21..126f306 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,7 @@ export default { console.log(css.map); // a sourcemap // creates `main.css` and `main.css.map` + // using a falsy name will default to the bundle name // — pass `false` as the second argument if you don't want the sourcemap css.write('main.css'); }, From 691ef42a4d5485449d623aa94657bb5cd46ce01d Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 3 Aug 2020 09:37:53 -0700 Subject: [PATCH 07/11] revert last commit --- index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index f59d814..6bf4636 100644 --- a/index.js +++ b/index.js @@ -65,7 +65,7 @@ function exists(file) { } class CssWriter { - constructor (code, map, warn, bundle) { + constructor (code, filename = this.filename, map, warn, bundle) { this.code = code; this.map = { version: 3, @@ -312,6 +312,8 @@ module.exports = function svelte(options = {}) { } } + const filename = Object.keys(bundle)[0].split('.').shift() + '.css'; + const writer = new CssWriter(result, { sources, sourcesContent, From 4d64aa3ab64bd098fd792bf49dce96dd91c5f154 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 3 Aug 2020 09:43:01 -0700 Subject: [PATCH 08/11] Add back omitted line --- index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/index.js b/index.js index 6bf4636..43b07d0 100644 --- a/index.js +++ b/index.js @@ -67,6 +67,7 @@ function exists(file) { class CssWriter { constructor (code, filename = this.filename, map, warn, bundle) { this.code = code; + this.filename = filename; this.map = { version: 3, file: null, From d2fcf9e5ac06e9a6d9663db60783b34ea623ad4a Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 3 Aug 2020 09:54:44 -0700 Subject: [PATCH 09/11] Correct peerDependencies The tests for this change fail with any version of Rollup less than 1.19.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c4888a9..4d7b800 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,6 @@ }, "peerDependencies": { "svelte": "*", - "rollup": ">=1.0.0" + "rollup": ">=1.19.2" } } From 7c05adf1df2a1a812197b4fa57cf3af676288477 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 3 Aug 2020 09:58:57 -0700 Subject: [PATCH 10/11] Fix stupid copy/paste error --- index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 43b07d0..c7a9c96 100644 --- a/index.js +++ b/index.js @@ -65,7 +65,7 @@ function exists(file) { } class CssWriter { - constructor (code, filename = this.filename, map, warn, bundle) { + constructor (code, filename, map, warn, bundle) { this.code = code; this.filename = filename; this.map = { @@ -80,7 +80,7 @@ class CssWriter { this.bundle = bundle; } - write(dest, map) { + write(dest = this.filename, map) { const basename = path.basename(dest); if (map !== false) { From 6e2478f2dd9510a7d1d40f631de5f6976ca0572c Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 3 Aug 2020 10:02:31 -0700 Subject: [PATCH 11/11] Add back filename --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index c7a9c96..682854a 100644 --- a/index.js +++ b/index.js @@ -315,7 +315,7 @@ module.exports = function svelte(options = {}) { const filename = Object.keys(bundle)[0].split('.').shift() + '.css'; - const writer = new CssWriter(result, { + const writer = new CssWriter(result, filename, { sources, sourcesContent, mappings: encode(mappings)