Merge branch 'master' into DepauMD
This commit is contained in:
commit
b665a62323
16 changed files with 146 additions and 166 deletions
26
docs/dev/webpack.md
Normal file
26
docs/dev/webpack.md
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
# Webpack Docs
|
||||||
|
## `webpack.common.js`
|
||||||
|
This file contains all common definition for chunks and plugins, that are needed by the whole app.
|
||||||
|
|
||||||
|
**TODO:** Document which entry points are used for what.
|
||||||
|
|
||||||
|
## `webpack.htmlexport.js`
|
||||||
|
Separate config for the "save as html" feature.
|
||||||
|
Packs all CSS from `public/js/htmlExport.js` to `build/html.min.css`.
|
||||||
|
This file is then downloaded by client-side JS and used to create the HTML.
|
||||||
|
See `exportToHTML()` in `public/js/extra.js`.
|
||||||
|
|
||||||
|
|
||||||
|
## `webpack.dev.js`
|
||||||
|
The development config uses both common configs, enables development mode and enables "cheap" source maps (lines only).
|
||||||
|
If you need more detailed source maps while developing, you might want to use the `source-maps` option.
|
||||||
|
See https://webpack.js.org/configuration/devtool/ for details.
|
||||||
|
|
||||||
|
## `webpack.prod.js`
|
||||||
|
The production config uses both common configs and enables production mode.
|
||||||
|
This automatically enables various optimizations (e.g. UglifyJS). See https://webpack.js.org/concepts/mode/ for details.
|
||||||
|
|
||||||
|
For the global app config, the name of the emitted chunks is changed to include the content hash.
|
||||||
|
See https://webpack.js.org/guides/caching/ on why this is a good idea.
|
||||||
|
|
||||||
|
For the HTML export config, CSS minification is enabled.
|
|
@ -9,7 +9,7 @@ var defaultDirectives = {
|
||||||
// ^ TODO: Remove unsafe-eval - webpack script-loader issues https://github.com/hackmdio/codimd/issues/594
|
// ^ TODO: Remove unsafe-eval - webpack script-loader issues https://github.com/hackmdio/codimd/issues/594
|
||||||
imgSrc: ['*'],
|
imgSrc: ['*'],
|
||||||
styleSrc: ['\'self\'', '\'unsafe-inline\'', 'https://assets-cdn.github.com'], // unsafe-inline is required for some libs, plus used in views
|
styleSrc: ['\'self\'', '\'unsafe-inline\'', 'https://assets-cdn.github.com'], // unsafe-inline is required for some libs, plus used in views
|
||||||
fontSrc: ['\'self\'', 'https://public.slidesharecdn.com'],
|
fontSrc: ['\'self\'', 'data:', 'https://public.slidesharecdn.com'],
|
||||||
objectSrc: ['*'], // Chrome PDF viewer treats PDFs as objects :/
|
objectSrc: ['*'], // Chrome PDF viewer treats PDFs as objects :/
|
||||||
mediaSrc: ['*'],
|
mediaSrc: ['*'],
|
||||||
childSrc: ['*'],
|
childSrc: ['*'],
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
"test": "npm run-script standard && npm run-script jsonlint",
|
"test": "npm run-script standard && npm run-script jsonlint",
|
||||||
"jsonlint": "find . -not -path './node_modules/*' -type f -name '*.json' -o -type f -name '*.json.example' | while read json; do echo $json ; jq . $json; done",
|
"jsonlint": "find . -not -path './node_modules/*' -type f -name '*.json' -o -type f -name '*.json.example' | while read json; do echo $json ; jq . $json; done",
|
||||||
"standard": "node ./node_modules/standard/bin/cmd.js",
|
"standard": "node ./node_modules/standard/bin/cmd.js",
|
||||||
"dev": "webpack --config webpack.config.js --mode=production --progress --colors --watch",
|
"dev": "webpack --config webpack.dev.js --progress --colors --watch",
|
||||||
"build": "webpack --config webpack.production.js --progress --colors --bail",
|
"build": "webpack --config webpack.prod.js --progress --colors --bail",
|
||||||
"postinstall": "bin/heroku",
|
"postinstall": "bin/heroku",
|
||||||
"start": "node app.js",
|
"start": "node app.js",
|
||||||
"doctoc": "doctoc --title='# Table of Contents' README.md"
|
"doctoc": "doctoc --title='# Table of Contents' README.md"
|
||||||
|
@ -47,7 +47,7 @@
|
||||||
"gist-embed": "~2.6.0",
|
"gist-embed": "~2.6.0",
|
||||||
"graceful-fs": "^4.1.11",
|
"graceful-fs": "^4.1.11",
|
||||||
"handlebars": "^4.0.6",
|
"handlebars": "^4.0.6",
|
||||||
"helmet": "^3.3.0",
|
"helmet": "^3.13.0",
|
||||||
"highlight.js": "~9.12.0",
|
"highlight.js": "~9.12.0",
|
||||||
"i18n": "^0.8.3",
|
"i18n": "^0.8.3",
|
||||||
"imgur": "git+https://github.com/hackmdio/node-imgur.git",
|
"imgur": "git+https://github.com/hackmdio/node-imgur.git",
|
||||||
|
@ -89,7 +89,6 @@
|
||||||
"morgan": "^1.7.0",
|
"morgan": "^1.7.0",
|
||||||
"mysql": "^2.12.0",
|
"mysql": "^2.12.0",
|
||||||
"node-uuid": "^1.4.7",
|
"node-uuid": "^1.4.7",
|
||||||
"octicons": "~4.4.0",
|
|
||||||
"passport": "^0.4.0",
|
"passport": "^0.4.0",
|
||||||
"passport-dropbox-oauth2": "^1.1.0",
|
"passport-dropbox-oauth2": "^1.1.0",
|
||||||
"passport-facebook": "^2.1.1",
|
"passport-facebook": "^2.1.1",
|
||||||
|
@ -188,6 +187,7 @@
|
||||||
"url-loader": "^1.0.1",
|
"url-loader": "^1.0.1",
|
||||||
"webpack": "^4.14.0",
|
"webpack": "^4.14.0",
|
||||||
"webpack-cli": "^3.1.0",
|
"webpack-cli": "^3.1.0",
|
||||||
|
"webpack-merge": "^4.1.4",
|
||||||
"webpack-parallel-uglify-plugin": "^1.1.0"
|
"webpack-parallel-uglify-plugin": "^1.1.0"
|
||||||
},
|
},
|
||||||
"standard": {
|
"standard": {
|
||||||
|
|
|
@ -119,23 +119,24 @@
|
||||||
color: #ddd;
|
color: #ddd;
|
||||||
}
|
}
|
||||||
|
|
||||||
.markdown-body h1 .octicon-link,
|
.markdown-body h1 .fa-link,
|
||||||
.markdown-body h2 .octicon-link,
|
.markdown-body h2 .fa-link,
|
||||||
.markdown-body h3 .octicon-link,
|
.markdown-body h3 .fa-link,
|
||||||
.markdown-body h4 .octicon-link,
|
.markdown-body h4 .fa-link,
|
||||||
.markdown-body h5 .octicon-link,
|
.markdown-body h5 .fa-link,
|
||||||
.markdown-body h6 .octicon-link {
|
.markdown-body h6 .fa-link {
|
||||||
color: #000;
|
color: #000;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.night .markdown-body h1 .octicon-link,
|
.night .markdown-body h1 .fa-link,
|
||||||
.night .markdown-body h2 .octicon-link,
|
.night .markdown-body h2 .fa-link,
|
||||||
.night .markdown-body h3 .octicon-link,
|
.night .markdown-body h3 .fa-link,
|
||||||
.night .markdown-body h4 .octicon-link,
|
.night .markdown-body h4 .fa-link,
|
||||||
.night .markdown-body h5 .octicon-link,
|
.night .markdown-body h5 .fa-link,
|
||||||
.night .markdown-body h6 .octicon-link {
|
.night .markdown-body h6 .fa-link {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,12 +149,12 @@
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.markdown-body h1:hover .anchor .octicon-link,
|
.markdown-body h1:hover .anchor .fa-link,
|
||||||
.markdown-body h2:hover .anchor .octicon-link,
|
.markdown-body h2:hover .anchor .fa-link,
|
||||||
.markdown-body h3:hover .anchor .octicon-link,
|
.markdown-body h3:hover .anchor .fa-link,
|
||||||
.markdown-body h4:hover .anchor .octicon-link,
|
.markdown-body h4:hover .anchor .fa-link,
|
||||||
.markdown-body h5:hover .anchor .octicon-link,
|
.markdown-body h5:hover .anchor .fa-link,
|
||||||
.markdown-body h6:hover .anchor .octicon-link {
|
.markdown-body h6:hover .anchor .fa-link {
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -834,7 +834,7 @@ const anchorForId = id => {
|
||||||
const anchor = document.createElement('a')
|
const anchor = document.createElement('a')
|
||||||
anchor.className = 'anchor hidden-xs'
|
anchor.className = 'anchor hidden-xs'
|
||||||
anchor.href = `#${id}`
|
anchor.href = `#${id}`
|
||||||
anchor.innerHTML = '<span class="octicon octicon-link"></span>'
|
anchor.innerHTML = '<i class="fa fa-link"></i>'
|
||||||
anchor.title = id
|
anchor.title = id
|
||||||
return anchor
|
return anchor
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fork-awesome/1.1.3/css/fork-awesome.min.css" integrity="sha256-ZhApazu+kejqTYhMF+1DzNKjIzP7KXu6AzyXcC1gMus=" crossorigin="anonymous" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fork-awesome/1.1.3/css/fork-awesome.min.css" integrity="sha256-ZhApazu+kejqTYhMF+1DzNKjIzP7KXu6AzyXcC1gMus=" crossorigin="anonymous" />
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-social/4.9.0/bootstrap-social.min.css" integrity="sha256-02JtFTurpwBjQJ6q13iJe82/NF0RbZlJroDegK5g87Y=" crossorigin="anonymous" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-social/4.9.0/bootstrap-social.min.css" integrity="sha256-02JtFTurpwBjQJ6q13iJe82/NF0RbZlJroDegK5g87Y=" crossorigin="anonymous" />
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css" integrity="sha256-3iu9jgsy9TpTwXKb7bNQzqWekRX7pPK+2OLj3R922fo=" crossorigin="anonymous" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css" integrity="sha256-3iu9jgsy9TpTwXKb7bNQzqWekRX7pPK+2OLj3R922fo=" crossorigin="anonymous" />
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/octicons/4.4.0/octicons.min.css" integrity="sha256-4eCms8tUm+iL29tUvmRhNRnz/7lNI4oTtQzqa/uM2dI=" crossorigin="anonymous" />
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/emojify.js/1.1.0/css/basic/emojify.min.css" integrity="sha256-UOrvMOsSDSrW6szVLe8ZDZezBxh5IoIfgTwdNDgTjiU=" crossorigin="anonymous" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/emojify.js/1.1.0/css/basic/emojify.min.css" integrity="sha256-UOrvMOsSDSrW6szVLe8ZDZezBxh5IoIfgTwdNDgTjiU=" crossorigin="anonymous" />
|
||||||
<%- include ../build/index-header %>
|
<%- include ../build/index-header %>
|
||||||
<%- include ../shared/polyfill %>
|
<%- include ../shared/polyfill %>
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" />
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fork-awesome/1.1.3/css/fork-awesome.min.css" integrity="sha256-ZhApazu+kejqTYhMF+1DzNKjIzP7KXu6AzyXcC1gMus=" crossorigin="anonymous" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fork-awesome/1.1.3/css/fork-awesome.min.css" integrity="sha256-ZhApazu+kejqTYhMF+1DzNKjIzP7KXu6AzyXcC1gMus=" crossorigin="anonymous" />
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css" integrity="sha256-3iu9jgsy9TpTwXKb7bNQzqWekRX7pPK+2OLj3R922fo=" crossorigin="anonymous" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css" integrity="sha256-3iu9jgsy9TpTwXKb7bNQzqWekRX7pPK+2OLj3R922fo=" crossorigin="anonymous" />
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/octicons/4.4.0/octicons.min.css" integrity="sha256-4eCms8tUm+iL29tUvmRhNRnz/7lNI4oTtQzqa/uM2dI=" crossorigin="anonymous" />
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.5.1/themes/prism.min.css" integrity="sha256-vtR0hSWRc3Tb26iuN2oZHt3KRUomwTufNIf5/4oeCyg=" crossorigin="anonymous" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.5.1/themes/prism.min.css" integrity="sha256-vtR0hSWRc3Tb26iuN2oZHt3KRUomwTufNIf5/4oeCyg=" crossorigin="anonymous" />
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github-gist.min.css" integrity="sha256-tAflq+ymku3Khs+I/WcAneIlafYgDiOQ9stIHH985Wo=" crossorigin="anonymous" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github-gist.min.css" integrity="sha256-tAflq+ymku3Khs+I/WcAneIlafYgDiOQ9stIHH985Wo=" crossorigin="anonymous" />
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/emojify.js/1.1.0/css/basic/emojify.min.css" integrity="sha256-UOrvMOsSDSrW6szVLe8ZDZezBxh5IoIfgTwdNDgTjiU=" crossorigin="anonymous" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/emojify.js/1.1.0/css/basic/emojify.min.css" integrity="sha256-UOrvMOsSDSrW6szVLe8ZDZezBxh5IoIfgTwdNDgTjiU=" crossorigin="anonymous" />
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" />
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fork-awesome/1.1.3/css/fork-awesome.min.css" integrity="sha256-ZhApazu+kejqTYhMF+1DzNKjIzP7KXu6AzyXcC1gMus=" crossorigin="anonymous" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fork-awesome/1.1.3/css/fork-awesome.min.css" integrity="sha256-ZhApazu+kejqTYhMF+1DzNKjIzP7KXu6AzyXcC1gMus=" crossorigin="anonymous" />
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css" integrity="sha256-3iu9jgsy9TpTwXKb7bNQzqWekRX7pPK+2OLj3R922fo=" crossorigin="anonymous" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css" integrity="sha256-3iu9jgsy9TpTwXKb7bNQzqWekRX7pPK+2OLj3R922fo=" crossorigin="anonymous" />
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/octicons/4.4.0/octicons.min.css" integrity="sha256-4eCms8tUm+iL29tUvmRhNRnz/7lNI4oTtQzqa/uM2dI=" crossorigin="anonymous" />
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/emojify.js/1.1.0/css/basic/emojify.min.css" integrity="sha256-UOrvMOsSDSrW6szVLe8ZDZezBxh5IoIfgTwdNDgTjiU=" crossorigin="anonymous" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/emojify.js/1.1.0/css/basic/emojify.min.css" integrity="sha256-UOrvMOsSDSrW6szVLe8ZDZezBxh5IoIfgTwdNDgTjiU=" crossorigin="anonymous" />
|
||||||
<%- include build/pretty-header %>
|
<%- include build/pretty-header %>
|
||||||
<%- include shared/polyfill %>
|
<%- include shared/polyfill %>
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
<% if(useCDN) { %>
|
<% if(useCDN) { %>
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fork-awesome/1.1.3/css/fork-awesome.min.css" integrity="sha256-ZhApazu+kejqTYhMF+1DzNKjIzP7KXu6AzyXcC1gMus=" crossorigin="anonymous" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fork-awesome/1.1.3/css/fork-awesome.min.css" integrity="sha256-ZhApazu+kejqTYhMF+1DzNKjIzP7KXu6AzyXcC1gMus=" crossorigin="anonymous" />
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css" integrity="sha256-3iu9jgsy9TpTwXKb7bNQzqWekRX7pPK+2OLj3R922fo=" crossorigin="anonymous" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css" integrity="sha256-3iu9jgsy9TpTwXKb7bNQzqWekRX7pPK+2OLj3R922fo=" crossorigin="anonymous" />
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/octicons/4.4.0/octicons.min.css" integrity="sha256-4eCms8tUm+iL29tUvmRhNRnz/7lNI4oTtQzqa/uM2dI=" crossorigin="anonymous" />
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/css/reveal.min.css" integrity="sha256-ol2N5Xr80jdDqxK0lte3orKGb9Ja3sOnpAUV7TTADmg=" crossorigin="anonymous" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/css/reveal.min.css" integrity="sha256-ol2N5Xr80jdDqxK0lte3orKGb9Ja3sOnpAUV7TTADmg=" crossorigin="anonymous" />
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/emojify.js/1.1.0/css/basic/emojify.min.css" integrity="sha256-UOrvMOsSDSrW6szVLe8ZDZezBxh5IoIfgTwdNDgTjiU=" crossorigin="anonymous" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/emojify.js/1.1.0/css/basic/emojify.min.css" integrity="sha256-UOrvMOsSDSrW6szVLe8ZDZezBxh5IoIfgTwdNDgTjiU=" crossorigin="anonymous" />
|
||||||
<%- include build/slide-header %>
|
<%- include build/slide-header %>
|
||||||
|
|
|
@ -10,6 +10,7 @@ var gracefulFs = require('graceful-fs')
|
||||||
gracefulFs.gracefulify(fs)
|
gracefulFs.gracefulify(fs)
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
name: 'app',
|
||||||
plugins: [
|
plugins: [
|
||||||
new webpack.ProvidePlugin({
|
new webpack.ProvidePlugin({
|
||||||
Visibility: 'visibilityjs',
|
Visibility: 'visibilityjs',
|
||||||
|
@ -238,8 +239,7 @@ module.exports = {
|
||||||
path.join(__dirname, 'node_modules/bootstrap/dist/css/bootstrap.min.css'),
|
path.join(__dirname, 'node_modules/bootstrap/dist/css/bootstrap.min.css'),
|
||||||
path.join(__dirname, 'node_modules/fork-awesome/css/fork-awesome.min.css'),
|
path.join(__dirname, 'node_modules/fork-awesome/css/fork-awesome.min.css'),
|
||||||
path.join(__dirname, 'public/css/bootstrap-social.css'),
|
path.join(__dirname, 'public/css/bootstrap-social.css'),
|
||||||
path.join(__dirname, 'node_modules/ionicons/css/ionicons.min.css'),
|
path.join(__dirname, 'node_modules/ionicons/css/ionicons.min.css')
|
||||||
path.join(__dirname, 'node_modules/octicons/build/octicons.css')
|
|
||||||
],
|
],
|
||||||
'index-pack': [
|
'index-pack': [
|
||||||
'babel-polyfill',
|
'babel-polyfill',
|
||||||
|
@ -288,8 +288,7 @@ module.exports = {
|
||||||
'pretty-styles-pack': [
|
'pretty-styles-pack': [
|
||||||
path.join(__dirname, 'node_modules/bootstrap/dist/css/bootstrap.min.css'),
|
path.join(__dirname, 'node_modules/bootstrap/dist/css/bootstrap.min.css'),
|
||||||
path.join(__dirname, 'node_modules/fork-awesome/css/fork-awesome.min.css'),
|
path.join(__dirname, 'node_modules/fork-awesome/css/fork-awesome.min.css'),
|
||||||
path.join(__dirname, 'node_modules/ionicons/css/ionicons.min.css'),
|
path.join(__dirname, 'node_modules/ionicons/css/ionicons.min.css')
|
||||||
path.join(__dirname, 'node_modules/octicons/build/octicons.css')
|
|
||||||
],
|
],
|
||||||
'pretty-pack': [
|
'pretty-pack': [
|
||||||
'babel-polyfill',
|
'babel-polyfill',
|
||||||
|
@ -325,8 +324,7 @@ module.exports = {
|
||||||
],
|
],
|
||||||
'slide-styles-pack': [
|
'slide-styles-pack': [
|
||||||
path.join(__dirname, 'node_modules/fork-awesome/css/fork-awesome.min.css'),
|
path.join(__dirname, 'node_modules/fork-awesome/css/fork-awesome.min.css'),
|
||||||
path.join(__dirname, 'node_modules/ionicons/css/ionicons.min.css'),
|
path.join(__dirname, 'node_modules/ionicons/css/ionicons.min.css')
|
||||||
path.join(__dirname, 'node_modules/octicons/build/octicons.css')
|
|
||||||
],
|
],
|
||||||
'slide-pack': [
|
'slide-pack': [
|
||||||
'babel-polyfill',
|
'babel-polyfill',
|
|
@ -1,41 +0,0 @@
|
||||||
var baseConfig = require('./webpackBaseConfig')
|
|
||||||
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
|
|
||||||
var path = require('path')
|
|
||||||
|
|
||||||
module.exports = [Object.assign({}, baseConfig, {
|
|
||||||
plugins: baseConfig.plugins.concat([
|
|
||||||
new MiniCssExtractPlugin({
|
|
||||||
filename: '[name].css',
|
|
||||||
chunkFilename: '[id].css'
|
|
||||||
})
|
|
||||||
|
|
||||||
]),
|
|
||||||
devtool: 'source-map'
|
|
||||||
}), {
|
|
||||||
devtool: 'source-map',
|
|
||||||
entry: {
|
|
||||||
htmlExport: path.join(__dirname, 'public/js/htmlExport.js')
|
|
||||||
},
|
|
||||||
module: {
|
|
||||||
rules: [{
|
|
||||||
test: /\.css$/,
|
|
||||||
use: ['style-loader', 'css-loader']
|
|
||||||
}, {
|
|
||||||
test: /\.scss$/,
|
|
||||||
use: ['style-loader', 'sass-loader']
|
|
||||||
}, {
|
|
||||||
test: /\.less$/,
|
|
||||||
use: ['style-loader', 'less-loader']
|
|
||||||
}]
|
|
||||||
},
|
|
||||||
output: {
|
|
||||||
path: path.join(__dirname, 'public/build'),
|
|
||||||
publicPath: '/build/',
|
|
||||||
filename: '[name].js'
|
|
||||||
},
|
|
||||||
plugins: [
|
|
||||||
new MiniCssExtractPlugin({
|
|
||||||
filename: 'html.min.css'
|
|
||||||
})
|
|
||||||
]
|
|
||||||
}]
|
|
14
webpack.dev.js
Normal file
14
webpack.dev.js
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
const common = require('./webpack.common.js')
|
||||||
|
const htmlexport = require('./webpack.htmlexport')
|
||||||
|
const merge = require('webpack-merge')
|
||||||
|
|
||||||
|
module.exports = [
|
||||||
|
// merge common config
|
||||||
|
merge(common, {
|
||||||
|
mode: 'development',
|
||||||
|
devtool: 'cheap-module-eval-source-map'
|
||||||
|
}),
|
||||||
|
merge(htmlexport, {
|
||||||
|
mode: 'development',
|
||||||
|
devtool: 'cheap-module-eval-source-map'
|
||||||
|
})]
|
25
webpack.htmlexport.js
Normal file
25
webpack.htmlexport.js
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
|
||||||
|
const path = require('path')
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: 'save-as-html',
|
||||||
|
entry: {
|
||||||
|
htmlExport: path.join(__dirname, 'public/js/htmlExport.js')
|
||||||
|
},
|
||||||
|
module: {
|
||||||
|
rules: [{
|
||||||
|
test: /\.css$/,
|
||||||
|
use: [MiniCssExtractPlugin.loader, 'css-loader']
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
output: {
|
||||||
|
path: path.join(__dirname, 'public/build'),
|
||||||
|
publicPath: '/build/',
|
||||||
|
filename: '[name].js'
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
new MiniCssExtractPlugin({
|
||||||
|
filename: 'html.min.css'
|
||||||
|
})
|
||||||
|
]
|
||||||
|
}
|
23
webpack.prod.js
Normal file
23
webpack.prod.js
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
const common = require('./webpack.common.js')
|
||||||
|
const htmlexport = require('./webpack.htmlexport')
|
||||||
|
const merge = require('webpack-merge')
|
||||||
|
const path = require('path')
|
||||||
|
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
|
||||||
|
|
||||||
|
module.exports = [
|
||||||
|
merge(common, {
|
||||||
|
mode: 'production',
|
||||||
|
output: {
|
||||||
|
path: path.join(__dirname, 'public/build'),
|
||||||
|
publicPath: '/build/',
|
||||||
|
filename: '[name].[contenthash].js'
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
merge(htmlexport, {
|
||||||
|
mode: 'production',
|
||||||
|
optimization: {
|
||||||
|
minimizer: [
|
||||||
|
new OptimizeCSSAssetsPlugin({})
|
||||||
|
]
|
||||||
|
}
|
||||||
|
})]
|
|
@ -1,75 +0,0 @@
|
||||||
var baseConfig = require('./webpackBaseConfig')
|
|
||||||
var webpack = require('webpack')
|
|
||||||
var path = require('path')
|
|
||||||
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
|
|
||||||
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
|
|
||||||
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
|
|
||||||
|
|
||||||
module.exports = [Object.assign({}, baseConfig, {
|
|
||||||
plugins: baseConfig.plugins.concat([
|
|
||||||
new webpack.DefinePlugin({
|
|
||||||
'process.env': {
|
|
||||||
'NODE_ENV': JSON.stringify('production')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
]),
|
|
||||||
|
|
||||||
optimization: {
|
|
||||||
minimizer: [
|
|
||||||
new UglifyJsPlugin({
|
|
||||||
parallel: true,
|
|
||||||
cache: true
|
|
||||||
})
|
|
||||||
],
|
|
||||||
splitChunks: {
|
|
||||||
chunks: 'async',
|
|
||||||
minChunks: Infinity
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
output: {
|
|
||||||
path: path.join(__dirname, 'public/build'),
|
|
||||||
publicPath: '/build/',
|
|
||||||
filename: '[id].[name].[hash].js'
|
|
||||||
// baseUrl: '<%- url %>'
|
|
||||||
}
|
|
||||||
}), {
|
|
||||||
// This Chunk is used in the 'save as html' feature.
|
|
||||||
// It is embedded in the html file and contains CSS for styling.
|
|
||||||
|
|
||||||
entry: {
|
|
||||||
htmlExport: path.join(__dirname, 'public/js/htmlExport.js')
|
|
||||||
},
|
|
||||||
|
|
||||||
output: {
|
|
||||||
path: path.join(__dirname, 'public/build'),
|
|
||||||
publicPath: '/build/',
|
|
||||||
filename: '[name].js'
|
|
||||||
},
|
|
||||||
plugins: [
|
|
||||||
new webpack.DefinePlugin({
|
|
||||||
'process.env': {
|
|
||||||
'NODE_ENV': JSON.stringify('production')
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new MiniCssExtractPlugin({
|
|
||||||
filename: 'html.min.css'
|
|
||||||
})
|
|
||||||
],
|
|
||||||
|
|
||||||
optimization: {
|
|
||||||
minimizer: [
|
|
||||||
new OptimizeCSSAssetsPlugin({})
|
|
||||||
]
|
|
||||||
},
|
|
||||||
|
|
||||||
module: {
|
|
||||||
rules: [{
|
|
||||||
test: /\.css$/,
|
|
||||||
use: [
|
|
||||||
MiniCssExtractPlugin.loader,
|
|
||||||
'css-loader'
|
|
||||||
]
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
}]
|
|
45
yarn.lock
45
yarn.lock
|
@ -3963,6 +3963,11 @@ fd-slicer@~1.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
pend "~1.2.0"
|
pend "~1.2.0"
|
||||||
|
|
||||||
|
feature-policy@0.1.0:
|
||||||
|
version "0.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/feature-policy/-/feature-policy-0.1.0.tgz#782d4865b1f261aa6ff6d0bba0c4eaeb2fd92862"
|
||||||
|
integrity sha512-Sq+O5vUN0wQGOLGKzDXY1xCY6dOPic2ufMEF0xpVHIW+Dr8LocJ7Jhnvo5ZBCXKqWUgmGIqcF5AIJR+Wnq2SQw==
|
||||||
|
|
||||||
figures@^1.0.1, figures@^1.3.5:
|
figures@^1.0.1, figures@^1.3.5:
|
||||||
version "1.7.0"
|
version "1.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
|
resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
|
||||||
|
@ -4889,27 +4894,33 @@ he@1.1.x, he@^1.1.1:
|
||||||
resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
|
resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
|
||||||
integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0=
|
integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0=
|
||||||
|
|
||||||
helmet-csp@2.7.0:
|
helmet-crossdomain@0.3.0:
|
||||||
version "2.7.0"
|
version "0.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/helmet-csp/-/helmet-csp-2.7.0.tgz#7934094617d1feb7bb2dc43bb7d9e8830f774716"
|
resolved "https://registry.yarnpkg.com/helmet-crossdomain/-/helmet-crossdomain-0.3.0.tgz#707e2df930f13ad61f76ed08e1bb51ab2b2e85fa"
|
||||||
integrity sha512-IGIAkWnxjRbgMXFA2/kmDqSIrIaSfZ6vhMHlSHw7jm7Gm9nVVXqwJ2B1YEpYrJsLrqY+w2Bbimk7snux9+sZAw==
|
integrity sha512-YiXhj0E35nC4Na5EPE4mTfoXMf9JTGpN4OtB4aLqShKuH9d2HNaJX5MQoglO6STVka0uMsHyG5lCut5Kzsy7Lg==
|
||||||
|
|
||||||
|
helmet-csp@2.7.1:
|
||||||
|
version "2.7.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/helmet-csp/-/helmet-csp-2.7.1.tgz#e8e0b5186ffd4db625cfcce523758adbfadb9dca"
|
||||||
|
integrity sha512-sCHwywg4daQ2mY0YYwXSZRsgcCeerUwxMwNixGA7aMLkVmPTYBl7gJoZDHOZyXkqPrtuDT3s2B1A+RLI7WxSdQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
camelize "1.0.0"
|
camelize "1.0.0"
|
||||||
content-security-policy-builder "2.0.0"
|
content-security-policy-builder "2.0.0"
|
||||||
dasherize "2.0.0"
|
dasherize "2.0.0"
|
||||||
lodash.reduce "4.6.0"
|
|
||||||
platform "1.3.5"
|
platform "1.3.5"
|
||||||
|
|
||||||
helmet@^3.3.0:
|
helmet@^3.13.0:
|
||||||
version "3.12.1"
|
version "3.14.0"
|
||||||
resolved "https://registry.yarnpkg.com/helmet/-/helmet-3.12.1.tgz#8b05bbd60f3966d70f13dad0de2c1d6c1a8303f1"
|
resolved "https://registry.yarnpkg.com/helmet/-/helmet-3.14.0.tgz#ff99e0467fe3e9205300071370024dd6e6690317"
|
||||||
integrity sha512-/CsAcbPIHgiGde395IkHUZyRLW126RJ6AtxFy6Y6bxhd44Qq8cZ5BBFZ0xNUSbcgX57j32Emh3OhWz/0XgAB5Q==
|
integrity sha512-VUOjHxegTX/dIr1KeU4ZrIkP8k0/nKKD6vNBT1LCS2+q5KO1oMFKGMVdMw/pUcxXbn/z8yP9rfyMZSTpxXPPMg==
|
||||||
dependencies:
|
dependencies:
|
||||||
dns-prefetch-control "0.1.0"
|
dns-prefetch-control "0.1.0"
|
||||||
dont-sniff-mimetype "1.0.0"
|
dont-sniff-mimetype "1.0.0"
|
||||||
expect-ct "0.1.1"
|
expect-ct "0.1.1"
|
||||||
|
feature-policy "0.1.0"
|
||||||
frameguard "3.0.0"
|
frameguard "3.0.0"
|
||||||
helmet-csp "2.7.0"
|
helmet-crossdomain "0.3.0"
|
||||||
|
helmet-csp "2.7.1"
|
||||||
hide-powered-by "1.0.0"
|
hide-powered-by "1.0.0"
|
||||||
hpkp "2.0.0"
|
hpkp "2.0.0"
|
||||||
hsts "2.1.0"
|
hsts "2.1.0"
|
||||||
|
@ -6359,7 +6370,7 @@ lodash.pick@^4.2.1:
|
||||||
resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
|
resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
|
||||||
integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=
|
integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=
|
||||||
|
|
||||||
lodash.reduce@4.6.0, lodash.reduce@^4.4.0:
|
lodash.reduce@^4.4.0:
|
||||||
version "4.6.0"
|
version "4.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b"
|
resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b"
|
||||||
integrity sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=
|
integrity sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=
|
||||||
|
@ -7490,11 +7501,6 @@ object.values@^1.0.4:
|
||||||
function-bind "^1.1.0"
|
function-bind "^1.1.0"
|
||||||
has "^1.0.1"
|
has "^1.0.1"
|
||||||
|
|
||||||
octicons@~4.4.0:
|
|
||||||
version "4.4.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/octicons/-/octicons-4.4.0.tgz#aca3bd32f5dc1d907a8d0de744f78e0c54e19446"
|
|
||||||
integrity sha1-rKO9MvXcHZB6jQ3nRPeODFThlEY=
|
|
||||||
|
|
||||||
on-finished@~2.3.0:
|
on-finished@~2.3.0:
|
||||||
version "2.3.0"
|
version "2.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
|
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
|
||||||
|
@ -11168,6 +11174,13 @@ webpack-cli@^3.1.0:
|
||||||
v8-compile-cache "^2.0.0"
|
v8-compile-cache "^2.0.0"
|
||||||
yargs "^12.0.1"
|
yargs "^12.0.1"
|
||||||
|
|
||||||
|
webpack-merge@^4.1.4:
|
||||||
|
version "4.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.4.tgz#0fde38eabf2d5fd85251c24a5a8c48f8a3f4eb7b"
|
||||||
|
integrity sha512-TmSe1HZKeOPey3oy1Ov2iS3guIZjWvMT2BBJDzzT5jScHTjVC3mpjJofgueEzaEd6ibhxRDD6MIblDr8tzh8iQ==
|
||||||
|
dependencies:
|
||||||
|
lodash "^4.17.5"
|
||||||
|
|
||||||
webpack-parallel-uglify-plugin@^1.1.0:
|
webpack-parallel-uglify-plugin@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/webpack-parallel-uglify-plugin/-/webpack-parallel-uglify-plugin-1.1.0.tgz#252a6c796bf79a8047b00de2cf08c23aa9861441"
|
resolved "https://registry.yarnpkg.com/webpack-parallel-uglify-plugin/-/webpack-parallel-uglify-plugin-1.1.0.tgz#252a6c796bf79a8047b00de2cf08c23aa9861441"
|
||||||
|
|
Loading…
Reference in a new issue