1 |
|
2 | "use strict";
|
3 | var gulp = require("gulp");
|
4 | var sourcemaps = require("gulp-sourcemaps");
|
5 | var rename = require("gulp-rename");
|
6 | const debug = require("../log/compile");
|
7 | const size = require("../log/size");
|
8 | var empty = require("../lib/empty");
|
9 | var replace = require("../lib/multi-replace");
|
10 | const pkgVar = require('../lib/package-var');
|
11 | const loadPlugins = require("../lib/rollup-plugins");
|
12 | var error = require("../log/error");
|
13 | const warn = require("../log/warn");
|
14 | const npm = require("../lib/npm-dependency");
|
15 |
|
16 | const wxtsConfig = {
|
17 | rootDir: undefined,
|
18 | include: ["**/*.wxts", "**/*.ts"],
|
19 | target: "es5",
|
20 | module: "ES6",
|
21 | downlevelIteration: true,
|
22 | isolatedModules: true,
|
23 | noLib: true,
|
24 | lib: ["es5"],
|
25 | };
|
26 |
|
27 | const defaultConfig = {
|
28 |
|
29 |
|
30 | alwaysStrict: true,
|
31 | noImplicitAny: true,
|
32 | noImplicitReturns: true,
|
33 | noImplicitThis: true,
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 | strictNullChecks: true,
|
40 | };
|
41 | var TITLE = "wxts:";
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 | function compileWxts(config, tsFile, tsconfig) {
|
49 | const ts = require("rollup-plugin-typescript");
|
50 | const gulpRollup = require("gulp-better-rollup");
|
51 | let dependencies = []
|
52 | const plugins = [].concat(loadPlugins())
|
53 |
|
54 | try {
|
55 | dependencies = Object.keys(npm.getDependencies(process.cwd()));
|
56 | const newConfig = Object.assign({}, defaultConfig, tsconfig ? tsconfig.compilerOptions : {}, wxtsConfig);
|
57 | plugins.unshift(ts(newConfig))
|
58 | } catch (error) {
|
59 | warn(TITLE)('' + error);
|
60 | }
|
61 | return gulp
|
62 | .src(tsFile, { base: config.src, sourcemaps: !config.release })
|
63 | .pipe(
|
64 | debug({
|
65 | title: TITLE,
|
66 |
|
67 | distExt: ".wxs",
|
68 | }),
|
69 | )
|
70 | .pipe(config.release ? empty() : sourcemaps.init())
|
71 | .pipe(
|
72 | gulpRollup(
|
73 | {
|
74 |
|
75 | onwarn: warn(TITLE),
|
76 | treeshake: { propertyReadSideEffects: false },
|
77 | external: m => m.endsWith(".wxs") && !dependencies.includes(m.split("/")[0]),
|
78 | plugins: plugins,
|
79 |
|
80 | },
|
81 | {
|
82 | format: "cjs",
|
83 | esModule: false,
|
84 | },
|
85 | ),
|
86 | )
|
87 | .on("error", error(TITLE))
|
88 | .pipe(rename({ extname: ".wxs" }))
|
89 | .pipe(replace(pkgVar(config.var), undefined, "{{", "}}"))
|
90 | .pipe(config.release ? empty() : sourcemaps.write())
|
91 | .pipe(gulp.dest(config.dist))
|
92 | .pipe(size({ title: TITLE, showFiles: true }));
|
93 | }
|
94 | module.exports = compileWxts;
|