@sincronia/babel-plugin

0.4.2-alpha.3 • Public • Published

@sincronia/babel-plugin

Overview

This plugin allows you to run Babel on your javascript and TypeScript files. This enables you to do all kinds of interesting things with your code structure. It also lets you use more modern javascript features in your ServiceNow development.

Whatever Babel plugins and presets you use, you still need to npm install them like usual.

Installation

npm i -D @sincronia/babel-plugin

Options

This plugin takes the exact same options as .babelrc.

Limitations

Although normal Babel transpilation enables nearly all modern javascript features in older javascript runtimes, ServiceNow's Rhino engine prevents certain modern features from working after transpilation.

Syntactic sugar such as ES6 classes, destructuring, let/const, template strings, default parameters, and arrow functions are supported. Features added to base classes like Array or for-of loops, Map, Set, and Weakmap are not supported because the prototype of base classes are locked in the Servicenow javascript engine.

A good rule of thumb is to not use the useBuiltIns option of the babel-preset-env preset. If your code works, then you are fine. If it throws errors when you run it, you most likely need an unsupported polyfill.

Feel free to riot so we can get more modern javascript features in ServiceNow 😉

Example Usage

This example takes .ts files and transpiles it to valid ServiceNow javascript.

//sinc.config.js
module.exports={
  rules:{
    match:/\.ts$/,
    plugins:[
      name:"@sincronia/babel-plugin",
      //Babel options. Numbering shows order of execution
      options:{
        presets: [
          //6. Sanitize output code for ServiceNow
          "@sincronia/servicenow",
          //5. Babel env preset, transforms syntactic sugar to valid older javascript
          "@babel/env",
          //4. Typescript preset. Removes type information and makes it valid javascript
          "@babel/typescript"
          ],
        plugins: [
          //1. Remove import/export statements used for type inference
          "@sincronia/remove-modules",
          //2 and 3. Required babel plugins for typescript
          "@babel/proposal-class-properties",
          "@babel/proposal-object-rest-spread"
        ]
      }
    ]
  }
};

Dependents (0)

Package Sidebar

Install

npm i @sincronia/babel-plugin

Weekly Downloads

78

Version

0.4.2-alpha.3

License

GPL-3.0

Unpacked Size

40.4 kB

Total Files

4

Last publish

Collaborators

  • jarrod.deboy
  • brandonsmith-nuvolo
  • jakeye-nuvolo
  • nuvolo-admin