diff --git a/src/generate/index.js b/src/generate/index.js index b47bbd9afa..a1690b6f8a 100644 --- a/src/generate/index.js +++ b/src/generate/index.js @@ -392,7 +392,7 @@ export default function generate ( parsed, source, options, names ) { topLevelStatements.push( `[✂${parsed.js.content.start}-${parsed.js.content.end}✂]` ); } - if ( parsed.css ) { + if ( parsed.css && options.css !== false ) { topLevelStatements.push( deindent` let addedCss = false; function addCss () { @@ -411,7 +411,7 @@ export default function generate ( parsed, source, options, names ) { const initStatements = []; - if ( parsed.css ) { + if ( parsed.css && options.css !== false ) { initStatements.push( `if ( !addedCss ) addCss();` ); } diff --git a/src/server-side-rendering/compile.js b/src/server-side-rendering/compile.js index af7e852a99..346e40ce75 100644 --- a/src/server-side-rendering/compile.js +++ b/src/server-side-rendering/compile.js @@ -8,7 +8,7 @@ import processCss from '../generate/css/process.js'; const voidElementNames = /^(?:area|base|br|col|command|doctype|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/i; -export default function compile ( source, filename ) { +export default function compile ( source, { filename }) { const parsed = parse( source, {} ); validate( parsed, source, {} ); diff --git a/src/server-side-rendering/register.js b/src/server-side-rendering/register.js index 16909b88b7..3b147c8b88 100644 --- a/src/server-side-rendering/register.js +++ b/src/server-side-rendering/register.js @@ -2,6 +2,6 @@ import * as fs from 'fs'; import compile from './compile.js'; require.extensions[ '.html' ] = function ( module, filename ) { - const { code } = compile( fs.readFileSync( filename, 'utf-8' ), filename ); + const { code } = compile( fs.readFileSync( filename, 'utf-8' ), { filename }); return module._compile( code, filename ); }; diff --git a/test/generator/css-false/Widget.html b/test/generator/css-false/Widget.html new file mode 100644 index 0000000000..1d893b8bcd --- /dev/null +++ b/test/generator/css-false/Widget.html @@ -0,0 +1,7 @@ +

test

+ + diff --git a/test/generator/css-false/_config.js b/test/generator/css-false/_config.js new file mode 100644 index 0000000000..df9ef69c5e --- /dev/null +++ b/test/generator/css-false/_config.js @@ -0,0 +1,12 @@ +export default { + compileOptions: { + css: false + }, + + test ( assert, component, target, window ) { + const [ control, test ] = target.querySelectorAll( 'p' ); + + assert.equal( window.getComputedStyle( control ).color, '' ); + assert.equal( window.getComputedStyle( test ).color, '' ); + } +}; diff --git a/test/generator/css-false/main.html b/test/generator/css-false/main.html new file mode 100644 index 0000000000..70e77bd59b --- /dev/null +++ b/test/generator/css-false/main.html @@ -0,0 +1,10 @@ +

control

+ + + diff --git a/test/test.js b/test/test.js index f943ba4710..b441265a32 100644 --- a/test/test.js +++ b/test/test.js @@ -23,9 +23,11 @@ const svelte = process.env.COVERAGE ? const cache = {}; let showCompiledCode = false; +let compileOptions = null; require.extensions[ '.html' ] = function ( module, filename ) { - const code = cache[ filename ] || ( cache[ filename ] = svelte.compile( fs.readFileSync( filename, 'utf-8' ) ).code ); + const options = Object.assign({ filename }, compileOptions ); + const code = cache[ filename ] || ( cache[ filename ] = svelte.compile( fs.readFileSync( filename, 'utf-8' ), options ).code ); if ( showCompiledCode ) console.log( addLineNumbers( code ) ); // eslint-disable-line no-console return module._compile( code, filename ); @@ -250,6 +252,7 @@ describe( 'svelte', () => { let compiled; showCompiledCode = config.show; + compileOptions = config.compileOptions || {}; try { const source = fs.readFileSync( `test/generator/${dir}/main.html`, 'utf-8' );