UNPKG

1.42 kBJavaScriptView Raw
1/*
2* @adonisjs/mrm-preset
3*
4* (c) Harminder Virk <virk@adonisjs.com>
5*
6* For the full copyright and license information, please view the LICENSE
7* file that was distributed with this source code.
8*/
9
10const { packageJson, file } = require('mrm-core')
11const { execSync } = require('child_process')
12
13const TsPreset = require('./TsPreset')
14const mergeConfig = require('../utils/mergeConfig')
15const buildJapaFile = require('../utils/buildJapaFile')
16
17const baseDependencies = ['japa']
18
19function task (config) {
20 mergeConfig(config, { services: [], license: 'UNLICENSED' })
21
22 /**
23 * Create package.json file, if missing
24 */
25 const initialPkgFile = packageJson()
26 if (!initialPkgFile.exists()) {
27 execSync('npm init --yes')
28 }
29
30 TsPreset.install(baseDependencies)
31
32 const pkgFile = packageJson()
33
34 /**
35 * Below are common scripts for both Typescript and Javascript
36 * projects.
37 */
38 pkgFile.setScript('mrm', 'mrm --preset=@adonisjs/mrm-preset')
39 pkgFile.setScript('test', 'node japaFile.js')
40 pkgFile.setScript('pretest', 'npm run lint')
41 pkgFile.set('license', config.license)
42
43 TsPreset.up(pkgFile)
44
45 /**
46 * Save the package file
47 */
48 pkgFile.save()
49
50 /**
51 * Create japaFile.js
52 */
53 const japaFile = file('japaFile.js')
54 japaFile.save(buildJapaFile(japaFile.get(), config.ts))
55}
56
57task.description = 'Adds package.json file and configures/installs dependencies'
58module.exports = task