diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2017-12-14 21:47:23 +0100 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2017-12-14 21:47:23 +0100 |
| commit | 7b56f23b11ef78dafae13495ef878cebaf97f061 (patch) | |
| tree | 5b810d4f0c6bc70b6cde4f207a1d6ec325fab705 | |
| parent | fcf86a6e78fd6631dbc6b2046f4aff7cf08eef8a (diff) | |
js minify process for production
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | bucky/app/index.js | 5 | ||||
| -rw-r--r-- | bucky/bin/build-scripts.js | 33 | ||||
| -rw-r--r-- | bucky/bin/build-search.js | 3 | ||||
| -rw-r--r-- | bucky/search/lexicon.js | 2 | ||||
| -rw-r--r-- | bucky/util/middleware.js | 1 | ||||
| -rw-r--r-- | package-lock.json | 14 | ||||
| -rw-r--r-- | package.json | 1 | ||||
| -rw-r--r-- | public/assets/css/bucky.css | 40 | ||||
| -rw-r--r-- | views/partials/footer.ejs | 6 | ||||
| -rw-r--r-- | views/partials/header.ejs | 2 |
11 files changed, 94 insertions, 15 deletions
@@ -17,4 +17,6 @@ search.db.1 search/db/env/* uploads npm-debug.log +app.min.js +app.min.js.map diff --git a/bucky/app/index.js b/bucky/app/index.js index b600935..71b2d57 100644 --- a/bucky/app/index.js +++ b/bucky/app/index.js @@ -69,6 +69,11 @@ site.init = function(){ app.set('view engine', 'ejs') app.set('views', path.join(__dirname, '../../views')) app.use(express.static(path.join(__dirname, '../../public'))) + + // rebuild javascript after restarting server + if (process.env.NODE_ENV === 'production') { + require('../bin/build-scripts') + } } site.route = require('./router') diff --git a/bucky/bin/build-scripts.js b/bucky/bin/build-scripts.js new file mode 100644 index 0000000..43cb20e --- /dev/null +++ b/bucky/bin/build-scripts.js @@ -0,0 +1,33 @@ +var fs = require('fs') +var UglifyJS = require("uglify-es") + +var index = fs.readFileSync('views/partials/scripts.ejs', "utf8") + +var scripts = {} +index.split('\n') + .map(line => { + var pz = line.split('"') + if (pz.length < 3) return null + return 'public' + pz[1] + }) + .filter(fn => !! fn) + .forEach(fn => { + scripts[fn] = fs.readFileSync(fn, "utf8") + }) + +var result = UglifyJS.minify(scripts, { + sourceMap: { + filename: "app.js", + url: "app.js.map" + } +}) +if (result.error) { + console.error(result.error) +} +if (result.warnings) { + console.error(result.warnings) +} +fs.writeFileSync("public/assets/min/app.min.js", result.code, "utf8") +fs.writeFileSync("public/assets/min/app.min.js.map", result.map, "utf8") + + diff --git a/bucky/bin/build-search.js b/bucky/bin/build-search.js new file mode 100644 index 0000000..d417087 --- /dev/null +++ b/bucky/bin/build-search.js @@ -0,0 +1,3 @@ +var search = require('../search/lexicon') +search.build() + diff --git a/bucky/search/lexicon.js b/bucky/search/lexicon.js index a9729fd..e6a9e84 100644 --- a/bucky/search/lexicon.js +++ b/bucky/search/lexicon.js @@ -9,7 +9,7 @@ var search_db = bdb('search') var lexicon = {} var total = 0 -build_index() +module.exports = { build: build_index } function build_index() { parse_threads() diff --git a/bucky/util/middleware.js b/bucky/util/middleware.js index a744c89..a27e745 100644 --- a/bucky/util/middleware.js +++ b/bucky/util/middleware.js @@ -11,6 +11,7 @@ var middleware = module.exports = { ensureLocals: function (req, res, next) { res.locals.csrfToken = req.csrfToken() res.locals.title = "bucky" + res.locals.env = process.env.NODE_ENV if (req.isAuthenticated()) { res.locals.show_header = true } diff --git a/package-lock.json b/package-lock.json index d834840..71b0a4b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1837,6 +1837,11 @@ } } }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", @@ -1905,6 +1910,15 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, + "uglify-es": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.2.2.tgz", + "integrity": "sha512-l+s5VLzFwGJfS+fbqaGf/Dfwo1MF13jLOF2ekL0PytzqEqQ6cVppvHf4jquqFok+35USMpKjqkYxy6pQyUcuug==", + "requires": { + "commander": "2.12.2", + "source-map": "0.6.1" + } + }, "uid-safe": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.4.tgz", diff --git a/package.json b/package.json index 53016be..2acd59b 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "serve-favicon": "^2.3.0", "sessionstore": "^1.2.18", "skipper": "^0.5.5", + "uglify-es": "^3.2.2", "unix-crypt-td-js": "^1.0.0" } } diff --git a/public/assets/css/bucky.css b/public/assets/css/bucky.css index 23e4690..d123961 100644 --- a/public/assets/css/bucky.css +++ b/public/assets/css/bucky.css @@ -55,8 +55,8 @@ h1 { margin: 0; } .subtitle { - margin-top: 5px; margin-bottom: 10px; + line-height: 1.5; } .subtitle:empty { display: none; @@ -520,15 +520,18 @@ pre br { border-color: #ddd; height: 240px; } -#comment_form textarea::placeholder { - color: #000; -} #comment_form textarea:invalid { background: transparent; border-color: transparent; height: 30px; opacity: 0.4; } +#comment_form textarea:invalid::placeholder { + color: black; +} +#comment_form.focused textarea:invalid::placeholder { + color: #888; +} .black #comment_form textarea:invalid::placeholder { color: #fff; padding-bottom: 4px; @@ -837,12 +840,17 @@ pre br { .index header .search_form { display: none; } +header { + display: flex; + flex-direction: row; + justify-content: space-between; +} header .search_form { - float: right; margin-top: 10px; + white-space: nowrap; } -header .search_form input[type=text] { - width: 150px; +.index header .search_form input[type=text] { + width: 250px; } /* PROFILE */ @@ -922,8 +930,15 @@ header .search_form input[type=text] { } } @media (max-width: 700px) { + html { + padding-bottom: 0px; + } body { - padding: 10px 10px; + padding: 0; + } + header { + flex-direction: column; + justify-content: flex-start; } h1 { font-size: 20px; @@ -945,17 +960,15 @@ header .search_form input[type=text] { } header .search_form, .index header .search_form { + float: none; display: block; margin-top: 0; } - .search_form input[type='text'] { - width: 250px; - } #threads td:nth-child(1) { display: none; } #threads td:nth-child(2) { - min-width: 200px; + min-width: 180px; } #threads td:nth-child(3) small { display: none; @@ -966,6 +979,9 @@ header .search_form input[type=text] { #threads .size { display: none; } + .file td:nth-child(3) { + display: none; + } #details { flex-direction: column; } diff --git a/views/partials/footer.ejs b/views/partials/footer.ejs index 163e28b..d5d82d0 100644 --- a/views/partials/footer.ejs +++ b/views/partials/footer.ejs @@ -1,5 +1,9 @@ </content> <% include ../partials/404 %> </body> -<% include ../partials/scripts %> +<% if (env == 'production') { %> + <script src="/assets/min/app.min.js"></script> +<% } else { %> + <% include ../partials/scripts %> +<% } %> </html>
\ No newline at end of file diff --git a/views/partials/header.ejs b/views/partials/header.ejs index f31594b..c810114 100644 --- a/views/partials/header.ejs +++ b/views/partials/header.ejs @@ -10,7 +10,7 @@ <body class="loading"> <header> - <% include ../partials/searchform %> <h1><%= title %></h1> + <% include ../partials/searchform %> </header> <content>
\ No newline at end of file |
