UNPKG

3.48 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const path = require("path");
4const _ = require("lodash");
5const util_1 = require("../util");
6/**
7 * 单文件模块
8 *
9 * @export
10 * @class WxSFM
11 */
12class WxSFM {
13 /**
14 * Creates an instance of WxSFM.
15 * @param {string} source
16 * @param {Request} request
17 * @param {WxSFM.Options} options
18 * @memberof WxSFM
19 */
20 constructor(source, request, options) {
21 this.request = request;
22 this.source = (source || '').trim();
23 this.destExt = options.destExt;
24 this.initDest();
25 }
26 /**
27 * 是否.wxa扩展,同Request.isWxa
28 *
29 * @readonly
30 * @memberof WxSFM
31 */
32 get isWxa() {
33 return this.request.isWxa;
34 }
35 /**
36 * 是否.wxp扩展,同Request.isWxp
37 *
38 * @readonly
39 * @memberof WxSFM
40 */
41 get isWxp() {
42 return this.request.isWxp;
43 }
44 /**
45 * 是否.wxc扩展,同Request.isWxc
46 *
47 * @readonly
48 * @memberof WxSFM
49 */
50 get isWxc() {
51 return this.request.isWxc;
52 }
53 /**
54 * 是否单文件类型,同Request.isSFC
55 *
56 * @readonly
57 * @memberof WxSFM
58 */
59 get isSFC() {
60 return this.request.isSFC;
61 }
62 /**
63 * 返回通过新的扩展名与 request.dest的目标绝对路径生成新的 dest目标绝对路径 和 destRelative目标相对路径
64 *
65 * @param {string} ext
66 * @returns
67 * @memberof WxSFM
68 */
69 getDester(ext) {
70 let ppath = path.parse(this.request.dest);
71 ppath.base = ppath.name + ext;
72 ppath.ext = ext;
73 let dest = path.format(ppath);
74 let destRelative = path.relative(util_1.config.cwd, dest);
75 return {
76 dest,
77 destRelative
78 };
79 }
80 // 生成
81 generator() {
82 util_1.log.fatal('WxSFM.generator Method not implemented.');
83 return '';
84 }
85 // 保存前
86 beforeSave() {
87 //
88 }
89 // 保存
90 save() {
91 this.beforeSave();
92 let code = this.generator();
93 if (_.isString(code)) {
94 this.write(code);
95 }
96 else {
97 code.then(this.write.bind(this));
98 }
99 this.afterSave();
100 }
101 // 保存后
102 afterSave() {
103 //
104 }
105 // 移除前
106 beforeRemove() {
107 //
108 }
109 // 移除
110 remove() {
111 this.beforeRemove();
112 util_1.log.msg(util_1.LogType.DELETE, this.destRelative);
113 util_1.default.unlink(this.dest);
114 this.afterRemove();
115 }
116 // 移除后
117 afterRemove() {
118 //
119 }
120 // 获取依赖
121 getDepends() {
122 util_1.log.fatal('WxSFM.getDepends Method not implemented.');
123 return [];
124 }
125 // 更新依赖
126 updateDepends(uses) {
127 util_1.log.fatal('WxSFM.updateRequest Method not implemented.');
128 }
129 /**
130 * 设置 dest目标绝对路径 和 destRelative目标相对路径
131 *
132 * @private
133 * @memberof WxSFM
134 */
135 initDest() {
136 let dester = this.getDester(this.destExt);
137 this.dest = dester.dest;
138 this.destRelative = dester.destRelative;
139 }
140 /**
141 * 将内容写入到 dest目标绝对路径
142 *
143 * @private
144 * @param {string} code
145 * @memberof WxSFM
146 */
147 write(code) {
148 util_1.log.msg(util_1.LogType.WRITE, this.destRelative);
149 util_1.default.writeFile(this.dest, code);
150 }
151}
152exports.WxSFM = WxSFM;