Skip to content

Commit e3ba0d8

Browse files
committed
Adds nvmrc file when creating new function.
Fixes #8.
1 parent 1bd7274 commit e3ba0d8

File tree

5 files changed

+48
-5
lines changed

5 files changed

+48
-5
lines changed

packages/create-twilio-function/src/create-twilio-function.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ const {
33
createDirectory,
44
createEnvFile,
55
createExampleFunction,
6-
createPackageJSON
6+
createPackageJSON,
7+
createNvmrcFile
78
} = require('./create-twilio-function/create-files');
89
const createGitignore = require('./create-twilio-function/create-gitignore');
910
const importCredentials = require('./create-twilio-function/import-credentials');
@@ -44,6 +45,7 @@ async function createTwilioFunction(config) {
4445
accountSid: config.accountSid,
4546
authToken: config.authToken
4647
});
48+
await createNvmrcFile(projectDir);
4749
await createExampleFunction(`${projectDir}/functions`);
4850
await createPackageJSON(projectDir, config.name);
4951
spinner.succeed();

packages/create-twilio-function/src/create-twilio-function/create-files.js

+12-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
const versions = require('./versions');
12
const fs = require('fs');
23
const { promisify } = require('util');
34
const mkdir = promisify(fs.mkdir);
@@ -26,8 +27,9 @@ function createPackageJSON(path, name) {
2627
start: 'twilio-run --env'
2728
},
2829
devDependencies: {
29-
'twilio-run': '^1.0.0-beta.4'
30-
}
30+
'twilio-run': versions.twilioRun
31+
},
32+
engines: { node: versions.node }
3133
},
3234
null,
3335
2
@@ -52,9 +54,16 @@ AUTH_TOKEN=${authToken}`;
5254
return createFile(fullPath, content);
5355
}
5456

57+
function createNvmrcFile(path) {
58+
const fullPath = `${path}/.nvmrc`;
59+
const content = versions.node;
60+
return createFile(fullPath, content);
61+
}
62+
5563
module.exports = {
5664
createDirectory,
5765
createPackageJSON,
5866
createExampleFunction,
59-
createEnvFile
67+
createEnvFile,
68+
createNvmrcFile
6069
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
module.exports = {
2+
twilioRun: '^1.0.1',
3+
node: '8.10.0'
4+
};

packages/create-twilio-function/tests/create-files.test.js

+27-1
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ const {
22
createPackageJSON,
33
createDirectory,
44
createExampleFunction,
5-
createEnvFile
5+
createEnvFile,
6+
createNvmrcFile
67
} = require('../src/create-twilio-function/create-files');
8+
const versions = require('../src/create-twilio-function/versions');
79
const fs = require('fs');
810
const { promisify } = require('util');
911
const rimraf = promisify(require('rimraf'));
@@ -48,6 +50,10 @@ describe('createPackageJSON', () => {
4850
expect(file.isFile());
4951
const packageJSON = JSON.parse(await readFile('./scratch/package.json'));
5052
expect(packageJSON.name).toEqual('project-name');
53+
expect(packageJSON.engines.node).toEqual(versions.node);
54+
expect(packageJSON.devDependencies['twilio-run']).toEqual(
55+
versions.twilioRun
56+
);
5157
});
5258

5359
test('it rejects if there is already a package.json', async () => {
@@ -109,3 +115,23 @@ describe('createEnvFile', () => {
109115
}
110116
});
111117
});
118+
119+
describe('createNvmrcFile', () => {
120+
test('it creates a new .nvmrc file', async () => {
121+
await createNvmrcFile('./scratch');
122+
const file = await stat('./scratch/.nvmrc');
123+
expect(file.isFile());
124+
const contents = await readFile('./scratch/.nvmrc', { encoding: 'utf-8' });
125+
expect(contents).toMatch(versions.node);
126+
});
127+
128+
test('it rejects if there is already an .nvmrc file', async () => {
129+
fs.closeSync(fs.openSync('./scratch/.nvmrc', 'w'));
130+
expect.assertions(1);
131+
try {
132+
await createNvmrcFile('./scratch');
133+
} catch (e) {
134+
expect(e.toString()).toMatch('file already exists');
135+
}
136+
});
137+
});

packages/create-twilio-function/tests/create-twilio-function.test.js

+2
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ describe('createTwilioFunction', () => {
5858
expect(dir.isDirectory());
5959
const env = await stat(`./scratch/${name}/.env`);
6060
expect(env.isFile());
61+
const nvmrc = await stat(`./scratch/${name}/.nvmrc`);
62+
expect(nvmrc.isFile());
6163

6264
const packageJSON = await stat(`./scratch/${name}/package.json`);
6365
expect(packageJSON.isFile());

0 commit comments

Comments
 (0)