A JavaScript implementation for generating Anki decks in browser. This is fork of mkanki.
Download genanki zip file from release pages.
The zip file contains two folder
-
dist
: This folder containsgenanki.js
file. If project already configured with sql.js, FileSaver.js and JSZip then just addgenanki.js
file to project. -
sample
: This folder contains latest sql.js, FileSaver.js, JSZip and genanki.js. It is ready to use folder.
Alternatively, genanki.js
can also be loaded from CDN.
<script src="https://cdn.jsdelivr.net/gh/krmanik/genanki-js/dist/genanki.js"></script>
1. Download genanki.js
from dist folder and add to the project
<!-- for creating and exporting anki package file -->
<script src='genanki.js'></script>
2. Add sql.js, FileSaver.js and JSZip to the project
Note: mkanki uses
better-sql
,fs
andarchiver
, that make it difficult to be used in browser
<!-- sqlite -->
<script src='js/sql/sql.js'></script>
<!-- File saver -->
<script src="js/filesaver/FileSaver.min.js"></script>
<!-- jszip for .apkg -->
<script src="js/jszip.min.js"></script>
Note: The
SQL
variable is used in package.js#L20.
// The `initSqlJs` function is globally provided by all of the main dist files if loaded in the browser.
// We must specify this locateFile function if we are loading a wasm file from anywhere other than the current html page's folder.
config = {
locateFile: filename => `js/sql/sql-wasm.wasm`
}
var SQL;
initSqlJs(config).then(function (sql) {
//Create the database
SQL = sql;
});
.
└── sample
├── js
│ ├── anki
│ │ └── genanki.js
│ ├── filesaver
│ │ ├── FileSaver.min.js
│ │ └── FileSaver.min.js.map
│ ├── sql
│ │ ├── sql.js
│ │ └── sql-wasm.wasm
│ ├── jszip.min.js
│ └── index.js
└── index.html
View more examples here Examples
var m = new Model({
name: "Basic (and reversed card)",
id: "1543634829843",
flds: [
{ name: "Front" },
{ name: "Back" }
],
req: [
[ 0, "all", [ 0 ] ],
[ 1, "all", [ 1 ] ]
],
tmpls: [
{
name: "Card 1",
qfmt: "{{Front}}",
afmt: "{{FrontSide}}\n\n<hr id=answer>\n\n{{Back}}",
},
{
name: "Card 2",
qfmt: "{{Back}}",
afmt: "{{FrontSide}}\n\n<hr id=answer>\n\n{{Front}}",
}
],
})
var d = new Deck(1276438724672, "Test Deck")
d.addNote(m.note(['this is front', 'this is back']))
var p = new Package()
p.addDeck(d)
p.writeToFile('deck.apkg')
GNU Affero General Public License v3
Copyright (c) 2021 Mani