@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"
            ]
          }
        ]
      }
    };

    Keywords

    none

    Install

    npm i @sincronia/babel-plugin

    DownloadsWeekly Downloads

    72

    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