anki-apkg-export
Universal module for generating decks for Anki.
Port of the Ruby gem https://github.com/albertzak/anki2
Install
$ npm install anki-apkg-export --save
Usage
server
const fs = require('fs');
const AnkiExport = require('anki-apkg-export').default;
const apkg = new AnkiExport('deck-name');
apkg.addMedia('anki.png', fs.readFileSync('anki.png'));
apkg.addCard('card #1 front', 'card #1 back');
apkg.addCard('card #2 front', 'card #2 back', { tags: ['nice', 'better card'] });
apkg.addCard('card #3 with image <img src="anki.png" />', 'card #3 back');
apkg
.save()
.then(zip => {
fs.writeFileSync('./output.apkg', zip, 'binary');
console.log(`Package has been generated: output.pkg`);
})
.catch(err => console.log(err.stack || err));
browser
Intended to be used with webpack
const webpack = require('webpack');
module.exports = {
entry: './index.js',
module: {
loaders: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel'
},
]
},
plugins: [
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify(process.env.NODE_ENV || 'development')
},
})
],
output: {
path: __dirname,
filename: 'bundle.js'
}
};
Required loaders:
import { saveAs } from 'file-saver';
import AnkiExport from 'anki-apkg-export';
const apkg = new AnkiExport('deck-name');
apkg.addMedia('anki.png', file);
apkg.addCard('card #1 front', 'card #1 back');
apkg.addCard('card #2 front', 'card #2 back', { tags: ['nice', 'better card'] });
apkg.addCard('card #3 with image <img src="anki.png" />', 'card #3 back');
apkg
.save()
.then(zip => {
saveAs(zip, 'output.apkg');
})
.catch(err => console.log(err.stack || err));
Examples
Changelog
v4.0.0
- expose template variables (frontside, backside and css)v3.1.0
- make setting APP_ENV optionalv3.0.0
- add tags, ES6 refactor (breaking)v2.0.0
- add media support, update jszip dependency (breaking)v1.0.0
- initial rewrite
Tips
- issue#25 - Dealing with
sql.js
memory limits
Related
License
MIT © ewnd9