@es-pkg/compile 1.0.12 → 1.0.14

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/cjs/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
- /// <reference types="undertaker" />
2
- declare const _default: import("undertaker").TaskFunction;
3
- export default _default;
1
+ import * as undertaker from 'undertaker';
2
+
3
+ declare const _default: undertaker.TaskFunction;
4
+
5
+ export { _default as default };
package/cjs/index.js CHANGED
@@ -9,6 +9,7 @@ var rollup = require('rollup');
9
9
  var resolve = require('@rollup/plugin-node-resolve');
10
10
  var commonjs = require('@rollup/plugin-commonjs');
11
11
  var json = require('@rollup/plugin-json');
12
+ var dts = require('rollup-plugin-dts');
12
13
  var postcss = require('rollup-plugin-postcss');
13
14
  var autoprefixer = require('autoprefixer');
14
15
  var cssnano = require('cssnano');
@@ -38,12 +39,12 @@ function _interopNamespace(e) {
38
39
  return Object.freeze(n);
39
40
  }
40
41
 
41
- var gulp__default = /*#__PURE__*/_interopDefault(gulp);
42
42
  var utils__namespace = /*#__PURE__*/_interopNamespace(utils);
43
43
  var esConfig__namespace = /*#__PURE__*/_interopNamespace(esConfig);
44
44
  var resolve__default = /*#__PURE__*/_interopDefault(resolve);
45
45
  var commonjs__default = /*#__PURE__*/_interopDefault(commonjs);
46
46
  var json__default = /*#__PURE__*/_interopDefault(json);
47
+ var dts__default = /*#__PURE__*/_interopDefault(dts);
47
48
  var postcss__default = /*#__PURE__*/_interopDefault(postcss);
48
49
  var autoprefixer__default = /*#__PURE__*/_interopDefault(autoprefixer);
49
50
  var cssnano__default = /*#__PURE__*/_interopDefault(cssnano);
@@ -53,18 +54,18 @@ var esbuild__default = /*#__PURE__*/_interopDefault(esbuild);
53
54
  var ts__default = /*#__PURE__*/_interopDefault(ts);
54
55
 
55
56
  const { remove, log, getValidPkgName, toPascalCase } = utils__namespace;
56
- const { config, collectInputs, shallowInputs, pkg, relativeToApp, resolveApp } = esConfig__namespace;
57
+ const { config, getShallowInputs, pkg, relativeToApp, resolveApp } = esConfig__namespace;
57
58
  const name = getValidPkgName(pkg.name);
58
59
  const clean = async () => {
59
- log(`\u6E05\u9664 ${relativeToApp(config.es)} & ${relativeToApp(config.cjs)} \u76EE\u5F55---\u5F00\u59CB`);
60
+ log(`${config.es && `\u6E05\u9664 ${relativeToApp(config.es)}`} ${config.cjs && `& ${relativeToApp(config.cjs)}`} \u76EE\u5F55---\u5F00\u59CB`);
60
61
  const promises = [
61
62
  remove(config.publishDir, true),
62
- remove(config.es, true),
63
- remove(config.cjs, true),
63
+ config.es && remove(config.es, true),
64
+ config.cjs && remove(config.cjs, true),
64
65
  remove(config.iife, true)
65
- ];
66
+ ].filter(Boolean);
66
67
  await Promise.all(promises);
67
- log(`\u6E05\u9664 ${relativeToApp(config.es)} & ${relativeToApp(config.cjs)} \u76EE\u5F55---\u7ED3\u675F`);
68
+ log(`${config.es && `\u6E05\u9664 ${relativeToApp(config.es)}`} ${config.cjs && `& ${relativeToApp(config.cjs)}`} \u76EE\u5F55---\u7ED3\u675F`);
68
69
  };
