Creating a simple babel plugin1 min read

What will it do?

It will change this

let content = include_str('path to text file');

to this

let content = 'content of text file';

It works just like the rust-lang  include_str!() macro.

Code

  • While looping through the AST, our code checks for a function call ( CallExpression ) named include_str
  • If one is found, we derive the required file path from the first argument to the call and the path of the file that is being transpiled
  • Contents of the file are read into a string with fs.readFIleSync
  • The CallExpression  is replaced with the string which is converted into a stringLiteral

index.js

 

Disclaimer

Not tested

Similar libs to check out