GithubHelp home page GithubHelp logo

aot-loader's Introduction

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.

It's also similar to val-loader but this loader returns resolved data as JSON object directly.

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

aot-loader's People

Contributors

egoist avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

yurynix

aot-loader's Issues

Add Vue SFC support

<template>
	<div>{{ count }}</div>
</template>

<aot>
// pre-evaluate at build time
module.exports = () => ({
  count: 0
})
</aot>
{
  resourceQuery: /blockType=aot/,
  loader: 'aot-loader/vue'
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.