69
70
  function getPostcss(extract) {
70
71
  return postcss__default.default({
@@ -90,29 +91,39 @@ function isNodeModule(id) {
90
91
  return false;
91
92
  }
92
93
  }
93
- function getInputOptions(format) {
94
+ function getInputOptions(emit) {
95
+ var _a, _b, _c;
96
+ const defaultPlugins = [
97
+ json__default.default(),
98
+ resolve__default.default(),
99
+ commonjs__default.default({
100
+ defaultIsModuleExports: true,
101
+ esmExternals: true,
102
+ transformMixedEsModules: true
103
+ // 混合模块也转换
104
+ }),
105
+ emit ? dts__default.default({ compilerOptions: getCompilerOptions() }) : esbuild__default.default({ target: "es2018", format: "esm" }),
106
+ getPostcss(config.css.extract)
107
+ ];
108
+ const plugins = ((_a = config.rollupOptions) == null ? void 0 : _a.plugins) ? (_c = (_b = config.rollupOptions) == null ? void 0 : _b.plugins) == null ? void 0 : _c.call(_b, defaultPlugins) : defaultPlugins;
94
109
  return {
95
- input: shallowInputs.filter((item) => !item.endsWith(".d.ts")),
110
+ input: getShallowInputs().filter((item) => !item.endsWith(".d.ts")),
96
111
  external: (id) => {
97
- if (node_module.builtinModules.includes(id)) return true;
98
- if (!id.startsWith(".") && !path__default.default.isAbsolute(id) && isNodeModule(id)) return true;
99
- return false;
112
+ var _a2;
113
+ const defaultExternal = (id2) => {
114
+ if (node_module.builtinModules.includes(id2)) return true;
115
+ return !!(!id2.startsWith(".") && !path__default.default.isAbsolute(id2) && isNodeModule(id2));
116
+ };
117
+ if ((_a2 = config.rollupOptions) == null ? void 0 : _a2.external) {
118
+ return config.rollupOptions.external(id, defaultExternal);
119
+ } else {
120
+ return defaultExternal(id);
121
+ }
100
122
  },
101
- plugins: [
102
- json__default.default(),
103
- resolve__default.default(),
104
- commonjs__default.default({
105
- defaultIsModuleExports: true,
106
- esmExternals: true,
107
- transformMixedEsModules: true
108
- // 混合模块也转换
109
- }),
110
- esbuild__default.default({ target: "es2018", format: "esm" }),
111
- getPostcss(config.css.extract)
112
- ]
123
+ plugins
113
124
  };
114
125
  }
115
- async function buildDeclarations() {
126
+ function getCompilerOptions() {
116
127
  const tsConfig = ts__default.default.readConfigFile(resolveApp("tsconfig.json"), ts__default.default.sys.readFile);
117
128
  if (tsConfig.error) {
118
129
  console.log(tsConfig.error.messageText);
@@ -122,7 +133,6 @@ async function buildDeclarations() {
122
133
  ts__default.default.sys,
123
134
  resolveApp("./")
124
135
  );
125
- const entryFiles = collectInputs.filter((item) => [".ts", ".tsx"].some((suf) => item.endsWith(suf)));
126
136
  const compilerOptions = {
127
137
  ...parsedConfig.options,
128
138
  declaration: true,
@@ -136,27 +146,7 @@ async function buildDeclarations() {
136
146
  target: ts__default.default.ScriptTarget.ESNext,
137
147
  module: ts__default.default.ModuleKind.ESNext
138
148
  };
139
- const host = ts__default.default.createCompilerHost(compilerOptions);
140
- host.writeFile = (fileName, contents) => {
141
- const dir = path__default.default.dirname(fileName);
142
- fs__default.default.mkdirSync(dir, { recursive: true });
143
- fs__default.default.writeFileSync(fileName, contents, "utf8");
144
- };
145
- const program = ts__default.default.createProgram(entryFiles, compilerOptions, host);
146
- const emitResult = program.emit();
147
- const diagnostics = ts__default.default.getPreEmitDiagnostics(program).concat(emitResult.diagnostics);
148
- if (diagnostics.length > 0) {
149
- console.error(
150
- ts__default.default.formatDiagnosticsWithColorAndContext(diagnostics, {
151
- getCanonicalFileName: (f) => f,
152
- getCurrentDirectory: ts__default.default.sys.getCurrentDirectory,
153
- getNewLine: () => ts__default.default.sys.newLine
154
- })
155
- );
156
- } else {
157
- console.log(`\u2705 Declarations generated in: ${path__default.default.resolve(config.es)}`);
158
- }
159
- log.success("\u2705 Declarations build complete!");
149
+ return compilerOptions;
160
150
  }
161
151
  async function buildExtraCss() {
162
152
  const extras = config.css.extra;
@@ -182,7 +172,7 @@ async function buildExtraCss() {
182
172
  });
183
173
  const jsFile = path__default.default.join(esRoot, dirname, `${filename}${path__default.default.extname(v)}.js`);
184
174
  if (fs__default.default.existsSync(jsFile)) fs__default.default.unlinkSync(jsFile);
185
- [config.cjs, config.iife].forEach((targetRoot) => {
175
+ [config.cjs, config.iife].filter(Boolean).forEach((targetRoot) => {
186
176
  const dest = path__default.default.join(resolveApp(targetRoot), dirname, `${filename}.min.css`);
187
177
  fs__default.default.mkdirSync(path__default.default.dirname(dest), { recursive: true });
188
178
  fs__default.default.copyFileSync(path__default.default.join(esRoot, dirname, `${filename}.min.css`), dest);
@@ -195,7 +185,13 @@ async function buildExtraCss() {
195
185
  await Promise.all(tasks);
196
186
  log.success("\u2705 \u6240\u6709\u989D\u5916 CSS \u7F16\u8BD1\u5B8C\u6210");
197
187
  }
188
+ async function buildDts() {
189
+ return build(true);
190
+ }
198
191
  async function buildJS() {
192
+ return build(false);
193
+ }
194
+ async function build(emit) {
199
195
  const outputOptions = [
200
196
  {
201
197
  dir: config.es,
@@ -203,7 +199,7 @@ async function buildJS() {
203
199
  preserveModules: true,
204
200
  preserveModulesRoot: resolveApp("src")
205
201
  },
206
- {
202
+ config.cjs && {
207
203
  dir: config.cjs,
208
204
  format: "cjs",
209
205
  preserveModules: true,
@@ -211,24 +207,20 @@ async function buildJS() {
211
207
  exports: "named",
212
208
  interop: "auto"
213
209
  },
214
- ...config.iife ? [
215
- {
216
- dir: config.iife,
217
- format: "iife",
218
- exports: "named",
219
- name: toPascalCase(name)
220
- }
221
- ] : []
222
- ];
210
+ config.iife && {
211
+ dir: config.iife,
212
+ format: "iife",
213
+ exports: "named",
214
+ name: toPascalCase(name)
215
+ }
216
+ ].filter(Boolean);
223
217
  for (const output of outputOptions) {
224
- const bundle = await rollup.rollup(getInputOptions(output.format));
218
+ const bundle = await rollup.rollup(getInputOptions(emit));
225
219
  await bundle.write(output);
226
220
  }
227
- await buildExtraCss();
228
- log.success("\u2705 JS Build complete!");
221
+ !emit && await buildExtraCss();
222
+ log.success(`\u2705 ${emit ? "DTS " : "JS "}Build complete!`);
229
223
  }
230
- const copySrcTds = () => gulp__default.default.src(config.include.map((t) => `${t}/**/*.d.ts`)).pipe(gulp__default.default.dest(config.es));
231
- const copyTds = () => gulp__default.default.src([`${config.es}/**/*.d.ts`]).pipe(gulp__default.default.dest(config.cjs));
232
- var src_default = gulp.series(clean, buildJS, buildDeclarations, copySrcTds, copyTds);
224
+ var src_default = gulp.series(clean, buildJS, buildDts);
233
225
 
234
226
  exports.default = src_default;
package/esm/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
- /// <reference types="undertaker" />
2
- declare const _default: import("undertaker").TaskFunction;
3
- export default _default;
1
+ import * as undertaker from 'undertaker';
2
+
3
+ declare const _default: undertaker.TaskFunction;
4
+
5
+ export { _default as default };
package/esm/index.js CHANGED
@@ -1,10 +1,11 @@
1
- import gulp, { series } from '@es-pkg/gulp';
1
+ import { series } from '@es-pkg/gulp';
2
2
  import * as utils from '@es-pkg/utils';
3
3
  import * as esConfig from '@es-pkg/config';
4
4
  import { rollup } from 'rollup';
5
5
  import resolve from '@rollup/plugin-node-resolve';
6
6
  import commonjs from '@rollup/plugin-commonjs';
7
7
  import json from '@rollup/plugin-json';
8
+ import dts from 'rollup-plugin-dts';
8
9
  import postcss from 'rollup-plugin-postcss';
9
10
  import autoprefixer from 'autoprefixer';
10
11
  import cssnano from 'cssnano';
@@ -15,18 +16,18 @@ import { builtinModules } from 'node:module';
15
16
  import ts from 'typescript';
16
17
 
17
18
  const { remove, log, getValidPkgName, toPascalCase } = utils;
18
- const { config, collectInputs, shallowInputs, pkg, relativeToApp, resolveApp } = esConfig;
19
+ const { config, getShallowInputs, pkg, relativeToApp, resolveApp } = esConfig;
19
20
  const name = getValidPkgName(pkg.name);
20
21
  const clean = async () => {
21
- log(`\u6E05\u9664 ${relativeToApp(config.es)} & ${relativeToApp(config.cjs)} \u76EE\u5F55---\u5F00\u59CB`);
22
+ log(`${config.es && `\u6E05\u9664 ${relativeToApp(config.es)}`} ${config.cjs && `& ${relativeToApp(config.cjs)}`} \u76EE\u5F55---\u5F00\u59CB`);
22
23
  const promises = [
23
24
  remove(config.publishDir, true),
24
- remove(config.es, true),
25
- remove(config.cjs, true),
25
+ config.es && remove(config.es, true),
26
+ config.cjs && remove(config.cjs, true),
26
27
  remove(config.iife, true)
27
- ];
28
+ ].filter(Boolean);
28
29
  await Promise.all(promises);
29
- log(`\u6E05\u9664 ${relativeToApp(config.es)} & ${relativeToApp(config.cjs)} \u76EE\u5F55---\u7ED3\u675F`);
30
+ log(`${config.es && `\u6E05\u9664 ${relativeToApp(config.es)}`} ${config.cjs && `& ${relativeToApp(config.cjs)}`} \u76EE\u5F55---\u7ED3\u675F`);
30
31
  };
31
32
  function getPostcss(extract) {
32
33
  return postcss({
@@ -52,29 +53,39 @@ function isNodeModule(id) {
52
53
  return false;
53
54
  }
54
55
  }
55
- function getInputOptions(format) {
56
+ function getInputOptions(emit) {
57
+ var _a, _b, _c;
58
+ const defaultPlugins = [
59
+ json(),
60
+ resolve(),
61
+ commonjs({
62
+ defaultIsModuleExports: true,
63
+ esmExternals: true,
64
+ transformMixedEsModules: true
65
+ // 混合模块也转换
66
+ }),
67
+ emit ? dts({ compilerOptions: getCompilerOptions() }) : esbuild({ target: "es2018", format: "esm" }),
68
+ getPostcss(config.css.extract)
69
+ ];
70
+ const plugins = ((_a = config.rollupOptions) == null ? void 0 : _a.plugins) ? (_c = (_b = config.rollupOptions) == null ? void 0 : _b.plugins) == null ? void 0 : _c.call(_b, defaultPlugins) : defaultPlugins;
56
71
  return {
57
- input: shallowInputs.filter((item) => !item.endsWith(".d.ts")),
72
+ input: getShallowInputs().filter((item) => !item.endsWith(".d.ts")),
58
73
  external: (id) => {
59
- if (builtinModules.includes(id)) return true;
60
- if (!id.startsWith(".") && !path.isAbsolute(id) && isNodeModule(id)) return true;
61
- return false;
74
+ var _a2;
75
+ const defaultExternal = (id2) => {
76
+ if (builtinModules.includes(id2)) return true;
77
+ return !!(!id2.startsWith(".") && !path.isAbsolute(id2) && isNodeModule(id2));
78
+ };
79
+ if ((_a2 = config.rollupOptions) == null ? void 0 : _a2.external) {
80
+ return config.rollupOptions.external(id, defaultExternal);
81
+ } else {
82
+ return defaultExternal(id);
83
+ }
62
84
  },
63
- plugins: [
64
- json(),
65
- resolve(),
66
- commonjs({
67
- defaultIsModuleExports: true,
68
- esmExternals: true,
69
- transformMixedEsModules: true
70
- // 混合模块也转换
71
- }),
72
- esbuild({ target: "es2018", format: "esm" }),
73
- getPostcss(config.css.extract)
74
- ]
85
+ plugins
75
86
  };
76
87
  }
77
- async function buildDeclarations() {
88
+ function getCompilerOptions() {
78
89
  const tsConfig = ts.readConfigFile(resolveApp("tsconfig.json"), ts.sys.readFile);
79
90
  if (tsConfig.error) {
80
91
  console.log(tsConfig.error.messageText);
@@ -84,7 +95,6 @@ async function buildDeclarations() {
84
95
  ts.sys,
85
96
  resolveApp("./")
86
97
  );
87
- const entryFiles = collectInputs.filter((item) => [".ts", ".tsx"].some((suf) => item.endsWith(suf)));
88
98
  const compilerOptions = {
89
99
  ...parsedConfig.options,
90
100
  declaration: true,
@@ -98,27 +108,7 @@ async function buildDeclarations() {
98
108
  target: ts.ScriptTarget.ESNext,
99
109
  module: ts.ModuleKind.ESNext
100
110
  };
101
- const host = ts.createCompilerHost(compilerOptions);
102
- host.writeFile = (fileName, contents) => {
103
- const dir = path.dirname(fileName);
104
- fs.mkdirSync(dir, { recursive: true });
105
- fs.writeFileSync(fileName, contents, "utf8");
106
- };
107
- const program = ts.createProgram(entryFiles, compilerOptions, host);
108
- const emitResult = program.emit();
109
- const diagnostics = ts.getPreEmitDiagnostics(program).concat(emitResult.diagnostics);
110
- if (diagnostics.length > 0) {
111
- console.error(
112
- ts.formatDiagnosticsWithColorAndContext(diagnostics, {
113
- getCanonicalFileName: (f) => f,
114
- getCurrentDirectory: ts.sys.getCurrentDirectory,
115
- getNewLine: () => ts.sys.newLine
116
- })
117
- );
118
- } else {
119
- console.log(`\u2705 Declarations generated in: ${path.resolve(config.es)}`);
120
- }
121
- log.success("\u2705 Declarations build complete!");
111
+ return compilerOptions;
122
112
  }
123
113
  async function buildExtraCss() {
124
114
  const extras = config.css.extra;
@@ -144,7 +134,7 @@ async function buildExtraCss() {
144
134
  });
145
135
  const jsFile = path.join(esRoot, dirname, `${filename}${path.extname(v)}.js`);
146
136
  if (fs.existsSync(jsFile)) fs.unlinkSync(jsFile);
147
- [config.cjs, config.iife].forEach((targetRoot) => {
137
+ [config.cjs, config.iife].filter(Boolean).forEach((targetRoot) => {
148
138
  const dest = path.join(resolveApp(targetRoot), dirname, `${filename}.min.css`);
149
139
  fs.mkdirSync(path.dirname(dest), { recursive: true });
150
140
  fs.copyFileSync(path.join(esRoot, dirname, `${filename}.min.css`), dest);
@@ -157,7 +147,13 @@ async function buildExtraCss() {
157
147
  await Promise.all(tasks);
158
148
  log.success("\u2705 \u6240\u6709\u989D\u5916 CSS \u7F16\u8BD1\u5B8C\u6210");
159
149
  }
150
+ async function buildDts() {
151
+ return build(true);
152
+ }
160
153
  async function buildJS() {
154
+ return build(false);
155
+ }
156
+ async function build(emit) {
161
157
  const outputOptions = [
162
158
  {
163
159
  dir: config.es,
@@ -165,7 +161,7 @@ async function buildJS() {
165
161
  preserveModules: true,
166
162
  preserveModulesRoot: resolveApp("src")
167
163
  },
168
- {
164
+ config.cjs && {
169
165
  dir: config.cjs,
170
166
  format: "cjs",
171
167
  preserveModules: true,
@@ -173,24 +169,20 @@ async function buildJS() {
173
169
  exports: "named",
174
170
  interop: "auto"
175
171
  },
176
- ...config.iife ? [
177
- {
178
- dir: config.iife,
179
- format: "iife",
180
- exports: "named",
181
- name: toPascalCase(name)
182
- }
183
- ] : []
184
- ];
172
+ config.iife && {
173
+ dir: config.iife,
174
+ format: "iife",
175
+ exports: "named",
176
+ name: toPascalCase(name)
177
+ }
178
+ ].filter(Boolean);
185
179
  for (const output of outputOptions) {
186
- const bundle = await rollup(getInputOptions(output.format));
180
+ const bundle = await rollup(getInputOptions(emit));
187
181
  await bundle.write(output);
188
182
  }
189
- await buildExtraCss();
190
- log.success("\u2705 JS Build complete!");
183
+ !emit && await buildExtraCss();
184
+ log.success(`\u2705 ${emit ? "DTS " : "JS "}Build complete!`);
191
185
  }
192
- const copySrcTds = () => gulp.src(config.include.map((t) => `${t}/**/*.d.ts`)).pipe(gulp.dest(config.es));
193
- const copyTds = () => gulp.src([`${config.es}/**/*.d.ts`]).pipe(gulp.dest(config.cjs));
194
- var src_default = series(clean, buildJS, buildDeclarations, copySrcTds, copyTds);
186
+ var src_default = series(clean, buildJS, buildDts);
195
187
 
196
188
  export { src_default as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@es-pkg/compile",
3
- "version": "1.0.12",
3
+ "version": "1.0.14",
4
4
  "description": "组件打包工具",
5
5
  "main": "cjs/index.js",
6
6
  "keywords": [
@@ -28,6 +28,7 @@
28
28
  "rollup-plugin-esbuild": "latest",
29
29
  "@rollup/plugin-typescript": "^12.3.0",
30
30
  "@rollup/plugin-json": "^6.1.0",
31
+ "rollup-plugin-dts": "^6.3.0",
31
32
  "autoprefixer": "^10.4.21",
32
33
  "cssnano": "latest",
33
34
  "sass": "^1.53.0",