Skip to content

Commit 4b5734b

Browse files
durrankangas
authored andcommitted
Merge pull request #336 from 10gen/INT-1319-less-compile-cache
INT-1319: Add less compile cache: (cherry picked from commit 15d9b0b)
1 parent 4ff91ba commit 4b5734b

File tree

11 files changed

+120
-62
lines changed

11 files changed

+120
-62
lines changed

.eslintrc

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
{
2+
"env": {
3+
"mocha": true,
4+
"node": true,
5+
},
6+
"rules": {
7+
"camelcase": 1
8+
},
29
"extends": [
310
"mongodb-js/node",
411
"mongodb-js/browser"
5-
],
6-
"rules": {
7-
"camelcase": 1
8-
}
12+
]
913
}

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@ src/app/templates.js
1010
src/connect/static-connect.html
1111
report.json
1212
.user-data/
13+
src/app/compiled-less/

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,15 @@
2727
"prestart": "node scripts/prestart.js",
2828
"start": "node scripts/start.js",
2929
"//": "Run only the fast unit tests",
30-
"pretest": "node scripts/templatize.js",
30+
"pretest": "npm run compile-ui",
3131
"test": "xvfb-maybe node scripts/test.js",
3232
"prepublish": "node scripts/prepublish.js",
3333
"postuninstall": "node scripts/postuninstall.js",
34-
"precheck": "node scripts/templatize.js",
34+
"precheck": "npm run compile-ui",
3535
"check": "mongodb-js-precommit ./src/app/*.js ./src/app/**/**/*.js ./src/{app/**/*.js,main/**/*.js} ./{scripts,test}/*.js",
3636
"ci": "npm run test",
3737
"clean": "npm run postuninstall",
38+
"compile-ui": "node scripts/compile-ui.js",
3839
"fmt": "mongodb-js-fmt ./*.js src/{**/*.js,*.js} test/{**/*.js,*.js} scripts/*.js",
3940
"release": "npm run prepublish",
4041
"test-functional": "npm test -- --functional",
@@ -77,6 +78,7 @@
7778
"jquery": "^2.1.4",
7879
"keytar": "mongodb-js/node-keytar#node-pre-gyp",
7980
"less": "^2.6.1",
81+
"less-cache": "^0.23.0",
8082
"local-links": "^1.4.0",
8183
"lodash": "^3.10.1",
8284
"marked": "^0.3.5",

scripts/compile-ui.js

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
var async = require('async');
2+
var templatizer = require('templatizer');
3+
var path = require('path');
4+
var createCLI = require('mongodb-js-cli');
5+
var cli = createCLI('mongodb-compass:scripts:compile-ui');
6+
var LessCache = require('less-cache');
7+
var fs = require('fs');
8+
9+
function generateLessCache(CONFIG, done) {
10+
var appDir = path.join(__dirname, '..', 'src', 'app');
11+
var cacheDir = path.join(appDir, 'compiled-less');
12+
var src = path.join(appDir, 'index.less');
13+
14+
var callback = done;
15+
if (typeof CONFIG === 'function') {
16+
callback = CONFIG;
17+
}
18+
19+
var lessCache = new LessCache({ cacheDir: cacheDir, resourcePath: appDir });
20+
21+
fs.readFile(src, 'utf-8', function(err, contents) {
22+
if (err) {
23+
return done(err);
24+
}
25+
lessCache.cssForFile(src, contents);
26+
callback();
27+
});
28+
}
29+
30+
function generateTemplates(CONFIG, done) {
31+
var callback = done;
32+
if (typeof CONFIG === 'function') {
33+
callback = CONFIG;
34+
}
35+
var appdir = path.join(__dirname, '..', 'src', 'app');
36+
templatizer(appdir, path.join(appdir, 'templates.js'), callback);
37+
}
38+
39+
module.exports.generateTemplates = generateTemplates;
40+
module.exports.generateLessCache = generateLessCache;
41+
42+
function main() {
43+
async.series([
44+
generateTemplates,
45+
generateLessCache
46+
], function(err) {
47+
cli.abortIfError(err);
48+
cli.debug('Compiled application UI.');
49+
process.exit(0);
50+
});
51+
}
52+
53+
/**
54+
* ## Main
55+
*/
56+
if (cli.argv.$0 && cli.argv.$0.indexOf('compile-ui.js') > -1) {
57+
main();
58+
}

