jh5_app_build 1.0.30 → 1.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/build_japp.js +1 -1
- package/lib/build_std.js +226 -77
- package/package.json +6 -1
- package/.eslintrc.js +0 -264
package/lib/build_japp.js
CHANGED
|
@@ -52,7 +52,7 @@ module.exports = async (cmd, buildCfg) => {
|
|
|
52
52
|
// 修改版本号
|
|
53
53
|
try {
|
|
54
54
|
console.log(`change dist ver ...`);
|
|
55
|
-
var repFile = `${buildCfg.rootPath}
|
|
55
|
+
var repFile = `${buildCfg.rootPath}/dist/index.html`;
|
|
56
56
|
var indexStr = fs.readFileSync(repFile, "utf8");
|
|
57
57
|
indexStr = indexStr.replace(/#J_APPNAME#/g, buildCfg.appName);
|
|
58
58
|
indexStr = indexStr.replace(/#J_DATE#/g, buildCfg.dateStr);
|
package/lib/build_std.js
CHANGED
|
@@ -5,10 +5,11 @@ let archiver = require('archiver');
|
|
|
5
5
|
let jutils = require('base_parts');
|
|
6
6
|
|
|
7
7
|
let fs = require('fs');
|
|
8
|
-
let path = require('path');
|
|
9
|
-
let os = require('os');
|
|
10
|
-
let AdmZip = require('adm-zip');
|
|
11
|
-
let child_process = require('child_process');
|
|
8
|
+
let path = require('path');
|
|
9
|
+
let os = require('os');
|
|
10
|
+
let AdmZip = require('adm-zip');
|
|
11
|
+
let child_process = require('child_process');
|
|
12
|
+
let inquirer = require('inquirer');
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
function adler32_buf(buf, seed) {
|
|
@@ -101,18 +102,166 @@ async function copyReNameDir(srcDir, destDir, pkgName) {
|
|
|
101
102
|
}
|
|
102
103
|
}
|
|
103
104
|
|
|
104
|
-
/**
|
|
105
|
-
* 创建目录并获取尾部带斜线的路径
|
|
106
|
-
* @param {string} dirPath 路径
|
|
107
|
-
* @returns {string} 路径(尾部带斜线)
|
|
108
|
-
*/
|
|
109
|
-
function makeAndGetDir(dirPath) {
|
|
110
|
-
try {
|
|
111
|
-
fs.mkdirSync(dirPath);
|
|
112
|
-
} catch (error) {
|
|
113
|
-
}
|
|
114
|
-
return path.resolve(dirPath) +
|
|
115
|
-
}
|
|
105
|
+
/**
|
|
106
|
+
* 创建目录并获取尾部带斜线的路径
|
|
107
|
+
* @param {string} dirPath 路径
|
|
108
|
+
* @returns {string} 路径(尾部带斜线)
|
|
109
|
+
*/
|
|
110
|
+
function makeAndGetDir(dirPath) {
|
|
111
|
+
try {
|
|
112
|
+
fs.mkdirSync(dirPath);
|
|
113
|
+
} catch (error) {
|
|
114
|
+
}
|
|
115
|
+
return path.resolve(dirPath) + path.sep;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* 获取本机工具缓存文件路径
|
|
120
|
+
* @returns {string} 缓存文件路径
|
|
121
|
+
*/
|
|
122
|
+
function getMacToolCachePath() {
|
|
123
|
+
return path.join(os.homedir(), ".jh5_app_build", "apk_tools_macos.json");
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* 读取macOS工具根目录缓存
|
|
128
|
+
* @returns {string} 上次输入的工具根目录
|
|
129
|
+
*/
|
|
130
|
+
function readMacToolRootCache() {
|
|
131
|
+
try {
|
|
132
|
+
var cacheObj = JSON.parse(fs.readFileSync(getMacToolCachePath(), "utf8"));
|
|
133
|
+
return cacheObj && cacheObj.toolRoot ? cacheObj.toolRoot : "";
|
|
134
|
+
} catch (error) {
|
|
135
|
+
}
|
|
136
|
+
return "";
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* 保存macOS工具根目录缓存
|
|
141
|
+
* @param {string} toolRoot 工具根目录
|
|
142
|
+
* @returns {void}
|
|
143
|
+
*/
|
|
144
|
+
function saveMacToolRootCache(toolRoot) {
|
|
145
|
+
try {
|
|
146
|
+
var cachePath = getMacToolCachePath();
|
|
147
|
+
fs.mkdirSync(path.dirname(cachePath), { recursive: true });
|
|
148
|
+
fs.writeFileSync(cachePath, JSON.stringify({
|
|
149
|
+
toolRoot: toolRoot
|
|
150
|
+
}, null, 4), "utf8");
|
|
151
|
+
} catch (error) {
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* 判断路径是否为可用文件
|
|
157
|
+
* @param {string} filePath 文件路径
|
|
158
|
+
* @returns {boolean} 是否存在文件
|
|
159
|
+
*/
|
|
160
|
+
function isValidFile(filePath) {
|
|
161
|
+
try {
|
|
162
|
+
return fs.existsSync(filePath) && fs.statSync(filePath).isFile();
|
|
163
|
+
} catch (error) {
|
|
164
|
+
}
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* 根据工具根目录和架构生成macOS工具路径
|
|
170
|
+
* @param {string} toolRoot 工具总目录
|
|
171
|
+
* @returns {*} 工具路径对象
|
|
172
|
+
*/
|
|
173
|
+
function getMacToolPathsByRoot(toolRoot) {
|
|
174
|
+
// 根据当前Mac架构选择对应工具目录
|
|
175
|
+
var archDirName = process.arch === "arm64" ? "bin_apple" : "bin_intel";
|
|
176
|
+
var archRoot = path.join(path.resolve(toolRoot), archDirName);
|
|
177
|
+
return {
|
|
178
|
+
root: path.resolve(toolRoot),
|
|
179
|
+
archRoot: archRoot,
|
|
180
|
+
cwd: path.join(archRoot, "jre", "bin"),
|
|
181
|
+
java: path.join(archRoot, "jre", "bin", "java"),
|
|
182
|
+
keytool: path.join(archRoot, "jre", "bin", "keytool"),
|
|
183
|
+
jarsigner: path.join(archRoot, "jre", "bin", "jarsigner"),
|
|
184
|
+
zipalign: path.join(archRoot, "android_build_tools", "zipalign"),
|
|
185
|
+
apktool: path.join(archRoot, "h5_bin", "apktool.jar")
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* 校验macOS打包工具是否完整
|
|
191
|
+
* @param {*} toolPaths 工具路径对象
|
|
192
|
+
* @returns {boolean} 是否完整
|
|
193
|
+
*/
|
|
194
|
+
function validMacToolPaths(toolPaths) {
|
|
195
|
+
return isValidFile(toolPaths.java)
|
|
196
|
+
&& isValidFile(toolPaths.keytool)
|
|
197
|
+
&& isValidFile(toolPaths.jarsigner)
|
|
198
|
+
&& isValidFile(toolPaths.zipalign)
|
|
199
|
+
&& isValidFile(toolPaths.apktool);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* 设置macOS命令行工具执行权限
|
|
204
|
+
* @param {*} toolPaths 工具路径对象
|
|
205
|
+
* @returns {void}
|
|
206
|
+
*/
|
|
207
|
+
function chmodMacTools(toolPaths) {
|
|
208
|
+
[toolPaths.java, toolPaths.keytool, toolPaths.jarsigner, toolPaths.zipalign].forEach((filePath) => {
|
|
209
|
+
try {
|
|
210
|
+
fs.chmodSync(filePath, 0o755);
|
|
211
|
+
} catch (error) {
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* 获取macOS打包工具路径
|
|
218
|
+
* @returns {Promise<*>} 工具路径对象
|
|
219
|
+
*/
|
|
220
|
+
async function getMacApkTools() {
|
|
221
|
+
// 只输入一次总目录,具体工具按目录规范自动拼接
|
|
222
|
+
while (true) {
|
|
223
|
+
var cacheRoot = readMacToolRootCache();
|
|
224
|
+
var answers = await inquirer.prompt([
|
|
225
|
+
{
|
|
226
|
+
type: 'input',
|
|
227
|
+
name: 'toolRoot',
|
|
228
|
+
message: 'Please input macOS APK tools root path:',
|
|
229
|
+
default: cacheRoot
|
|
230
|
+
}
|
|
231
|
+
]);
|
|
232
|
+
var toolRoot = path.resolve((answers.toolRoot || cacheRoot || "").trim());
|
|
233
|
+
var toolPaths = getMacToolPathsByRoot(toolRoot);
|
|
234
|
+
if (validMacToolPaths(toolPaths)) {
|
|
235
|
+
chmodMacTools(toolPaths);
|
|
236
|
+
saveMacToolRootCache(toolRoot);
|
|
237
|
+
console.log("[macOS APK tools] " + toolPaths.archRoot);
|
|
238
|
+
return toolPaths;
|
|
239
|
+
}
|
|
240
|
+
console.error("macOS APK tools path invalid, please check: " + toolPaths.archRoot);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* 获取APK打包工具路径
|
|
246
|
+
* @returns {Promise<*>} 工具路径对象
|
|
247
|
+
*/
|
|
248
|
+
async function getApkTools() {
|
|
249
|
+
if (process.platform === "darwin") {
|
|
250
|
+
return await getMacApkTools();
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// Windows保持原有固定工具目录
|
|
254
|
+
return {
|
|
255
|
+
root: "C:\\jdev_develop",
|
|
256
|
+
archRoot: "C:\\jdev_develop",
|
|
257
|
+
cwd: "C:\\jdev_develop\\jre\\bin",
|
|
258
|
+
java: "C:\\jdev_develop\\jre\\bin\\java.exe",
|
|
259
|
+
keytool: "C:\\jdev_develop\\jre\\bin\\keytool.exe",
|
|
260
|
+
jarsigner: "C:\\jdev_develop\\jre\\bin\\jarsigner.exe",
|
|
261
|
+
zipalign: "C:\\jdev_develop\\jre\\bin\\zipalign.exe",
|
|
262
|
+
apktool: "C:\\jdev_develop\\h5_bin\\apktool.jar"
|
|
263
|
+
};
|
|
264
|
+
}
|
|
116
265
|
|
|
117
266
|
/**
|
|
118
267
|
* 创建目录并复制文件
|
|
@@ -128,13 +277,13 @@ async function makeDirAndCopy(srcFile, dstFile) {
|
|
|
128
277
|
module.exports = async (cmd, buildCfg) => {
|
|
129
278
|
console.log(`build file to ${buildCfg.outpath}`);
|
|
130
279
|
|
|
131
|
-
try {
|
|
132
|
-
// 模板目录
|
|
133
|
-
var stdBinPriDir = `${buildCfg.rootPath}/jbuild_data/std_bins`;
|
|
134
|
-
var stdBinDir = `${buildCfg.rootPath}/jbuild_data/std_out`;
|
|
135
|
-
|
|
136
|
-
//
|
|
137
|
-
let
|
|
280
|
+
try {
|
|
281
|
+
// 模板目录
|
|
282
|
+
var stdBinPriDir = `${buildCfg.rootPath}/jbuild_data/std_bins`;
|
|
283
|
+
var stdBinDir = `${buildCfg.rootPath}/jbuild_data/std_out`;
|
|
284
|
+
|
|
285
|
+
// APK打包工具
|
|
286
|
+
let apkTools = await getApkTools();
|
|
138
287
|
|
|
139
288
|
// apk配置
|
|
140
289
|
let apkConfig = makeAndGetDir(`${buildCfg.rootPath}/apk_cfg`);
|
|
@@ -156,18 +305,18 @@ module.exports = async (cmd, buildCfg) => {
|
|
|
156
305
|
await jfile_utils.mkdir(stdBinDir);
|
|
157
306
|
|
|
158
307
|
// 存在自定义apk
|
|
159
|
-
var custumApk = `${buildCfg.rootPath}/apk_cfg/app-release.apk`
|
|
160
|
-
if (fs.existsSync(custumApk)) {
|
|
161
|
-
console.warn(`exists custum Apk, unpack custum apk...`);
|
|
162
|
-
child_process.execFileSync(
|
|
163
|
-
"-jar",
|
|
164
|
-
"d", custumApk,
|
|
165
|
-
"-r", "-s", "-f",
|
|
166
|
-
"-o", stdBinDir
|
|
167
|
-
], {
|
|
168
|
-
cwd:
|
|
169
|
-
});
|
|
170
|
-
}
|
|
308
|
+
var custumApk = `${buildCfg.rootPath}/apk_cfg/app-release.apk`
|
|
309
|
+
if (fs.existsSync(custumApk)) {
|
|
310
|
+
console.warn(`exists custum Apk, unpack custum apk...`);
|
|
311
|
+
child_process.execFileSync(apkTools.java, [
|
|
312
|
+
"-jar", apkTools.apktool,
|
|
313
|
+
"d", custumApk,
|
|
314
|
+
"-r", "-s", "-f",
|
|
315
|
+
"-o", stdBinDir
|
|
316
|
+
], {
|
|
317
|
+
cwd: apkTools.cwd
|
|
318
|
+
});
|
|
319
|
+
}
|
|
171
320
|
else {
|
|
172
321
|
// 修改应用名
|
|
173
322
|
if (apkinfoObj.pkgName) {
|
|
@@ -190,10 +339,10 @@ module.exports = async (cmd, buildCfg) => {
|
|
|
190
339
|
|
|
191
340
|
// 修改版本号
|
|
192
341
|
let platformVer = jutils.getUUID();
|
|
193
|
-
try {
|
|
194
|
-
console.log(`change dist ver ...`);
|
|
195
|
-
let repFile =
|
|
196
|
-
let indexStr = fs.readFileSync(repFile, "utf8");
|
|
342
|
+
try {
|
|
343
|
+
console.log(`change dist ver ...`);
|
|
344
|
+
let repFile = path.join(buildCfg.rootPath, "dist", "index.html");
|
|
345
|
+
let indexStr = fs.readFileSync(repFile, "utf8");
|
|
197
346
|
indexStr = indexStr.replace(/#J_APPNAME#/g, buildCfg.appName);
|
|
198
347
|
indexStr = indexStr.replace(/#J_DATE#/g, buildCfg.dateStr);
|
|
199
348
|
|
|
@@ -417,59 +566,59 @@ module.exports = async (cmd, buildCfg) => {
|
|
|
417
566
|
}
|
|
418
567
|
|
|
419
568
|
// 打包
|
|
420
|
-
console.log(`making apk...`);
|
|
421
|
-
child_process.execFileSync(
|
|
422
|
-
"-jar",
|
|
423
|
-
"b", stdBinDir,
|
|
424
|
-
"-o", buildCfg.outpath
|
|
425
|
-
], {
|
|
426
|
-
cwd:
|
|
427
|
-
});
|
|
569
|
+
console.log(`making apk...`);
|
|
570
|
+
child_process.execFileSync(apkTools.java, [
|
|
571
|
+
"-jar", apkTools.apktool,
|
|
572
|
+
"b", stdBinDir,
|
|
573
|
+
"-o", buildCfg.outpath
|
|
574
|
+
], {
|
|
575
|
+
cwd: apkTools.cwd
|
|
576
|
+
});
|
|
428
577
|
|
|
429
578
|
// 生成apk签名
|
|
430
579
|
let keyStoreFile = `${apkConfig}/apk_cert.keystore`;
|
|
431
580
|
if (!fs.existsSync(keyStoreFile)) {
|
|
432
|
-
console.log(`not find keystore,making ...`);
|
|
433
|
-
// 生成签名
|
|
434
|
-
child_process.execFileSync(
|
|
435
|
-
"-genkey",
|
|
436
|
-
"-storepass", "123456",
|
|
581
|
+
console.log(`not find keystore,making ...`);
|
|
582
|
+
// 生成签名
|
|
583
|
+
child_process.execFileSync(apkTools.keytool, [
|
|
584
|
+
"-genkey",
|
|
585
|
+
"-storepass", "123456",
|
|
437
586
|
"-keypass", "123456",
|
|
438
587
|
"-alias", "cert",
|
|
439
588
|
"-keyalg", "RSA",
|
|
440
589
|
"-validity", "20000",
|
|
441
|
-
"-keystore", keyStoreFile,
|
|
442
|
-
"-dname", "CN=10.10.6.100,OU=utils,O=utils,L=beijing,ST=beijing,c=cn"
|
|
443
|
-
], {
|
|
444
|
-
cwd:
|
|
445
|
-
});
|
|
446
|
-
}
|
|
590
|
+
"-keystore", keyStoreFile,
|
|
591
|
+
"-dname", "CN=10.10.6.100,OU=utils,O=utils,L=beijing,ST=beijing,c=cn"
|
|
592
|
+
], {
|
|
593
|
+
cwd: apkTools.cwd
|
|
594
|
+
});
|
|
595
|
+
}
|
|
447
596
|
|
|
448
597
|
// 签名
|
|
449
|
-
console.log(`sign apk ...`);
|
|
450
|
-
var singApkTmp = buildCfg.outpath + "_sign.apk";
|
|
451
|
-
child_process.execFileSync(
|
|
452
|
-
"-verbose",
|
|
453
|
-
"-storepass", "123456",
|
|
598
|
+
console.log(`sign apk ...`);
|
|
599
|
+
var singApkTmp = buildCfg.outpath + "_sign.apk";
|
|
600
|
+
child_process.execFileSync(apkTools.jarsigner, [
|
|
601
|
+
"-verbose",
|
|
602
|
+
"-storepass", "123456",
|
|
454
603
|
"-keypass", "123456",
|
|
455
604
|
"-keystore", keyStoreFile,
|
|
456
605
|
"-signedjar", singApkTmp,
|
|
457
|
-
buildCfg.outpath,
|
|
458
|
-
"cert"
|
|
459
|
-
], {
|
|
460
|
-
cwd:
|
|
461
|
-
});
|
|
606
|
+
buildCfg.outpath,
|
|
607
|
+
"cert"
|
|
608
|
+
], {
|
|
609
|
+
cwd: apkTools.cwd
|
|
610
|
+
});
|
|
462
611
|
fs.unlinkSync(buildCfg.outpath); // 删除未签名的
|
|
463
612
|
|
|
464
|
-
// 对齐apk
|
|
465
|
-
console.log(`zip align ...`);
|
|
466
|
-
child_process.execFileSync(
|
|
467
|
-
"-v", "4",
|
|
468
|
-
singApkTmp,
|
|
469
|
-
buildCfg.outpath
|
|
470
|
-
], {
|
|
471
|
-
cwd:
|
|
472
|
-
});
|
|
613
|
+
// 对齐apk
|
|
614
|
+
console.log(`zip align ...`);
|
|
615
|
+
child_process.execFileSync(apkTools.zipalign, [
|
|
616
|
+
"-v", "4",
|
|
617
|
+
singApkTmp,
|
|
618
|
+
buildCfg.outpath
|
|
619
|
+
], {
|
|
620
|
+
cwd: apkTools.cwd
|
|
621
|
+
});
|
|
473
622
|
fs.unlinkSync(singApkTmp); // 删除未对齐的
|
|
474
623
|
|
|
475
624
|
// 完成
|
package/package.json
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jh5_app_build",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.31",
|
|
4
4
|
"description": "jaskle jh5_app_build",
|
|
5
5
|
"main": "./bin/jh5_app_build.js",
|
|
6
|
+
"files": [
|
|
7
|
+
"bin/",
|
|
8
|
+
"config/",
|
|
9
|
+
"lib/"
|
|
10
|
+
],
|
|
6
11
|
"registry": true,
|
|
7
12
|
"directories": {},
|
|
8
13
|
"scripts": {
|
package/.eslintrc.js
DELETED
|
@@ -1,264 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
"env": {
|
|
3
|
-
"node" : true,
|
|
4
|
-
"browser": true,
|
|
5
|
-
"commonjs": true,
|
|
6
|
-
"es6": true,
|
|
7
|
-
"mocha" : true
|
|
8
|
-
},
|
|
9
|
-
"parserOptions": {
|
|
10
|
-
"ecmaVersion": 8
|
|
11
|
-
// "sourceType": "module",
|
|
12
|
-
// "ecmaFeatures": {
|
|
13
|
-
// "jsx": true
|
|
14
|
-
// }
|
|
15
|
-
},
|
|
16
|
-
"extends": "eslint:recommended",
|
|
17
|
-
"rules": {
|
|
18
|
-
"accessor-pairs": "error",
|
|
19
|
-
"array-bracket-newline": "error",
|
|
20
|
-
"array-bracket-spacing": "error",
|
|
21
|
-
"array-callback-return": "error",
|
|
22
|
-
"array-element-newline": "off",
|
|
23
|
-
"arrow-body-style": "off",
|
|
24
|
-
"arrow-parens": [
|
|
25
|
-
"error",
|
|
26
|
-
"always"
|
|
27
|
-
],
|
|
28
|
-
"arrow-spacing": "warn",
|
|
29
|
-
"block-scoped-var": "off",
|
|
30
|
-
"block-spacing": [
|
|
31
|
-
"error",
|
|
32
|
-
"always"
|
|
33
|
-
],
|
|
34
|
-
"brace-style": "off",
|
|
35
|
-
"callback-return": "error",
|
|
36
|
-
"camelcase": "off",
|
|
37
|
-
"capitalized-comments": "off",
|
|
38
|
-
"class-methods-use-this": "off",
|
|
39
|
-
"comma-dangle": "error",
|
|
40
|
-
"comma-spacing": "off",
|
|
41
|
-
"comma-style": [
|
|
42
|
-
"error",
|
|
43
|
-
"last"
|
|
44
|
-
],
|
|
45
|
-
"complexity": [0, 30],
|
|
46
|
-
"computed-property-spacing": [
|
|
47
|
-
"error",
|
|
48
|
-
"never"
|
|
49
|
-
],
|
|
50
|
-
"consistent-return": "off",
|
|
51
|
-
"consistent-this": "off",
|
|
52
|
-
"curly": "off",
|
|
53
|
-
"default-case": "error",
|
|
54
|
-
"dot-location": "off",
|
|
55
|
-
"dot-notation": "off",
|
|
56
|
-
"eol-last": "off",
|
|
57
|
-
"eqeqeq": "error",
|
|
58
|
-
"for-direction": "error",
|
|
59
|
-
"func-call-spacing": "error",
|
|
60
|
-
"func-name-matching": "error",
|
|
61
|
-
"func-names": [
|
|
62
|
-
"error",
|
|
63
|
-
"never"
|
|
64
|
-
],
|
|
65
|
-
"func-style": "off",
|
|
66
|
-
"function-paren-newline": "off",
|
|
67
|
-
"generator-star-spacing": "off",
|
|
68
|
-
"getter-return": "error",
|
|
69
|
-
"global-require": "off",
|
|
70
|
-
"guard-for-in": "off",
|
|
71
|
-
"handle-callback-err": "off",
|
|
72
|
-
"id-blacklist": "error",
|
|
73
|
-
"id-length": "off",
|
|
74
|
-
"id-match": "error",
|
|
75
|
-
"indent": "off",
|
|
76
|
-
"indent-legacy": "off",
|
|
77
|
-
"init-declarations": "off",
|
|
78
|
-
"jsx-quotes": "error",
|
|
79
|
-
"key-spacing": "off",
|
|
80
|
-
"keyword-spacing": "off",
|
|
81
|
-
"line-comment-position": "off",
|
|
82
|
-
"linebreak-style": "off",
|
|
83
|
-
"lines-around-comment": "off",
|
|
84
|
-
"lines-around-directive": "off",
|
|
85
|
-
"max-depth": [0, 5],
|
|
86
|
-
"max-len": "off",
|
|
87
|
-
"max-lines": "off",
|
|
88
|
-
"max-nested-callbacks": "error",
|
|
89
|
-
"max-params": "off",
|
|
90
|
-
"max-statements": "off",
|
|
91
|
-
"max-statements-per-line": "off",
|
|
92
|
-
"new-parens": "error",
|
|
93
|
-
"newline-after-var": "off",
|
|
94
|
-
"newline-before-return": "off",
|
|
95
|
-
"newline-per-chained-call": "off",
|
|
96
|
-
"no-alert": "error",
|
|
97
|
-
"no-array-constructor": "error",
|
|
98
|
-
"no-await-in-loop": "off",
|
|
99
|
-
"no-bitwise": "error",
|
|
100
|
-
"no-buffer-constructor": "off",
|
|
101
|
-
"no-caller": "error",
|
|
102
|
-
"no-catch-shadow": "error",
|
|
103
|
-
"no-confusing-arrow": "error",
|
|
104
|
-
"no-continue": "off",
|
|
105
|
-
"no-div-regex": "error",
|
|
106
|
-
"no-duplicate-imports": "error",
|
|
107
|
-
"no-else-return": "off",
|
|
108
|
-
"no-empty-function": "off",
|
|
109
|
-
"no-empty": "off",
|
|
110
|
-
"no-eq-null": "error",
|
|
111
|
-
"no-eval": "error",
|
|
112
|
-
"no-extend-native": "error",
|
|
113
|
-
"no-extra-bind": "error",
|
|
114
|
-
"no-extra-label": "error",
|
|
115
|
-
"no-extra-parens": "off",
|
|
116
|
-
"no-floating-decimal": "error",
|
|
117
|
-
"no-implicit-coercion": "off",
|
|
118
|
-
"no-implicit-globals": "error",
|
|
119
|
-
"no-implied-eval": "error",
|
|
120
|
-
"no-inline-comments": "off",
|
|
121
|
-
"no-inner-declarations": [
|
|
122
|
-
"error",
|
|
123
|
-
"functions"
|
|
124
|
-
],
|
|
125
|
-
"no-invalid-this": "off",
|
|
126
|
-
"no-iterator": "error",
|
|
127
|
-
"no-label-var": "error",
|
|
128
|
-
"no-labels": "error",
|
|
129
|
-
"no-lone-blocks": "off",
|
|
130
|
-
"no-lonely-if": "error",
|
|
131
|
-
"no-loop-func": "off",
|
|
132
|
-
"no-magic-numbers": "off",
|
|
133
|
-
"no-mixed-operators": "error",
|
|
134
|
-
"no-mixed-requires": "warn",
|
|
135
|
-
"no-multi-assign": "error",
|
|
136
|
-
"no-multi-spaces": "off",
|
|
137
|
-
"no-multi-str": "error",
|
|
138
|
-
"no-multiple-empty-lines": "off",
|
|
139
|
-
"no-native-reassign": "error",
|
|
140
|
-
"no-negated-condition": "off",
|
|
141
|
-
"no-negated-in-lhs": "error",
|
|
142
|
-
"no-nested-ternary": "off",
|
|
143
|
-
"no-new": "error",
|
|
144
|
-
"no-new-func": "error",
|
|
145
|
-
"no-new-object": "error",
|
|
146
|
-
"no-new-require": "error",
|
|
147
|
-
"no-new-wrappers": "error",
|
|
148
|
-
"no-octal-escape": "off",
|
|
149
|
-
"no-param-reassign": "off",
|
|
150
|
-
"no-path-concat": "off",
|
|
151
|
-
"no-plusplus": "off",
|
|
152
|
-
"no-process-env": "off",
|
|
153
|
-
"no-process-exit": "off",
|
|
154
|
-
"no-proto": "error",
|
|
155
|
-
"no-prototype-builtins": "off",
|
|
156
|
-
"no-restricted-globals": "error",
|
|
157
|
-
"no-restricted-imports": "error",
|
|
158
|
-
"no-restricted-modules": "error",
|
|
159
|
-
"no-restricted-properties": "error",
|
|
160
|
-
"no-restricted-syntax": "error",
|
|
161
|
-
"no-return-assign": "error",
|
|
162
|
-
"no-return-await": "error",
|
|
163
|
-
"no-script-url": "error",
|
|
164
|
-
"no-self-compare": "error",
|
|
165
|
-
"no-sequences": "error",
|
|
166
|
-
"no-shadow": "off",
|
|
167
|
-
"no-shadow-restricted-names": "error",
|
|
168
|
-
"no-spaced-func": "error",
|
|
169
|
-
"no-sync": "off",
|
|
170
|
-
"no-tabs": "error",
|
|
171
|
-
"no-template-curly-in-string": "error",
|
|
172
|
-
"no-ternary": "off",
|
|
173
|
-
"no-throw-literal": "error",
|
|
174
|
-
"no-trailing-spaces": "off",
|
|
175
|
-
"no-undef-init": "error",
|
|
176
|
-
"no-undefined": "off",
|
|
177
|
-
"no-underscore-dangle": "off",
|
|
178
|
-
"no-unmodified-loop-condition": "error",
|
|
179
|
-
"no-unneeded-ternary": "off",
|
|
180
|
-
"no-unused-expressions": "error",
|
|
181
|
-
"no-use-before-define": "off",
|
|
182
|
-
"no-useless-call": "error",
|
|
183
|
-
"no-useless-computed-key": "error",
|
|
184
|
-
"no-useless-concat": "error",
|
|
185
|
-
"no-useless-constructor": "off",
|
|
186
|
-
"no-useless-rename": "error",
|
|
187
|
-
"no-useless-return": "warn",
|
|
188
|
-
"no-var": "off",
|
|
189
|
-
"no-void": "error",
|
|
190
|
-
"no-warning-comments": "error",
|
|
191
|
-
"no-whitespace-before-property": "error",
|
|
192
|
-
"no-with": "error",
|
|
193
|
-
"object-curly-newline": "off",
|
|
194
|
-
"object-curly-spacing": "off",
|
|
195
|
-
"object-property-newline": "off",
|
|
196
|
-
"object-shorthand": "off",
|
|
197
|
-
"one-var": "off",
|
|
198
|
-
"one-var-declaration-per-line": "warn",
|
|
199
|
-
"no-unused-vars": "warn",
|
|
200
|
-
"operator-assignment": [
|
|
201
|
-
"error",
|
|
202
|
-
"always"
|
|
203
|
-
],
|
|
204
|
-
"operator-linebreak": [
|
|
205
|
-
"error",
|
|
206
|
-
"before"
|
|
207
|
-
],
|
|
208
|
-
"padded-blocks": "off",
|
|
209
|
-
"padding-line-between-statements": "error",
|
|
210
|
-
"prefer-arrow-callback": "off",
|
|
211
|
-
"prefer-const": "off",
|
|
212
|
-
"prefer-destructuring": "off",
|
|
213
|
-
"prefer-numeric-literals": "error",
|
|
214
|
-
"prefer-promise-reject-errors": "error",
|
|
215
|
-
"prefer-reflect": "off",
|
|
216
|
-
"prefer-rest-params": "off",
|
|
217
|
-
"prefer-spread": "error",
|
|
218
|
-
"prefer-template": "off",
|
|
219
|
-
"quote-props": "off",
|
|
220
|
-
"quotes": "off",
|
|
221
|
-
"radix": [
|
|
222
|
-
"error",
|
|
223
|
-
"always"
|
|
224
|
-
],
|
|
225
|
-
"require-await": "off",
|
|
226
|
-
"require-jsdoc": "off",
|
|
227
|
-
"rest-spread-spacing": "error",
|
|
228
|
-
"semi": "off",
|
|
229
|
-
"semi-spacing": "off",
|
|
230
|
-
"semi-style": [
|
|
231
|
-
"error",
|
|
232
|
-
"last"
|
|
233
|
-
],
|
|
234
|
-
"sort-imports": "error",
|
|
235
|
-
"sort-keys": "off",
|
|
236
|
-
"sort-vars": "warn",
|
|
237
|
-
"space-before-blocks": "off",
|
|
238
|
-
"space-before-function-paren": "off",
|
|
239
|
-
"space-in-parens": [
|
|
240
|
-
"error",
|
|
241
|
-
"never"
|
|
242
|
-
],
|
|
243
|
-
"space-infix-ops": "off",
|
|
244
|
-
"space-unary-ops": "off",
|
|
245
|
-
"spaced-comment": "off",
|
|
246
|
-
"strict": "off",
|
|
247
|
-
"switch-colon-spacing": "error",
|
|
248
|
-
"symbol-description": "off",
|
|
249
|
-
"template-curly-spacing": "error",
|
|
250
|
-
"template-tag-spacing": "error",
|
|
251
|
-
"unicode-bom": [
|
|
252
|
-
"error",
|
|
253
|
-
"never"
|
|
254
|
-
],
|
|
255
|
-
"valid-jsdoc": "warn",
|
|
256
|
-
"vars-on-top": "off",
|
|
257
|
-
"wrap-iife": "error",
|
|
258
|
-
"wrap-regex": "error",
|
|
259
|
-
"yield-star-spacing": "error",
|
|
260
|
-
"yoda": "off",
|
|
261
|
-
"no-console": "off",
|
|
262
|
-
"require-yield": "off"
|
|
263
|
-
}
|
|
264
|
-
};
|