UNPKG

2.08 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6const PackageGenerator_1 = __importDefault(require("./PackageGenerator"));
7const PACKAGE_JSON_GENERATED = '.package.json';
8const PACKAGE_JSON = 'package.json';
9/**
10 * A Dockerfile generator for Javascript projects
11 */
12class JavascriptGenerator extends PackageGenerator_1.default {
13 // Methods that override those in `Generator`
14 constructor(urlFetcher, pkg, folder, nodeMajorVersion = 10) {
15 super(urlFetcher, pkg, folder);
16 this.nodeMajorVersion = nodeMajorVersion;
17 }
18 applies() {
19 return this.package.runtimePlatform === 'Node.js';
20 }
21 aptKeysCommand(sysVersion) {
22 return 'curl -sSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -';
23 }
24 aptRepos(sysVersion) {
25 const baseVersionName = this.baseVersionName(sysVersion);
26 return [
27 `deb https://deb.nodesource.com/node_${this.nodeMajorVersion}.x ${baseVersionName} main`
28 ];
29 }
30 aptPackages(sysVersion) {
31 return ['nodejs'];
32 }
33 stencilaInstall(sysVersion) {
34 return 'npm install stencila-node@0.28.15';
35 }
36 installFiles(sysVersion) {
37 // Use any existing 'package.json'
38 if (this.exists(PACKAGE_JSON))
39 return [[PACKAGE_JSON, PACKAGE_JSON]];
40 // Generate a `.package.json` file to copy into image
41 const dependencies = {};
42 for (let dependency of this.filterPackages('Node.js')) {
43 dependencies[dependency.name] = dependency.version;
44 }
45 const pkgjson = {
46 name: this.package.name || 'unnamed',
47 dependencies
48 };
49 this.write(PACKAGE_JSON_GENERATED, JSON.stringify(pkgjson, null, ' '));
50 return [[PACKAGE_JSON_GENERATED, PACKAGE_JSON]];
51 }
52 installCommand(sysVersion) {
53 return 'npm install package.json';
54 }
55}
56exports.default = JavascriptGenerator;