This feels so basic that no one bothers to explain it. I'm trying to use the fullcalendar library in my app. In their documentation under «Basic Usage», I found this:
The first step in embedding a calendar on a web page is to have the right JavaScript and CSS files. Make sure you are including the FullCalendar stylesheet, as well as the FullCalendar, jQuery, and Moment JavaScript files, in the of your page:
<link rel='stylesheet' href='fullcalendar/fullcalendar.css' /> <script src='lib/jquery.min.js'></script> <script src='lib/moment.min.js'></script> <script src='fullcalendar/fullcalendar.js'></script>
And under «Download», it says this:
You can install FullCalendar via NPM:
$ npm install fullcalendar
What I don't understand is, where do I find the fullcalendar.css, jquery.min.js, moment.min.js and fullcalendar.js files to include?
NPM install doesn't download a directory into my downloads directories that I can drag into my project, it adds files to my node_modules directory, and I doubt I'm supposed to go rummaging in there for the files (my node_modules directory has thousands of directories in it). I tried using Webpack to bundle the js files, thinking it might automatically include them in the bundle, but that didn't work. What am I missing?
You don't need to have any of the script tags or stylesheet links in the header if you use Webpack, with this webpack.config.js:
module.exports = {
entry: "./calendar.js",
output: { filename: "bundle.js" },
module: {
loaders: [
{
test: [/.js?$/],
exclude: /node_modules/,
loader: 'babel',
query: {
presets: ['es2015']
}
},
{
test: /\.css$/,
loader: 'style-loader!css-loader'
}
]
}
};
And you need to npm install babel. And if you want Webpack to handle your CSS files for you too, you can npm install style-loader and css-loader. Here's my package.json:
{
"name": "full_calendar_demo",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"babel-core": "^6.18.2",
"babel-loader": "^6.2.8",
"babel-preset-es2015": "^6.18.0",
"css-loader": "^0.26.1",
"fullcalendar": "^3.1.0",
"jquery": "^3.1.1",
"moment": "^2.17.1",
"style-loader": "^0.13.1",
"webpack": "^1.13.3"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
Then my index.html file doesn't need the script tags:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src='bundle.js'></script>
</head>
<body>
<div id="calendar"></div>
</body>
</html>
And I just include the packages in my JavaScript file:
import $ from 'jquery'
import 'fullcalendar'
import 'fullcalendar/dist/fullcalendar.css'
$(document).ready(() => {
$('#calendar').fullCalendar()
})
I'm still looking for a way to clean up the way I import the CSS file, but at least I don't have an HTML file that looks like this:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel='stylesheet' href='node_modules/fullcalendar/dist/fullcalendar.css' />
<script src='node_modules/jquery/dist/jquery.min.js'></script>
<script src='node_modules/moment/min/moment.min.js'></script>
<script src='node_modules/fullcalendar/dist/fullcalendar.js'></script>
<script src='entry.js'></script>
</head>
<body>
<div id="calendar"></div>
</body>
</html>
Please let me know how to include the CSS file more cleanly.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With