Cybernetically enhanced web apps
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Go to file
Rich Harris fb675fd5e3
update snapshot tests
7 years ago
.github Update ISSUE_TEMPLATE.md 8 years ago
src check component exists after _bind before continuing - fixes #917 7 years ago
test update snapshot tests 7 years ago
.editorconfig add editorconfig and flowconfig files 8 years ago
.eslintignore remove babel etc 8 years ago
.eslintrc.json add eslint-plugin-html, for linting test .html files 8 years ago
.flowconfig add editorconfig and flowconfig files 8 years ago
.gitignore Use a block scoped unique name for the context 7 years ago
.prettierrc upgrade prettier; use .prettierrc 7 years ago
.travis.yml use nightmare to test custom element stuff 7 years ago
CHANGELOG.md -> v1.41.3 7 years ago
LICENSE update license with link to contributors page 8 years ago
README.md reorganize options table and add `hydratable` and `customElement` 7 years ago
appveyor.yml add appveyor config 8 years ago
mocha.coverage.opts tidy up 8 years ago
mocha.opts reuse window object for faster tests 8 years ago
package.json -> v1.41.3 7 years ago
rollup.config.js update rollup again, fix paths issue 7 years ago
tsconfig.json add tslib and use importHelpers - fixes #919 7 years ago
yarn.lock add tslib and use importHelpers - fixes #919 7 years ago

README.md

Svelte

The magical disappearing UI framework.


This is the Svelte compiler, which is primarily intended for authors of tooling that integrates Svelte with different build systems. If you just want to write Svelte components and use them in your app, you probably want one of those tools:

Example usage

import * as svelte from 'svelte';

const { code, map } = svelte.compile( source, {
	// the target module format  defaults to 'es' (ES2015 modules), can
	// also be 'amd', 'cjs', 'umd', 'iife' or 'eval'
	format: 'umd',

	// the filename of the source file, used in e.g. generating sourcemaps
	filename: 'MyComponent.html',

	// the name of the constructor. Required for 'iife' and 'umd' output,
	// but otherwise mostly useful for debugging. Defaults to 'SvelteComponent'
	name: 'MyComponent',

	// for 'amd' and 'umd' output, you can optionally specify an AMD module ID
	amd: {
		id: 'my-component'
	},

	// custom error/warning handlers. By default, errors will throw, and
	// warnings will be printed to the console. Where applicable, the
	// error/warning object will have `pos`, `loc` and `frame` properties
	onerror: err => {
		console.error( err.message );
	},

	onwarn: warning => {
		console.warn( warning.message );
	}
});

API

The Svelte compiler exposes the following API:

  • compile( source [, options ] ) => { code, map, ast, css } - Compile the component with the given options (see below). Returns an object containing the compiled JavaScript, a sourcemap, an AST and transformed CSS.
  • create( source [, options ] ) => function - Compile the component and return the component itself.
  • VERSION - The version of this copy of the Svelte compiler as a string, 'x.x.x'.

Options

The Svelte compiler optionally takes a second argument, an object of configuration options:

Values Description Default
generate 'dom', 'ssr' Whether to generate JavaScript code intended for use on the client ('dom'), or for use in server-side rendering ('ssr'). 'dom'
dev true, false Whether to enable run-time checks in the compiled component. These are helpful during development, but slow your component down. false
css true, false Whether to include code to inject your component's styles into the DOM. true
hydratable true, false Whether to support hydration on the compiled component. false
customElement true, false, { tag, props } Whether to compile this component to a custom element. If tag/props are passed, compiles to a custom element and overrides the values exported by the component. false
cascade true, false Whether to cascade all of the component's styles to child components. If false, only selectors wrapped in :global(...) and keyframe IDs beginning with -global- are cascaded. true
shared true, false, string Whether to import various helpers from a shared external library. When you have a project with multiple components, this reduces the overall size of your JavaScript bundle, at the expense of having immediately-usable component. You can pass a string of the module path to use, or true will import from 'svelte/shared.js'. false
legacy true, false Ensures compatibility with very old browsers, at the cost of some extra code. false
format 'es', 'amd', 'cjs', 'umd', 'iife', 'eval' The format to output in the compiled component.
'es' - ES6/ES2015 module, suitable for consumption by a bundler
'amd' - AMD module
'cjs' - CommonJS module
'iife' - IIFE-wrapped function defining a global variable, suitable for use directly in browser
'eval' - standalone function, suitable for passing to eval()
'es' for generate: 'dom'
'cjs' for generate: 'ssr'
name string The name of the constructor in the compiled component. 'SvelteComponent'
filename string The filename to use in sourcemaps and compiler error and warning messages. 'SvelteComponent.html'
amd.id string The AMD module ID to use for the 'amd' and 'umd' output formats. undefined
globals object, function When outputting to the 'umd', 'iife' or 'eval' formats, an object or function mapping the names of imported dependencies to the names of global variables. {}
onerror function Specify a callback for when Svelte encounters an error while compiling the component. Passed two arguments: the error object, and another function that is Svelte's default onerror handling. (exception is thrown)
onwarn function Specify a callback for when Svelte encounters a non-fatal warning while compiling the component. Passed two arguments: the warning object, and another function that is Svelte's default onwarn handling. (warning is logged to console)

Example/starter repos

BrowserStack

To keep Svelte's performance in check, we use BrowserStack to quickly run benchmarks for each PR that immediately give feedback to the contributor. You can see how we use BrowserStack in the svelte-bench project and check out BrowserStack's services on their website.

License

MIT