electron-compile compiles JS and CSS on the fly with a single call in your app's 'ready' function.
- Sass / SCSS
- Vue.js 2.0 Single-File Components
How does it work? (Easiest Way)
electron-prebuilt-compile instead of the
electron-prebuilt module. Tada! You did it.
electron-prebuilt-compile is like an
electron-prebuilt that Just Works with all of these languages above.
How does it work? (Slightly Harder Way)
electron-compilers as a
npm install --save electron-compile npm install --save-dev electron-compilers
Create a new file that will be the entry point of your app (perhaps changing 'main' in package.json) - you need to pass in the root directory of your application, which will vary based on your setup. The root directory is the directory that your
package.json is in.
// Assuming this file is ./src/es6-init.js var appRoot = path.join(__dirname, '..'); // ...and that your main app is called ./src/main.js. This is written as if // you were going to `require` the file from here. require('electron-compile').init(appRoot, './main');
I did it, now what?
From then on, you can now simply include files directly in your HTML, no need for cross-compilation:
<head> <script src="main.coffee"></script> <link rel="stylesheet" href="main.less" /> </head>
or just require them in:
require('./mylib') // mylib.ts
Something isn't working / I'm getting weird errors
electron-compile uses the debug module, set the DEBUG environment variable to debug what electron-compile is doing:
## Debug just electron-compile DEBUG=electron-compile:* npm start ## Grab everything except for Babel which is very noisy DEBUG=*,-babel npm start
How do I set up (Babel / Less / whatever) the way I want?
If you've got a
.babelrc and that's all you want to customize, you can simply use it directly. electron-compile will respect it, even the environment-specific settings. If you want to customize other compilers, use a
.compilerc.json file. Here's an example:
.compilerc also accepts environments with the same syntax as
The opening Object is a list of MIME Types, and options passed to the compiler implementation. These parameters are documented here:
- Babel - http://babeljs.io/docs/usage/options
- CoffeeScript - http://coffeescript.org/documentation/docs/coffee-script.html#section-5
- TypeScript - https://github.com/Microsoft/TypeScript/blob/v1.5.0-beta/bin/typescriptServices.d.ts#L1076
- Less - http://lesscss.org/usage/index.html#command-line-usage-options
- Jade - http://jade-lang.com/api
How can I compile only some file types but not others?
passthrough enabled, electron-compile will return your source files completely unchanged!
In this example
How can I precompile my code for release-time?
electron-compile comes with a wrapper around the electron-packager project,
electron-packager-compile (if you use the
electron-prebuilt-compile project, this will just be
electron-packager). Run it the same way you run
electron-packager and the compilation wire-up will be done in the background.
How can I precompile my code for release-time? (the hard way)
electron-compile comes with a command-line application to pre-create a cache for you.
Usage: electron-compile --appdir [root-app-dir] paths... Options: -a, --appdir The top-level application directory (i.e. where your package.json is) -v, --verbose Print verbose information -h, --help Show help
electron-compile on all of your application assets, even if they aren't strictly code (i.e. your static assets like PNGs). electron-compile will recursively walk the given directories.
electron-compile --appDir /path/to/my/app ./src ./static
But I use Grunt / Gulp / I want to do Something Interesting
Compilation also has its own API, check out the documentation for more information.