Adds support for the include()
function to the Babel compiler.
A simple way to organize and reuse code.
The goal of this plugin is to allow a "native" way of including JavaScript code inline - at compilation time.
npm install -D @aternus/babel-plugin-include @babel/core @babel/cli
{
"plugins": ["@aternus/babel-plugin-include"]
}
The include()
function takes an argument, a file path, e.g. file.js
.
include('welcome.js');
include('stateManager.js');
console.log('Welcome code');
console.log('State manager code');
console.log('Welcome code');
console.log('State manager code');
- The
include()
function takes a single string as an argument. Following arguments are ignored. - The included file must be a valid JavaScript file. If there are errors the compiler will throw an error.
- The default encoding is assumed to be
utf8
. - You can use relative and absolute filenames, and change the
root
directory in plugin options.
const transformedCode = require('@babel/core').transform(code, {
plugins: ['@aternus/babel-plugin-include'],
});
npx babel --plugins @aternus/babel-plugin-include main.js
The plugin ships with TypeScript types which the IDEs and TypeScript can use to
understand the new include
syntax capability without you having to take any
action.
⚠ Keep in mind that you'll still need to use Babel as the transpiler (this is a babel plugin after all 😅)
The plugin ships with an ESLint config you can extend to avoid getting errors
about include
being undefined.
In your .eslintrc.js
:
module.exports = {
extends: [
// ...
'./node_modules/@aternus/babel-plugin-include/eslint',
],
// ...
};
⚠ ./node_modules
is required to ensure that ESLint won't add "eslint-config"
to the package name, resulting in a wrong path.
You can provide an options object to modify the default behavior of the plugin.
{
plugins: [['@aternus/babel-plugin-include', options]];
}
Option Name | Type | Default | Notes |
---|---|---|---|
root |
string |
cwd() of the file |
The root directory from which all files will be included. |
encoding |
BufferEncoding |
utf-8 |
The encoding option specifies which encoding to use when including files. |
vihanb for the original package (no longer maintained).
Released under the MIT License - see LICENSE.md
for details.