aot-loader
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:
console
📝 data.js:
const axios = moduleexports = async { const posts = await axios return posts }
Then update your webpack config to pre-evaluate .js
files with ?aot
query at compile time:
📝 webpack.config.js:
moduleexports = 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
// ↓↓↓ transpiled to:
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:
{ return typeof exported === 'function' ? : exported}
context
The context
argument in getData
.
Default:
loader: LoaderContext
Check out the LoaderContext API.
Contributing
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- 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