UNPKG

3.01 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 var ts = require("rollup-plugin-typescript");
50 const gulpRollup = require("gulp-better-rollup");
51 const dependencies = Object.keys(npm.getDependencies(process.cwd()));
52 var newConfig = Object.assign({}, defaultConfig, tsconfig ? tsconfig.compilerOptions : {}, wxtsConfig);
53 const plugins = [ts(newConfig)].concat(loadPlugins());
54 return gulp
55 .src(tsFile, { base: config.src, sourcemaps: !config.release })
56 .pipe(
57 debug({
58 title: TITLE,
59 // dist: config.dist,
60 distExt: ".wxs",
61 }),
62 )
63 .pipe(config.release ? empty() : sourcemaps.init())
64 .pipe(
65 gulpRollup(
66 {
67 // rollup: require('rollup'),
68 onwarn: warn(TITLE),
69 treeshake: { propertyReadSideEffects: false },
70 external: m => m.endsWith(".wxs") && !dependencies.includes(m.split("/")[0]),
71 plugins: plugins,
72 // globals:{wx:'wx'}
73 },
74 {
75 format: "cjs",
76 esModule: false,
77 },
78 ),
79 )
80 .on("error", error(TITLE))
81 .pipe(rename({ extname: ".wxs" }))
82 .pipe(replace(pkgVar(config.var), undefined, "{{", "}}"))
83 .pipe(config.release ? empty() : sourcemaps.write())
84 .pipe(gulp.dest(config.dist))
85 .pipe(size({ title: TITLE, showFiles: true }));
86}
87module.exports = compileWxts;