scripts/postuninstall.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ if (cli.argv.verbose) {
1818
require('debug').enable('ele*,mon*');
1919
}
2020

21-
2221
var del = require('del');
2322
var async = require('async');
2423
var path = require('path');
2524

25+
var COMPILED_LESS = path.join('src', 'app', 'compiled-less');
2626

2727
cli.spinner('Removing build artifacts');
28-
async.parallel(['dist/', 'node_modules/'].map(function(p) {
28+
async.parallel(['dist/', 'node_modules/', COMPILED_LESS].map(function(p) {
2929
return function(cb) {
3030
del(path.join(__dirname, '..', p)).then(cb.bind(null, null));
3131
};

scripts/prepublish.js

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@ var run = require('electron-installer-run');
5050
var license = require('electron-license');
5151
var createCLI = require('mongodb-js-cli');
5252
var config = require('./config');
53-
var generateTemplates = require('./templatize');
53+
var compileUI = require('./compile-ui');
54+
var generateTemplates = compileUI.generateTemplates;
55+
var generateLessCache = compileUI.generateLessCache;
5456

5557
/**
5658
* TODO (imlucas) Document and use yargs environment variable support.
@@ -119,18 +121,6 @@ function cleanupBrandedApplicationScaffold(CONFIG, done) {
119121
}, done);
120122
}
121123

122-
/**
123-
* TODO (imlucas) Currently just a stub.
124-
*
125-
* @see [Atom's `prebuild-less-task.coffee`](https://git.io/vaZkL)
126-
* @param {Object} CONFIG
127-
* @param {Function} done
128-
* @api public
129-
*/
130-
function compileApplicationUI(CONFIG, done) {
131-
done();
132-
}
133-
134124
/**
135125
* Replace the LICENSE file `electron-packager` creates w/ a LICENSE
136126
* file specific to the project.
@@ -372,12 +362,12 @@ function main() {
372362
var tasks = [
373363
createBrandedApplication,
374364
cleanupBrandedApplicationScaffold,
375-
compileApplicationUI,
365+
generateTemplates,
366+
generateLessCache,
376367
writeLicenseFile,
377368
writeVersionFile,
378369
transformPackageJson,
379370
installDependencies,
380-
generateTemplates,
381371
removeDevelopmentFiles,
382372
createApplicationAsar,
383373
createApplicationZip,

scripts/prestart.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ var format = require('util').format;
3636
var run = require('electron-installer-run');
3737
var checkPython = require('check-python');
3838
var async = require('async');
39-
var generateTemplates = require('./templatize');
39+
var compileUI = require('./compile-ui');
40+
var generateTemplates = compileUI.generateTemplates;
41+
var generateLessCache = compileUI.generateLessCache;
4042

4143
function checkNpmAndNodejs(done) {
4244
run('npm', ['version', '--json', '--loglevel', 'error'], {
@@ -79,7 +81,8 @@ function main() {
7981
async.series([
8082
checkPython,
8183
checkNpmAndNodejs,
82-
generateTemplates
84+
generateTemplates,
85+
generateLessCache
8386
], function(err) {
8487
cli.abortIfError(err);
8588
cli.debug('Environment verified as sane!');

scripts/templatize.js

Lines changed: 0 additions & 28 deletions
This file was deleted.

src/app/index.html

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
<head>
44
<title>MongoDB Compass</title>
55
<meta name="viewport" content="initial-scale=1">
6-
<link rel="stylesheet/less" type="text/css" href="index.less" charset="UTF-8">
76
<style>
87
div#static-sidebar {
98
position: fixed;
@@ -23,13 +22,5 @@
2322
</div>
2423
</div>
2524
<script src="index.js" charset="UTF-8" async></script>
26-
<script>
27-
window.less = {
28-
env: process.env.NODE_ENV,
29-
logLevel: 2,
30-
async: true
31-
};
32-
</script>
33-
<script src="../../node_modules/less/dist/less.js" charset="UTF-8" async></script>
3425
</body>
3526
</html>

src/app/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ if (process.env.NODE_ENV !== 'production') {
66
var debug = require('debug')('mongodb-compass:app');
77
console.time('app/index.js');
88

9+
var StyleManager = require('./style-manager');
10+
StyleManager.writeStyles();
11+
912
/**
1013
* The main entrypoint for the application!
1114
*/

0 commit comments

Comments
 (0)