|
- ## Setup R Package
-
- Create a package for this HTML widget.
- We're not going to publish this, so you can call it whatever you want
-
- ```{r create-package}
- usethis::create_package("frappeCharts")
- ```
-
- Add a dev script for notes
-
- ```{r dev}
- dir.create("dev")
- file.create("dev/dev.R")
- rstudioapi::navigateToFile("dev/dev.R")
- ```
-
- ## Setup npm package
-
- Same process again, but this time for npm.
-
- ```bash
- npm init
-
- # or
-
- npm init -y
- ```
-
- Open `package.json` and take a look
-
- ```json
- {
- "name": "frappecharts",
- "version": "0.0.1",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "author": "",
- "license": "MIT"
- }
- ```
-
- From Frappe Charts [docs#installation](https://frappe.io/charts/docs#installation):
-
- ```bash
- npm install frappe-charts
- ```
-
- We now have a dependency in `package.json` and there's a `package-lock.json` file.
-
- ```json
- "dependencies": {
- "frappe-charts": "^1.3.0"
- }
- ```
-
- ## Ignore node_modules but add package-lock
-
- There's also a `node_modules/` folder with `frappe-charts/` inside.
- Add `node_modules` to `.Rbuildignore` and `.gitignore`.
- (BTW, you can and are supposed to commit `package-lock.json`.)
-
- ```{r ignore-node-module}
- usethis::use_build_ignore("node_modules")
- usethis::use_build_ignore("package.json")
- usethis::use_build_ignore("package-lock.json")
- usethis::use_git_ignore("node_modules")
- ```
-
- ## Scaffold the HTML widget
-
- ```{r htmlwidgets-scaffold}
- htmlwidgets::scaffoldWidget("frappeChart")
- ```
-
- This adds files in `inst/htmlwidgets`
-
- ```
- inst
- └── htmlwidgets
- ├── frappeChart.js #<< R <-> JS code
- └── frappeChart.yaml #<< list of dependencies
- ```
-
- and creates a file `R/frappeChart.R` with the functions
-
- - `frappeChart()`
- - `frappeChartOutput()` (for shiny)
- - `renderFrappeChart()` (for shiny)
|