UNPKG

5.96 kBJavaScriptView Raw
1"use strict";
2var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4 return new (P || (P = Promise))(function (resolve, reject) {
5 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8 step((generator = generator.apply(thisArg, _arguments || [])).next());
9 });
10};
11Object.defineProperty(exports, "__esModule", { value: true });
12exports.patchEnv = exports.dotenvParse = exports.formatPrefix = exports.clearConsole = exports.printDevelopmentTip = exports.readDirWithFileTypes = exports.getTemplateSourceType = exports.getAllFilesInFolder = exports.printPkgVersion = exports.getPkgItemByKey = exports.getPkgVersion = exports.getRootPath = void 0;
13const helper_1 = require("@tarojs/helper");
14const dotenv_1 = require("dotenv");
15const dotenv_expand_1 = require("dotenv-expand");
16const fs = require("fs-extra");
17const path = require("path");
18function getRootPath() {
19 return path.resolve(__dirname, '../../');
20}
21exports.getRootPath = getRootPath;
22function getPkgVersion() {
23 return require(path.join(getRootPath(), 'package.json')).version;
24}
25exports.getPkgVersion = getPkgVersion;
26function getPkgItemByKey(key) {
27 const packageMap = require(path.join(getRootPath(), 'package.json'));
28 if (Object.keys(packageMap).indexOf(key) === -1) {
29 return {};
30 }
31 else {
32 return packageMap[key];
33 }
34}
35exports.getPkgItemByKey = getPkgItemByKey;
36function printPkgVersion() {
37 const taroVersion = getPkgVersion();
38 console.log(`👽 Taro v${taroVersion}`);
39 console.log();
40}
41exports.printPkgVersion = printPkgVersion;
42const getAllFilesInFolder = (folder, filter = []) => __awaiter(void 0, void 0, void 0, function* () {
43 let files = [];
44 const list = readDirWithFileTypes(folder);
45 yield Promise.all(list.map((item) => __awaiter(void 0, void 0, void 0, function* () {
46 const itemPath = path.join(folder, item.name);
47 if (item.isDirectory) {
48 const _files = yield (0, exports.getAllFilesInFolder)(itemPath, filter);
49 files = [...files, ..._files];
50 }
51 else if (item.isFile) {
52 if (!filter.find(rule => rule === item.name))
53 files.push(itemPath);
54 }
55 })));
56 return files;
57});
58exports.getAllFilesInFolder = getAllFilesInFolder;
59function getTemplateSourceType(url) {
60 if (/^github:/.test(url) || /^gitlab:/.test(url) || /^direct:/.test(url)) {
61 return 'git';
62 }
63 else {
64 return 'url';
65 }
66}
67exports.getTemplateSourceType = getTemplateSourceType;
68function readDirWithFileTypes(folder) {
69 const list = fs.readdirSync(folder);
70 const res = list.map(name => {
71 const stat = fs.statSync(path.join(folder, name));
72 return {
73 name,
74 isDirectory: stat.isDirectory(),
75 isFile: stat.isFile()
76 };
77 });
78 return res;
79}
80exports.readDirWithFileTypes = readDirWithFileTypes;
81function printDevelopmentTip(platform) {
82 if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test') {
83 let exampleCommand;
84 if (helper_1.isWindows) {
85 exampleCommand = `$ set NODE_ENV=production && taro build --type ${platform} --watch`;
86 }
87 else {
88 exampleCommand = `$ NODE_ENV=production taro build --type ${platform} --watch`;
89 }
90 console.log(helper_1.chalk.yellowBright(`Tips: 预览模式生成的文件较大,设置 NODE_ENV 为 production 可以开启压缩。
91Example:
92${exampleCommand}
93`));
94 }
95}
96exports.printDevelopmentTip = printDevelopmentTip;
97function clearConsole() {
98 const readline = require('readline');
99 if (process.stdout.isTTY) {
100 const blank = '\n'.repeat(process.stdout.rows);
101 console.log(blank);
102 readline.cursorTo(process.stdout, 0, 0);
103 readline.clearScreenDown(process.stdout);
104 }
105}
106exports.clearConsole = clearConsole;
107// 支持 --env-prefix=TARO_APP_,aa 类型参数
108const formatPrefix = (prefixs = ['TARO_APP_']) => {
109 const prefixsArr = (Array.isArray(prefixs) ? prefixs : prefixs.split(',')).map(prefix => prefix.trim()).filter(prefix => !!prefix);
110 return prefixsArr;
111};
112exports.formatPrefix = formatPrefix;
113const dotenvParse = (root, prefixs = ['TARO_APP_'], mode) => {
114 const prefixsArr = (0, exports.formatPrefix)(prefixs);
115 const envFiles = new Set([
116 /** default file */ `.env`,
117 /** local file */ `.env.local`,
118 ]);
119 if (mode) {
120 envFiles.add(/** mode file */ `.env.${mode}`);
121 envFiles.add(/** mode local file */ `.env.${mode}.local`);
122 }
123 let parseTemp = {};
124 const load = envPath => {
125 // file doesn'et exist
126 if (!fs.existsSync(envPath))
127 return;
128 const env = (0, dotenv_1.parse)(fs.readFileSync(envPath));
129 parseTemp = Object.assign(Object.assign({}, parseTemp), env);
130 };
131 envFiles.forEach(envPath => {
132 load(path.resolve(root, envPath));
133 });
134 const parsed = {};
135 Object.entries(parseTemp).forEach(([key, value]) => {
136 if (prefixsArr.some(prefix => key.startsWith(prefix))) {
137 parsed[key] = value;
138 }
139 });
140 (0, dotenv_expand_1.expand)({ parsed });
141 return parsed;
142};
143exports.dotenvParse = dotenvParse;
144// 扩展 env
145const patchEnv = (config, expandEnv) => {
146 const expandEnvStringify = {};
147 for (const key in expandEnv) {
148 expandEnvStringify[key] = JSON.stringify(expandEnv[key]);
149 }
150 return Object.assign(Object.assign({}, config.env), expandEnv);
151};
152exports.patchEnv = patchEnv;
153//# sourceMappingURL=index.js.map
\No newline at end of file