Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

ember-cli-inline-content

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ember-cli-inline-content

An ember-cli add-on to render inline scripts and styles directly into your index.html file

  • 0.2.3
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
11K
increased by11.93%
Maintainers
1
Weekly downloads
 
Created
Source

ember-cli-inline-content

An ember-cli add-on to render inline scripts and styles directly into your index.html file.

Install

npm install --save-dev ember-cli-inline-content

Note: compatible with ember-cli >= v0.0.47 (introduced content-for addons)

Example

In your app's Brocfile.js, define a manifest of files you want to inline (name : filepath)

var app = new EmberApp({
  inlineContent: {
    'google-analytics' : 'ext/google-analytics.js',
    'fast-style' : 'ext/red.css'
  }
});

In your index.html file, use the 'content-for' helper with a reference to the name in the manifest

{{content-for 'fast-style'}}

<p>some other stuff</p>

{{content-for 'google-analytics'}}

During the build preocess, this will render the contents of those files directly inline with <script> or <style> tags, based on the filetype. In production, the contents of the inline blocks will be minified (will obey application's minifyJS & minifyCSS options in Brocfile).

The above example will output in index.html:

<style>
  body { color: red; }
</style>

<p>some other stuff</p>

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-XXXXXXXX-X', 'auto');
  ga('send', 'pageview');
</script>

Advanced Examples

Adding attributes to the generated tags:
var app = new EmberApp({
  inlineContent: {
    'olark' : { 
      file: 'ext/olark.js',
      attrs: { 'data-cfasync' : 'true' }
    }
  }
});

Will output:

<script data-cfasync="true">
  ...ext/olark.js content here...
</script>
Enviroment specifc content:

In the Brocfile.js

var app = new EmberApp({
  ...
});

if (app.env === 'production') {
  app.options.inlineContent = {
    'some-script' : 'ext/some-script.js'
  };
}
Rendering any kind of file:

You are not restricted to just js/css files. It will inline the literal contents of any UTF-8 string file.

var app = new EmberApp({
  inlineContent: {
    'facebook-html-block' : 'ext/facebook.html'
  }
});
Rendering a string of content instead of a file:
var app = new EmberApp({
  inlineContent: {
    'env-heading' : { 
      content: '<h1>Environment: ' + process.env.EMBER_ENV + '</h1>'
    }
  }
});

Why?

  • You want some code to start executing before your whole app downloads
  • You don't want that code to require a separate request
  • <script async> is not widely supported, or incompatible with some 3rd party code
  • Some 3rd party code recommends, or requires you to inline their code
  • You need to place various inline content but want to keep your index.html clean
  • You want minified inline content, but keep full source in separate files for dev and testing

Keywords

FAQs

Package last updated on 06 Nov 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc