tojson-loader
Generate JSON assets at build-time
If every client needs access to a shared chunk of data, and that data
can be known at build time, a simple option is to bake that data into
clientside build with tojson-loader
.
Benefits
- Having shared, static data preloaded in the client can improve performance/UX & reduce complexity.
- Use whatever tools you need to generate the data on the serverside, no need to worry about shipping or shimming them on the client.
- Reduce client-side processing load. Perform expensive calulations only once, on the server, at build-time.
- Designed so tojson scripts can be transparently universal. Will run dynamic version on server & load static version on client.
Particularly useful for loading configuration and/or mock data into the client.
Caveats
- Only supports JSON data types i.e. JSON can't natively serialise
Function
orDate
objects.
Usage
// webpack.config.jsmoduleexports = ... module: loaders: // Use *.json.js extension to bake exported JS data into JSON test: /\.json\.js/ loader: 'tojson' ...
.json.js
file
Example // data.json.js // can use serverside-only dependenciesvar fs = var readme = fsreadme = readme0 // (just grab header for demo) // any other dependencies that are only used in here won't be included in bundlevar tape = // some random dependency // whatever the value of module.exports is will be serialised to JSONmoduleexports = readme: readme tape: tape // tape happens to be a function so it won't serialise. random: Math // will be fixed to whatever value is generated at compile-time
// index.jsconsole
Example Result
The transformed output after being built by webpack is below.
Note:
- No dependencies on any of the modules (
fs
,tape
) used. - Result of
fs.readFileSync
is baked into the output. random
key will always be the same value until next build.tape
key doesn't exist because JSON can't serialise functions.
.../******/ /* 0 *//***/ { console /***/ }/* 1 *//***/ { moduleexports = "readme":"# tojson-loader""random":05418716457206756 /***/ }/******/ ;
License
ISC