UNPKG

2.94 kBJavaScriptView Raw
1#!/usr/bin/env node
2
3const program = require("commander");
4const fs = require("fs-extra");
5const os = require("os");
6const path = require("path");
7const chalk = require("chalk");
8const pkg = require("../package.json");
9const transformEs = require("./index");
10const log = require("./logger");
11
12const success = chalk.keyword("green");
13
14program
15 .version(pkg.version)
16 .option("-w, --watch", "是否监控文件改变", false)
17 .option("-d, --outDir [outDir]", "输出到指定目录,默认为 lib", "lib")
18 .option("-c, --clean", "转换前清空输出目录", false)
19 .option(
20 "-t, --target [target]",
21 "转换目标格式:node|web|esm|cjs|commonjs|amd|umd|systemjs|auto 默认为 web",
22 /^node|web|esm|cjs|commonjs|amd|umd|systemjs|auto$/,
23 "web"
24 )
25 .option("--config [config]", "配置文件路径", "./transform-es.config.js")
26 .option("--state [state]", "配置文件路径", "")
27 .parse(process.argv);
28
29const options = {
30 configFile: program.config,
31 mode: program.mode,
32 state: program.state,
33 watch: !!program.watch,
34 clean: !!program.clean,
35};
36
37if (program.target === "node") {
38 options.babel = {
39 targets: {
40 node: "current",
41 },
42 };
43} else if (program.target === "esm") {
44 options.babel = {
45 modules: false,
46 };
47} else {
48 options.babel = {
49 modules: program.target === "web" ? "commonjs" : program.target,
50 };
51}
52
53const exec = program.args[0];
54
55if (exec === "init") {
56 const pkgFile = process.cwd() + "/package.json";
57 let userPkg = {};
58 if (fs.existsSync(pkgFile)) {
59 userPkg = require(pkgFile);
60 }
61
62 const scripts = userPkg.scripts || {};
63
64 userPkg.scripts = scripts;
65
66 if (!fs.existsSync(process.cwd() + "/transform-es.config.js")) {
67 fs.writeFileSync(
68 path.resolve(process.cwd(), "transform-es.config.js"),
69 `
70module.exports = function(options, state){
71 return {
72 babel: {
73 // babel options
74 loose: true,
75 presets: [],
76 plugins: []
77 },
78 postcss: {},
79 };
80}
81`
82 );
83
84 log(success(`add transform-es.config.js successfully.`));
85 }
86
87 if (!scripts["dest"]) {
88 scripts["dest"] = "transform-es ./src -t web -d lib -w -c";
89 log(success(`add scripts.dest = ${scripts["dest"]} successfully.`));
90 }
91
92 if (!scripts["dest:esm"]) {
93 scripts["dest:esm"] = "transform-es ./src -t esm -d esm -c";
94 log(success(`add scripts["dest:esm"] = ${scripts["dest:esm"]} successfully.`));
95 }
96
97 if (!scripts["dest:cjs"]) {
98 scripts["dest:cjs"] = "transform-es ./src -t web -d cjs -c";
99 log(success(`add scripts["dest:cjs"] = ${scripts["dest:cjs"]} successfully.`));
100 }
101
102 if (!scripts["dest:node"]) {
103 scripts["dest:node"] = "transform-es ./src -t node -d lib -c";
104 log(success(`add scripts["dest:node"] = ${scripts["dest:node"]} successfully.`));
105 }
106
107 fs.writeFileSync(pkgFile, JSON.stringify(userPkg, null, 2) + os.EOL);
108
109 process.exit(1);
110}
111
112let src = "src";
113
114if (program.args.length) src = program.args[0];
115
116transformEs(src, program.outDir, options);