UNPKG

3.13 kBJavaScriptView Raw
1///@ts-check
2"use strict";
3var gulp = require("gulp");
4var sourcemaps = require("gulp-sourcemaps");
5var rename = require("gulp-rename");
6const debug = require("../log/compile");
7const size = require("../log/size");
8var empty = require("../lib/empty");
9var replace = require("../lib/multi-replace");
10const pkgVar = require('../lib/package-var');
11const loadPlugins = require("../lib/rollup-plugins");
12var error = require("../log/error");
13const warn = require("../log/warn");
14const npm = require("../lib/npm-dependency");
15
16const wxtsConfig = {
17 rootDir: undefined,
18 include: ["**/*.wxts", "**/*.ts"],
19 target: "es5",
20 module: "ES6",
21 downlevelIteration: true, //Provide full support for iterables in for..of, spread and destructuring when targeting ES5 or ES3.
22 isolatedModules: true, //Transpile each file as a separate module (similar to “ts.transpileModule”).
23 noLib: true,
24 lib: ["es5"],
25};
26
27const defaultConfig = {
28 // allowJs: true,
29 // checkJs: true,
30 alwaysStrict: true,
31 noImplicitAny: true,
32 noImplicitReturns: true,
33 noImplicitThis: true,
34 // noUnusedLocals: true,
35 // noUnusedParameters: true,
36 // strictBindCallApply: true,
37 // strictFunctionTypes: true,
38 // strictPropertyInitialization: true,
39 strictNullChecks: true,
40};
41var TITLE = "wxts:";
42/**
43 * 编译TS
44 * @param {object} config *
45 * @param {string|string[]} tsFile
46 * @param {any} tsconfig
47 */
48function 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 // dist: config.dist,
67 distExt: ".wxs",
68 }),
69 )
70 .pipe(config.release ? empty() : sourcemaps.init())
71 .pipe(
72 gulpRollup(
73 {
74 // rollup: require('rollup'),
75 onwarn: warn(TITLE),
76 treeshake: { propertyReadSideEffects: false },
77 external: m => m.endsWith(".wxs") && !dependencies.includes(m.split("/")[0]),
78 plugins: plugins,
79 // globals:{wx:'wx'}
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}
94module.exports = compileWxts;