Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
babel-plugin-htmlbars-inline-precompile
Advanced tools
Babel plugin to replace tagged template strings with precompiled HTMLBars templates
The babel-plugin-htmlbars-inline-precompile package is a Babel plugin that allows you to precompile Handlebars templates inline within your JavaScript code. This is particularly useful in Ember.js applications where you want to use Handlebars templates directly in your JavaScript files.
Inline Precompilation of Handlebars Templates
This feature allows you to write Handlebars templates directly in your JavaScript code and have them precompiled at build time. This can improve performance by avoiding runtime compilation.
import hbs from 'htmlbars-inline-precompile';
const template = hbs`<div>{{name}}</div>`;
Integration with Ember.js
The plugin integrates seamlessly with Ember.js, allowing you to define component templates inline. This can make your code more modular and easier to manage.
import Component from '@glimmer/component';
import hbs from 'htmlbars-inline-precompile';
export default class MyComponent extends Component {
static template = hbs`<div>{{this.name}}</div>`;
}
The ember-cli-htmlbars package is an Ember CLI addon that provides Handlebars template compilation for Ember.js applications. Unlike babel-plugin-htmlbars-inline-precompile, which focuses on inline templates within JavaScript, ember-cli-htmlbars is more geared towards traditional .hbs template files.
The handlebars-loader package is a Webpack loader that precompiles Handlebars templates. It is similar to babel-plugin-htmlbars-inline-precompile in that it precompiles templates, but it is used in the context of Webpack rather than Babel.
Babel plugin to replace tagged .hbs
formatted strings with a precompiled version.
Can be used as either a normal function invocation or a tagged template string:
import hbs from 'htmlbars-inline-precompile';
hbs`some {{handlebarsthingy}}`;
hbs('some {{handlebarsthingy}}');
When used as a normal function invocation, you can pass additional options (e.g. to configure the resulting template's moduleName
metadata):
import hbs from 'htmlbars-inline-precompile';
hbs('some {{handlebarsthingy}}', { moduleName: 'some/path/to/file.hbs' });
var HTMLBarsCompiler = require('./bower_components/ember/ember-template-compiler');
var HTMLBarsInlinePrecompile = require('babel-plugin-htmlbars-inline-precompile');
require('babel').transform("code", {
plugins: [
[HTMLBarsInlinePrecompile, {precompile: HTMLBarsCompiler.precompile}],
],
});
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import hbs from 'htmlbars-inline-precompile';
module("my component", function(hooks) {
setupRenderingTest(hooks);
test('inline templates ftw', async function(assert) {
await render(hbs`hello!`);
assert.dom().hasText('hello!');
});
});
results in
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import hbs from 'htmlbars-inline-precompile';
module("my component", function(hooks) {
setupRenderingTest(hooks);
test('inline templates ftw', async function(assert) {
await render(Ember.HTMLBars.template(function() {
/* crazy HTMLBars template function stuff */
}));
assert.dom().hasText('hello!');
});
});
FAQs
Babel plugin to replace tagged template strings with precompiled HTMLBars templates
The npm package babel-plugin-htmlbars-inline-precompile receives a total of 185,505 weekly downloads. As such, babel-plugin-htmlbars-inline-precompile popularity was classified as popular.
We found that babel-plugin-htmlbars-inline-precompile demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
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.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.