UNPKG

933 BJavaScriptView Raw
1var fs = require('fs');
2var path = require('path');
3var _ = require('lodash');
4var exists = require('is-there');
5
6const DEFAULT_ENGINE = '0.10.38';
7
8module.exports = {
9 name: 'node',
10 detect: function(dir) {
11 if (exists.sync(path.resolve(dir, 'package.json'))) return true;
12 if (exists.sync(path.resolve(dir, 'server.js'))) return true;
13 },
14 getDockerfile: function(dir) {
15 var templatePath = path.resolve(__dirname, 'Dockerfile.t');
16 var template = fs.readFileSync(templatePath, { encoding: 'utf8' });
17 var compiled = _.template(template);
18 var pkg = path.resolve(dir, 'package.json');
19 var engine = getEngines(pkg).node || DEFAULT_ENGINE;
20 return compiled({
21 node_engine: engine
22 });
23 }
24};
25
26function getEngines(pkg) {
27 try {
28 var contents = fs.readFileSync(pkg, { format: 'utf8' });
29 var json = JSON.parse(contents);
30 return json.engines || {};
31 }
32 catch (e) {
33 return {};
34 }
35}