mirror of
https://github.com/josdejong/mathjs.git
synced 2026-01-25 15:07:57 +00:00
73 lines
2.3 KiB
Markdown
73 lines
2.3 KiB
Markdown
# Custom bundling
|
|
|
|
Math.js is a large library containing many data types and functions.
|
|
It is well possible that you only need a small portion of the library.
|
|
Math.js allows for creating a custom index file, loading only the data types
|
|
and functions that you need. This give faster load times, and allows bundling
|
|
only the used part of the library with tools like Webpack or browserify.
|
|
|
|
To load an empty instance of math.js, load `mathjs/core`. This core only
|
|
contains functions `import` and `config`.
|
|
|
|
```js
|
|
// Load the math.js core
|
|
const core = require('mathjs/core')
|
|
|
|
// Create a new, empty math.js instance
|
|
// It will only contain methods `import` and `config`
|
|
const math = core.create()
|
|
```
|
|
|
|
Then, use `math.import` to load the needed data types and functions.
|
|
It's important to load the data types first, and after that load functions
|
|
and constants. The functions are dynamically built, depending on the available
|
|
data types.
|
|
|
|
```js
|
|
// load the data types you need. Let's say you just want to use fractions,
|
|
// but no matrices, complex numbers, bignumbers, and other stuff.
|
|
//
|
|
// To load all data types:
|
|
//
|
|
// math.import(require('mathjs/lib/type'))
|
|
//
|
|
math.import(require('mathjs/lib/type/fraction'))
|
|
|
|
// Load the functions you need.
|
|
//
|
|
// To load all functions:
|
|
//
|
|
// math.import(require('mathjs/lib/function'))
|
|
//
|
|
// To load all functions of a specific category:
|
|
//
|
|
// math.import(require('mathjs/lib/function/arithmetic'))
|
|
//
|
|
math.import(require('mathjs/lib/function/arithmetic/add'))
|
|
math.import(require('mathjs/lib/function/arithmetic/subtract'))
|
|
math.import(require('mathjs/lib/function/arithmetic/multiply'))
|
|
math.import(require('mathjs/lib/function/arithmetic/divide'))
|
|
math.import(require('mathjs/lib/function/string/format'))
|
|
```
|
|
|
|
To see which data types and categories are available, explore the `index.js`
|
|
files in the folder `./lib`.
|
|
|
|
The imported functions and data types can now be used:
|
|
|
|
```js
|
|
// Use the loaded functions
|
|
const a = math.fraction(1, 3)
|
|
const b = math.fraction(3, 7)
|
|
const c = math.add(a, b)
|
|
console.log('result:', math.format(c)) // outputs "result: 16/21"
|
|
```
|
|
|
|
Suppose the custom loading code (loading `mathjs/core` and doing the imports)
|
|
is located in a file `custom_loading.js`. It's now possible to bundle
|
|
this file using for example browserify:
|
|
|
|
```bash
|
|
$ browserify custom_loading.js -o custom_loading.bundle.js
|
|
```
|