Skip to content

Commit

Permalink
Support string values for css compiler option
Browse files Browse the repository at this point in the history
Fixes #150
Supersedes #109
  • Loading branch information
EMH333 committed Nov 15, 2022
1 parent 1495d67 commit fc4c7a4
Show file tree
Hide file tree
Showing 2 changed files with 105 additions and 10 deletions.
2 changes: 1 addition & 1 deletion index.ts
Expand Up @@ -241,7 +241,7 @@ export default function sveltePlugin(options?: esbuildSvelteOptions): Plugin {
let contents = js.code + `\n//# sourceMappingURL=` + toUrl(js.map.toString());

//if svelte emits css seperately, then store it in a map and import it from the js
if (!compilerOptions.css && css.code) {
if ((compilerOptions.css === false || compilerOptions.css === 'external') && css.code) {
let cssPath = args.path
.replace(".svelte", ".esbuild-svelte-fake-css") //TODO append instead of replace to support different svelte filters
.replace(/\\/g, "/");
Expand Down
113 changes: 104 additions & 9 deletions test/simpleTest.mjs
Expand Up @@ -53,9 +53,9 @@ test("Simple build", async () => {
plugins: [sveltePlugin()],
});

assert.ok(results.errors.length === 0, "Non-zero number of errors");
assert.ok(results.warnings.length === 0, "Non-zero number of warnings");
assert.ok(results.outputFiles.length === 2, "Non-expected number of output files");
assert.equal(results.errors.length, 0, "Non-zero number of errors");
assert.equal(results.warnings.length, 0, "Non-zero number of warnings");
assert.equal(results.outputFiles.length, 2, "Non-expected number of output files");
});

test("Simple CommonJS build", async () => {
Expand All @@ -71,9 +71,9 @@ test("Simple CommonJS build", async () => {
plugins: [sveltePluginCJS()],
});

assert.ok(results.errors.length === 0, "Non-zero number of errors");
assert.ok(results.warnings.length === 0, "Non-zero number of warnings");
assert.ok(results.outputFiles.length === 2, "Non-expected number of output files");
assert.equal(results.errors.length, 0, "Non-zero number of errors");
assert.equal(results.warnings.length, 0, "Non-zero number of warnings");
assert.equal(results.outputFiles.length, 2, "Non-expected number of output files");
});

test("More advanced build", async () => {
Expand All @@ -90,9 +90,104 @@ test("More advanced build", async () => {
plugins: [sveltePlugin({ compilerOptions: { dev: true } })],
});

assert.ok(results.errors.length === 0, "Non-zero number of errors");
assert.ok(results.warnings.length === 0, "Non-zero number of warnings");
assert.ok(results.outputFiles.length === 2, "Non-expected number of output files");
assert.equal(results.errors.length, 0, "Non-zero number of errors");
assert.equal(results.warnings.length, 0, "Non-zero number of warnings");
assert.equal(results.outputFiles.length, 2, "Non-expected number of output files");
});

test("CSS external boolean", async () => {
//more advanced
const results = await _build({
entryPoints: ["./example-js/entry.js"],
outdir: "../example-js/dist",
format: "esm",
minify: true,
bundle: true,
splitting: false,
write: false, //Don't write anywhere
sourcemap: "inline",
plugins: [sveltePlugin({ compilerOptions: { dev: true, css: false } })],
});

assert.equal(results.errors.length, 0, "Non-zero number of errors");
assert.equal(results.warnings.length, 0, "Non-zero number of warnings");
assert.equal(results.outputFiles.length, 2, "Non-expected number of output files");
});

test("CSS external string", async () => {
//more advanced
const results = await _build({
entryPoints: ["./example-js/entry.js"],
outdir: "../example-js/dist",
format: "esm",
minify: true,
bundle: true,
splitting: false,
write: false, //Don't write anywhere
sourcemap: "inline",
plugins: [sveltePlugin({ compilerOptions: { dev: true, css: "external" } })],
});

assert.equal(results.errors.length, 0, "Non-zero number of errors");
assert.equal(results.warnings.length, 0, "Non-zero number of warnings");
assert.equal(results.outputFiles.length, 2, "Non-expected number of output files");
});

test("CSS injected boolean", async () => {
//more advanced
const results = await _build({
entryPoints: ["./example-js/entry.js"],
outdir: "../example-js/dist",
format: "esm",
minify: true,
bundle: true,
splitting: false,
write: false, //Don't write anywhere
sourcemap: "inline",
plugins: [sveltePlugin({ compilerOptions: { dev: true, css: true } })],
});

assert.equal(results.errors.length, 0, "Non-zero number of errors");
assert.equal(results.warnings.length, 0, "Non-zero number of warnings");
assert.equal(results.outputFiles.length, 1, "Non-expected number of output files");
});

test("CSS injected string", async () => {
//more advanced
const results = await _build({
entryPoints: ["./example-js/entry.js"],
outdir: "../example-js/dist",
format: "esm",
minify: true,
bundle: true,
splitting: false,
write: false, //Don't write anywhere
sourcemap: "inline",
plugins: [sveltePlugin({ compilerOptions: { dev: true, css: "injected" } })],
});

assert.equal(results.errors.length, 0, "Non-zero number of errors");
assert.equal(results.warnings.length, 0, "Non-zero number of warnings");
assert.equal(results.outputFiles.length, 1, "Non-expected number of output files");
});

test("CSS none", async () => {
//more advanced
const results = await _build({
entryPoints: ["./example-js/entry.js"],
outdir: "../example-js/dist",
format: "esm",
minify: true,
bundle: true,
splitting: false,
write: false, //Don't write anywhere
sourcemap: "inline",
plugins: [sveltePlugin({ compilerOptions: { dev: true, css: "none" } })],
});

assert.equal(results.errors.length, 0, "Non-zero number of errors");
assert.equal(results.warnings.length, 0, "Non-zero number of warnings");
assert.equal(results.outputFiles.length, 1, "Non-expected number of output files");
});

test.run();

0 comments on commit fc4c7a4

Please sign in to comment.