aot-loader

Load and Pre-evaluate code at build-time

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
aot-loader
1621.0.15 years ago5 years agoMinified + gzip package size for aot-loader in KB

Readme

aot-loader
NPM version NPM downloads CircleCI donate chat
This is similar to babel-plugin-preval except that this is a webpack loader, which means you can write asynchronous code but import the resolved data synchronously.

Install

yarn add aot-loader --dev

Usage

Import a file that you intend to pre-evaluate:
๐Ÿ“
entry.js:
import data from './data?aot'

console.log(data)

๐Ÿ“
data.js:
const axios = require('axios')

module.exports = async () => {
  const posts = await axios.get('http://example.com/posts.json')
  return { posts }
}

Then update your webpack config to pre-evaluate .js files with ?aot query at compile time:
๐Ÿ“
webpack.config.js:
module.exports = {
  entry: './entry.js',
  module: {
    rules: [
      {
        test: /\.js$/,
        enforce: 'post',
        resourceQuery: /\?aot$/,
        loader: 'aot-loader'
      },
      // Following is optional, depending on your needs
      {
        test: /\.js$/,
        loader: 'babel-loader'
      }
    ]
  }
}

Without resource query

import data from /* aot */ './data'
// โ†“โ†“โ†“ transpiled to:
import data from './data?aot'

To achieve this, you can use the aot babel plugin in your .babelrc:
{
  "plugins": [
    "module:aot-loader/babel"
  ]
}

API

Loader options

getData

  • Type: (exported, context) => data || Promise<data>

Get data from the exported object of the file that is being evaluated.
Default value:
function (exported, context) {
  return typeof exported === 'function' ? exported(context) : exported
}

context

The context argument in getData.
Default:
{
  loader: LoaderContext
}

Check out the LoaderContext
API.

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Author

aot-loader ยฉ egoist, Released under the MIT License.
Authored and maintained by egoist with help from contributors (list).
github.com/egoist ยท GitHub @egoist ยท Twitter @egoistlily