1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 | const execa = require('execa')
|
7 |
|
8 | module.exports = api =>
|
9 | new Promise(resolve => {
|
10 | api.render('./templates/base', {}, true)
|
11 | api.extendPackageJson({
|
12 | devDependencies: {
|
13 | '@types/node': '11.9.5'
|
14 | }
|
15 | })
|
16 |
|
17 | execa('yarn')
|
18 |
|
19 | if (api.prompts.rename) {
|
20 | const glob = require('glob')
|
21 | const fs = require('fs')
|
22 | const path = require('path')
|
23 |
|
24 | const quasarConfigPath = api.resolve.app('./quasar.conf.js')
|
25 | const replaceRegex = /module\.exports = function \((ctx)?\) {\n\s*return {/
|
26 | let quasarConfig = fs.readFileSync(quasarConfigPath, 'utf8')
|
27 | if (!replaceRegex.test(quasarConfig)) {
|
28 | console.log(`
|
29 | We could not automatically update your quasar.conf.js to
|
30 | use typescript. Quasar looks for *.js files by default.
|
31 | Please add this to your quasar.conf.js:
|
32 |
|
33 | sourceFiles: {
|
34 | router: 'src/router/index.ts',
|
35 | store: 'src/store/index.ts'
|
36 | }
|
37 | `)
|
38 | }
|
39 | quasarConfig = quasarConfig.replace(
|
40 | replaceRegex,
|
41 | `module.exports = function (ctx) {
|
42 | return {
|
43 | // Quasar looks for *.js files by default
|
44 | sourceFiles: {
|
45 | router: 'src/router/index.ts',
|
46 | store: 'src/store/index.ts'
|
47 | },`
|
48 | )
|
49 | fs.writeFileSync(quasarConfigPath, quasarConfig)
|
50 |
|
51 | glob(api.resolve.app('src/**/*.js'), (err, files) => {
|
52 | if (err) throw err
|
53 | files.forEach(file => {
|
54 | const newFile = path.parse(file)
|
55 | newFile.ext = '.ts'
|
56 | delete newFile.base
|
57 | fs.renameSync(file, path.format(newFile))
|
58 | })
|
59 | glob(api.resolve.app('src/**/*.vue'), (err, files) => {
|
60 | if (err) throw err
|
61 | files.forEach(file => {
|
62 | let text = fs.readFileSync(file, 'utf8')
|
63 | text = text.replace(/<script.*>/, tag => {
|
64 | tag = tag.replace(/lang=".{1,4}" ?/, '')
|
65 | return tag.replace('<script', '<script lang="ts"')
|
66 | })
|
67 | fs.writeFileSync(file, text)
|
68 | })
|
69 | resolve()
|
70 | })
|
71 | })
|
72 | }
|
73 | })
|