1 | const path = require('path');
|
2 | const fs = require('fs-extra');
|
3 | const Handlebars = require('handlebars');
|
4 | const log = require('fancy-log');
|
5 |
|
6 | const prompt = require('prompt');
|
7 | prompt.colors = false;
|
8 |
|
9 | const taskAdd = function ({
|
10 | demo,
|
11 | htmlTemplate,
|
12 | jsTemplate,
|
13 | liveReload,
|
14 | suffix,
|
15 | commonsChunk
|
16 | }) {
|
17 |
|
18 | return function (done = () => {}) {
|
19 |
|
20 | prompt.start();
|
21 |
|
22 | prompt.get({
|
23 | properties: {
|
24 | name: {
|
25 | description: 'Enter the NAME of demo/page you want to create',
|
26 | pattern: /^[0-9a-zA-Z\-]+$/,
|
27 | message: 'Name must be only letters, numbers and dashes.',
|
28 | required: true
|
29 | }
|
30 | }
|
31 | }, function (err, result) {
|
32 |
|
33 | if (!err) {
|
34 |
|
35 | const { name } = result;
|
36 |
|
37 | const targetPathHtml = path.resolve(demo, `${name}.html`);
|
38 | const targetPathJS = path.resolve(demo, `${name}.js`);
|
39 |
|
40 | if (fs.existsSync(targetPathHtml) || fs.existsSync(targetPathJS)) {
|
41 | done(new Error(`The file ${name}.html or ${name}.js exists. You could change a name or remove the file before creating a new one.`));
|
42 | } else {
|
43 |
|
44 | const templateHTML = Handlebars.compile(fs.readFileSync(htmlTemplate, 'utf-8'));
|
45 | const templateJS = Handlebars.compile(fs.readFileSync(jsTemplate, 'utf-8'));
|
46 |
|
47 | fs.outputFileSync(targetPathHtml, templateHTML({
|
48 | name,
|
49 | liveReload,
|
50 | suffix,
|
51 | commons: commonsChunk
|
52 | }));
|
53 |
|
54 | fs.outputFileSync(targetPathJS, templateJS({
|
55 | name,
|
56 | liveReload,
|
57 | suffix,
|
58 | commons: commonsChunk
|
59 | }));
|
60 |
|
61 | log(`Add demo/page success, you need to restart dev task to see the new created demo/page.`)
|
62 |
|
63 | done();
|
64 | }
|
65 |
|
66 | } else {
|
67 | done(err);
|
68 | }
|
69 |
|
70 | })
|
71 |
|
72 | }
|
73 |
|
74 | }
|
75 |
|
76 | module.exports = taskAdd; |
\ | No newline at end of file |