@node-minify/cli 8.0.0-beta.0 → 8.0.2-beta.0

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/dist/cli.d.ts ADDED
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
package/dist/cli.mjs ADDED
@@ -0,0 +1,204 @@
1
+ #!/usr/bin/env node
2
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
3
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
4
+ }) : x)(function(x) {
5
+ if (typeof require !== "undefined")
6
+ return require.apply(this, arguments);
7
+ throw new Error('Dynamic require of "' + x + '" is not supported');
8
+ });
9
+
10
+ // src/bin/cli.ts
11
+ import updateNotifier from "update-notifier";
12
+ import { Command } from "commander";
13
+
14
+ // src/index.ts
15
+ import chalk2 from "chalk";
16
+
17
+ // src/compress.ts
18
+ import minify from "@node-minify/core";
19
+ import { utils } from "@node-minify/utils";
20
+ var compress = (options2) => {
21
+ return new Promise((resolve, reject) => {
22
+ minify(options2).then(() => {
23
+ if (options2.output.includes("$1")) {
24
+ return resolve({
25
+ compressorLabel: options2.compressorLabel || "",
26
+ compressor: options2.compressor,
27
+ size: 0,
28
+ sizeGzip: 0
29
+ });
30
+ }
31
+ utils.getFilesizeGzippedInBytes(options2.output).then((sizeGzip) => {
32
+ resolve({
33
+ compressorLabel: options2.compressorLabel || "",
34
+ compressor: options2.compressor,
35
+ size: utils.getFilesizeInBytes(options2.output),
36
+ sizeGzip
37
+ });
38
+ }).catch(reject);
39
+ }).catch(reject);
40
+ });
41
+ };
42
+
43
+ // src/spinner.ts
44
+ import chalk from "chalk";
45
+ import ora from "ora";
46
+ var spinner = ora();
47
+ var start = (options2) => {
48
+ spinner.text = "Compressing file(s) with " + chalk.green(options2.compressorLabel) + "...";
49
+ spinner.start();
50
+ };
51
+ var stop = (result) => {
52
+ spinner.text = "File(s) compressed successfully with " + chalk.green(result.compressorLabel) + " (" + chalk.green(result.size) + " minified, " + chalk.green(result.sizeGzip) + " gzipped)";
53
+ spinner.succeed();
54
+ };
55
+ var error = (options2) => {
56
+ spinner.text = "Error - file(s) not compressed with " + chalk.red(options2.compressorLabel);
57
+ spinner.fail();
58
+ };
59
+
60
+ // src/index.ts
61
+ var silence = false;
62
+ var runOne = (cli) => {
63
+ return new Promise((resolve, reject) => {
64
+ const compressor = typeof cli.compressor === "string" ? __require(`@node-minify/${cli.compressor}`).default : cli.compressor;
65
+ const options2 = {
66
+ compressorLabel: cli.compressor,
67
+ compressor,
68
+ input: typeof cli.input === "string" ? cli.input.split(",") : "",
69
+ output: cli.output
70
+ };
71
+ if (cli.option) {
72
+ options2.options = JSON.parse(cli.option);
73
+ }
74
+ if (!silence) {
75
+ start(options2);
76
+ }
77
+ return compress(options2).then((result) => {
78
+ if (!silence) {
79
+ stop(result);
80
+ }
81
+ resolve(result);
82
+ }).catch((err) => {
83
+ if (!silence) {
84
+ error(options2);
85
+ }
86
+ reject(err);
87
+ });
88
+ });
89
+ };
90
+ var run = (cli) => {
91
+ silence = !!cli.silence;
92
+ if (!silence) {
93
+ console.log("");
94
+ console.log(chalk2.bgBlue.black(" INFO "), "Starting compression...");
95
+ console.log("");
96
+ }
97
+ return new Promise((resolve, reject) => {
98
+ runOne(cli).then(() => {
99
+ if (!silence) {
100
+ console.log("");
101
+ console.log(chalk2.bgGreen.black(" DONE "), chalk2.green("Done!"));
102
+ console.log("");
103
+ }
104
+ }).then(resolve).catch(reject);
105
+ });
106
+ };
107
+
108
+ // package.json
109
+ var package_default = {
110
+ name: "@node-minify/cli",
111
+ version: "8.0.2-beta.0",
112
+ description: "CLI - command line interface for @node-minify",
113
+ keywords: [
114
+ "compressor",
115
+ "minify",
116
+ "minifier"
117
+ ],
118
+ author: "Rodolphe Stoclin <srodolphe@gmail.com>",
119
+ homepage: "https://github.com/srod/node-minify/tree/master/packages/cli#readme",
120
+ license: "MIT",
121
+ bin: {
122
+ "node-minify": "dist/cli.mjs"
123
+ },
124
+ engines: {
125
+ node: ">=14.0.0"
126
+ },
127
+ directories: {
128
+ lib: "dist",
129
+ test: "__tests__"
130
+ },
131
+ main: "./dist/index.js",
132
+ module: "./dist/index.mjs",
133
+ types: "./dist/index.d.ts",
134
+ exports: {
135
+ require: "./dist/index.js",
136
+ import: "./dist/index.mjs",
137
+ types: "./dist/index.d.ts"
138
+ },
139
+ files: [
140
+ "bin",
141
+ "dist/**/*"
142
+ ],
143
+ publishConfig: {
144
+ access: "public"
145
+ },
146
+ repository: {
147
+ type: "git",
148
+ url: "git+https://github.com/srod/node-minify.git"
149
+ },
150
+ bugs: {
151
+ url: "https://github.com/srod/node-minify/issues"
152
+ },
153
+ scripts: {
154
+ clean: "pnpm dlx rimraf dist",
155
+ build: "npm run clean && tsup src/index.ts --format cjs,esm --dts --sourcemap && tsup src/bin/cli.ts --format esm --dts --sourcemap",
156
+ prepublishOnly: "npm run build"
157
+ },
158
+ dependencies: {
159
+ "@node-minify/core": "8.0.2-beta.0",
160
+ "@node-minify/utils": "8.0.2-beta.0",
161
+ chalk: "4.1.2",
162
+ commander: "9.4.1",
163
+ ora: "5.4.1",
164
+ "update-notifier": "6.0.2"
165
+ },
166
+ devDependencies: {
167
+ "@node-minify/types": "8.0.2-beta.0",
168
+ "@types/chalk": "^2.2.0",
169
+ "@types/ora": "^3.2.0"
170
+ },
171
+ gitHead: "bd2fe186257749fcb9bf7a9ff1ce61fb922c4ade"
172
+ };
173
+
174
+ // src/bin/cli.ts
175
+ var program = new Command();
176
+ updateNotifier({ pkg: package_default }).notify();
177
+ program.storeOptionsAsProperties().version(package_default.version, "-v, --version").option("-c, --compressor [compressor]", "use the specified compressor [uglify-js]", "uglify-js").option("-i, --input [file]", "input file path").option("-o, --output [file]", "output file path").option("-s, --silence", "no output will be printed").option("-O, --option [option]", "option for the compressor as JSON object", "");
178
+ program.on("--help", function() {
179
+ console.log(" List of compressors:");
180
+ console.log("");
181
+ console.log(" - babel-minify");
182
+ console.log(" - gcc");
183
+ console.log(" - html-minifier");
184
+ console.log(" - terser");
185
+ console.log(" - uglify-js");
186
+ console.log(" - uglify-es");
187
+ console.log(" - yui");
188
+ console.log("");
189
+ });
190
+ program.parse(process.argv);
191
+ var options = program.opts();
192
+ if (!options.compressor || !options.input || !options.output) {
193
+ program.help();
194
+ }
195
+ run(options).then(() => process.exit()).catch((err) => {
196
+ console.error(err);
197
+ process.exit(1);
198
+ });
199
+ /*!
200
+ * node-minify
201
+ * Copyright(c) 2011-2022 Rodolphe Stoclin
202
+ * MIT Licensed
203
+ */
204
+ //# sourceMappingURL=cli.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/bin/cli.ts","../src/index.ts","../src/compress.ts","../src/spinner.ts"],"sourcesContent":["#!/usr/bin/env node\n\n/*!\n * node-minify\n * Copyright(c) 2011-2022 Rodolphe Stoclin\n * MIT Licensed\n */\n\nimport updateNotifier from 'update-notifier';\nimport { Command } from 'commander';\nconst program = new Command();\nimport { run } from '../';\nimport packageJson from '../../package.json';\nimport { Settings } from '@node-minify/types';\n\nupdateNotifier({ pkg: packageJson }).notify();\n\nprogram\n .storeOptionsAsProperties()\n .version(packageJson.version, '-v, --version')\n .option('-c, --compressor [compressor]', 'use the specified compressor [uglify-js]', 'uglify-js')\n .option('-i, --input [file]', 'input file path')\n .option('-o, --output [file]', 'output file path')\n .option('-s, --silence', 'no output will be printed')\n .option('-O, --option [option]', 'option for the compressor as JSON object', '');\n\nprogram.on('--help', function () {\n console.log(' List of compressors:');\n console.log('');\n console.log(' - babel-minify');\n console.log(' - gcc');\n console.log(' - html-minifier');\n console.log(' - terser');\n console.log(' - uglify-js');\n console.log(' - uglify-es');\n console.log(' - yui');\n console.log('');\n});\n\nprogram.parse(process.argv);\n\nconst options: Settings = program.opts();\n\n/**\n * Show help if missing mandatory.\n */\nif (!options.compressor || !options.input || !options.output) {\n program.help();\n}\n\nrun(options)\n .then(() => process.exit())\n .catch(err => {\n console.error(err);\n process.exit(1);\n });\n","/*!\n * node-minify\n * Copyright(c) 2011-2022 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport chalk from 'chalk';\nimport { compress } from './compress';\nimport { spinnerStart, spinnerStop, spinnerError } from './spinner';\nimport { Settings, Result } from '@node-minify/types';\n\n/**\n * Module variables.\n */\nlet silence = false;\n\n/**\n * Run one compressor.\n */\nconst runOne = (cli: Settings): Promise<Result> => {\n return new Promise<Result>((resolve, reject) => {\n const compressor =\n typeof cli.compressor === 'string' ? require(`@node-minify/${cli.compressor}`).default : cli.compressor;\n\n const options: Settings = {\n compressorLabel: cli.compressor,\n compressor,\n input: typeof cli.input === 'string' ? cli.input.split(',') : '',\n output: cli.output\n };\n\n if (cli.option) {\n options.options = JSON.parse(cli.option);\n }\n\n if (!silence) {\n spinnerStart(options);\n }\n\n return compress(options)\n .then((result: Result) => {\n if (!silence) {\n spinnerStop(result);\n }\n resolve(result);\n })\n .catch((err: Error) => {\n if (!silence) {\n spinnerError(options);\n }\n reject(err);\n });\n });\n};\n\n/**\n * Run cli.\n */\nconst run = (cli: Settings) => {\n silence = !!cli.silence;\n\n if (!silence) {\n console.log('');\n console.log(chalk.bgBlue.black(' INFO '), 'Starting compression...');\n console.log('');\n }\n\n return new Promise((resolve, reject) => {\n runOne(cli)\n .then(() => {\n if (!silence) {\n console.log('');\n console.log(chalk.bgGreen.black(' DONE '), chalk.green('Done!'));\n console.log('');\n }\n })\n .then(resolve)\n .catch(reject);\n });\n};\n\n/**\n * Expose `run()`.\n */\nexport { run };\n","/*!\n * node-minify\n * Copyright(c) 2011-2022 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport minify from '@node-minify/core';\nimport { utils } from '@node-minify/utils';\nimport { Settings, Result } from '@node-minify/types';\n\n/**\n * Run compression.\n *\n * @param {Object} options\n */\nconst compress = (options: Settings): Promise<Result> => {\n return new Promise<Result>((resolve, reject) => {\n minify(options)\n .then(() => {\n if (options.output.includes('$1')) {\n // TODO handle $1 output\n // npx node-minify --compressor uglify-js --input 'source/**/*.js' --output 'source/$1.min.js' --option '{\"warnings\": true, \"mangle\": false}'\n return resolve({\n compressorLabel: options.compressorLabel || '',\n compressor: options.compressor,\n size: 0,\n sizeGzip: 0\n });\n }\n utils\n .getFilesizeGzippedInBytes(options.output)\n .then((sizeGzip: number) => {\n resolve({\n compressorLabel: options.compressorLabel || '',\n compressor: options.compressor,\n size: utils.getFilesizeInBytes(options.output),\n sizeGzip: sizeGzip\n });\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\n/**\n * Expose `compress()`.\n */\nexport { compress };\n","/*!\n * node-minify\n * Copyright(c) 2011-2022 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { Settings, Result } from '@node-minify/types';\n\nconst spinner = ora();\n\n/**\n * Start spinner.\n *\n * @param {Object} options\n */\nconst start = (options: Settings) => {\n spinner.text = 'Compressing file(s) with ' + chalk.green(options.compressorLabel) + '...';\n spinner.start();\n};\n\n/**\n * Stop spinner.\n *\n * @param {Object} result\n */\nconst stop = (result: Result) => {\n spinner.text =\n 'File(s) compressed successfully with ' +\n chalk.green(result.compressorLabel) +\n ' (' +\n chalk.green(result.size) +\n ' minified, ' +\n chalk.green(result.sizeGzip) +\n ' gzipped)';\n spinner.succeed();\n};\n\n/**\n * Mark spinner as failed.\n *\n * @param {Object} options\n */\nconst error = (options: Settings) => {\n spinner.text = 'Error - file(s) not compressed with ' + chalk.red(options.compressorLabel);\n spinner.fail();\n};\n\n/**\n * Expose `start(), stop() and error()`.\n */\nexport { start as spinnerStart, stop as spinnerStop, error as spinnerError };\n"],"mappings":"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","names":["chalk","options","options","options","chalk"]}
package/dist/index.d.ts CHANGED
@@ -6,9 +6,6 @@ import { Settings } from '@node-minify/types';
6
6
  * MIT Licensed
7
7
  */
8
8
 
9
- /**
10
- * Run cli.
11
- */
12
9
  declare const run: (cli: Settings) => Promise<unknown>;
13
10
 
14
11
  export { run };
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -38,7 +39,7 @@ var compress = (options) => {
38
39
  (0, import_core.default)(options).then(() => {
39
40
  if (options.output.includes("$1")) {
40
41
  return resolve({
41
- compressorLabel: options.compressorLabel,
42
+ compressorLabel: options.compressorLabel || "",
42
43
  compressor: options.compressor,
43
44
  size: 0,
44
45
  sizeGzip: 0
@@ -46,7 +47,7 @@ var compress = (options) => {
46
47
  }
47
48
  import_utils.utils.getFilesizeGzippedInBytes(options.output).then((sizeGzip) => {
48
49
  resolve({
49
- compressorLabel: options.compressorLabel,
50
+ compressorLabel: options.compressorLabel || "",
50
51
  compressor: options.compressor,
51
52
  size: import_utils.utils.getFilesizeInBytes(options.output),
52
53
  sizeGzip
@@ -129,3 +130,4 @@ var run = (cli) => {
129
130
  * Copyright(c) 2011-2022 Rodolphe Stoclin
130
131
  * MIT Licensed
131
132
  */
133
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/compress.ts","../src/spinner.ts"],"sourcesContent":["/*!\n * node-minify\n * Copyright(c) 2011-2022 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport chalk from 'chalk';\nimport { compress } from './compress';\nimport { spinnerStart, spinnerStop, spinnerError } from './spinner';\nimport { Settings, Result } from '@node-minify/types';\n\n/**\n * Module variables.\n */\nlet silence = false;\n\n/**\n * Run one compressor.\n */\nconst runOne = (cli: Settings): Promise<Result> => {\n return new Promise<Result>((resolve, reject) => {\n const compressor =\n typeof cli.compressor === 'string' ? require(`@node-minify/${cli.compressor}`).default : cli.compressor;\n\n const options: Settings = {\n compressorLabel: cli.compressor,\n compressor,\n input: typeof cli.input === 'string' ? cli.input.split(',') : '',\n output: cli.output\n };\n\n if (cli.option) {\n options.options = JSON.parse(cli.option);\n }\n\n if (!silence) {\n spinnerStart(options);\n }\n\n return compress(options)\n .then((result: Result) => {\n if (!silence) {\n spinnerStop(result);\n }\n resolve(result);\n })\n .catch((err: Error) => {\n if (!silence) {\n spinnerError(options);\n }\n reject(err);\n });\n });\n};\n\n/**\n * Run cli.\n */\nconst run = (cli: Settings) => {\n silence = !!cli.silence;\n\n if (!silence) {\n console.log('');\n console.log(chalk.bgBlue.black(' INFO '), 'Starting compression...');\n console.log('');\n }\n\n return new Promise((resolve, reject) => {\n runOne(cli)\n .then(() => {\n if (!silence) {\n console.log('');\n console.log(chalk.bgGreen.black(' DONE '), chalk.green('Done!'));\n console.log('');\n }\n })\n .then(resolve)\n .catch(reject);\n });\n};\n\n/**\n * Expose `run()`.\n */\nexport { run };\n","/*!\n * node-minify\n * Copyright(c) 2011-2022 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport minify from '@node-minify/core';\nimport { utils } from '@node-minify/utils';\nimport { Settings, Result } from '@node-minify/types';\n\n/**\n * Run compression.\n *\n * @param {Object} options\n */\nconst compress = (options: Settings): Promise<Result> => {\n return new Promise<Result>((resolve, reject) => {\n minify(options)\n .then(() => {\n if (options.output.includes('$1')) {\n // TODO handle $1 output\n // npx node-minify --compressor uglify-js --input 'source/**/*.js' --output 'source/$1.min.js' --option '{\"warnings\": true, \"mangle\": false}'\n return resolve({\n compressorLabel: options.compressorLabel || '',\n compressor: options.compressor,\n size: 0,\n sizeGzip: 0\n });\n }\n utils\n .getFilesizeGzippedInBytes(options.output)\n .then((sizeGzip: number) => {\n resolve({\n compressorLabel: options.compressorLabel || '',\n compressor: options.compressor,\n size: utils.getFilesizeInBytes(options.output),\n sizeGzip: sizeGzip\n });\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\n/**\n * Expose `compress()`.\n */\nexport { compress };\n","/*!\n * node-minify\n * Copyright(c) 2011-2022 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { Settings, Result } from '@node-minify/types';\n\nconst spinner = ora();\n\n/**\n * Start spinner.\n *\n * @param {Object} options\n */\nconst start = (options: Settings) => {\n spinner.text = 'Compressing file(s) with ' + chalk.green(options.compressorLabel) + '...';\n spinner.start();\n};\n\n/**\n * Stop spinner.\n *\n * @param {Object} result\n */\nconst stop = (result: Result) => {\n spinner.text =\n 'File(s) compressed successfully with ' +\n chalk.green(result.compressorLabel) +\n ' (' +\n chalk.green(result.size) +\n ' minified, ' +\n chalk.green(result.sizeGzip) +\n ' gzipped)';\n spinner.succeed();\n};\n\n/**\n * Mark spinner as failed.\n *\n * @param {Object} options\n */\nconst error = (options: Settings) => {\n spinner.text = 'Error - file(s) not compressed with ' + chalk.red(options.compressorLabel);\n spinner.fail();\n};\n\n/**\n * Expose `start(), stop() and error()`.\n */\nexport { start as spinnerStart, stop as spinnerStop, error as spinnerError };\n"],"mappings":"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","names":["import_chalk","minify","ora","chalk","chalk"]}
package/dist/index.mjs CHANGED
@@ -17,7 +17,7 @@ var compress = (options) => {
17
17
  minify(options).then(() => {
18
18
  if (options.output.includes("$1")) {
19
19
  return resolve({
20
- compressorLabel: options.compressorLabel,
20
+ compressorLabel: options.compressorLabel || "",
21
21
  compressor: options.compressor,
22
22
  size: 0,
23
23
  sizeGzip: 0
@@ -25,7 +25,7 @@ var compress = (options) => {
25
25
  }
26
26
  utils.getFilesizeGzippedInBytes(options.output).then((sizeGzip) => {
27
27
  resolve({
28
- compressorLabel: options.compressorLabel,
28
+ compressorLabel: options.compressorLabel || "",
29
29
  compressor: options.compressor,
30
30
  size: utils.getFilesizeInBytes(options.output),
31
31
  sizeGzip
@@ -107,3 +107,4 @@ export {
107
107
  * Copyright(c) 2011-2022 Rodolphe Stoclin
108
108
  * MIT Licensed
109
109
  */
110
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/compress.ts","../src/spinner.ts"],"sourcesContent":["/*!\n * node-minify\n * Copyright(c) 2011-2022 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport chalk from 'chalk';\nimport { compress } from './compress';\nimport { spinnerStart, spinnerStop, spinnerError } from './spinner';\nimport { Settings, Result } from '@node-minify/types';\n\n/**\n * Module variables.\n */\nlet silence = false;\n\n/**\n * Run one compressor.\n */\nconst runOne = (cli: Settings): Promise<Result> => {\n return new Promise<Result>((resolve, reject) => {\n const compressor =\n typeof cli.compressor === 'string' ? require(`@node-minify/${cli.compressor}`).default : cli.compressor;\n\n const options: Settings = {\n compressorLabel: cli.compressor,\n compressor,\n input: typeof cli.input === 'string' ? cli.input.split(',') : '',\n output: cli.output\n };\n\n if (cli.option) {\n options.options = JSON.parse(cli.option);\n }\n\n if (!silence) {\n spinnerStart(options);\n }\n\n return compress(options)\n .then((result: Result) => {\n if (!silence) {\n spinnerStop(result);\n }\n resolve(result);\n })\n .catch((err: Error) => {\n if (!silence) {\n spinnerError(options);\n }\n reject(err);\n });\n });\n};\n\n/**\n * Run cli.\n */\nconst run = (cli: Settings) => {\n silence = !!cli.silence;\n\n if (!silence) {\n console.log('');\n console.log(chalk.bgBlue.black(' INFO '), 'Starting compression...');\n console.log('');\n }\n\n return new Promise((resolve, reject) => {\n runOne(cli)\n .then(() => {\n if (!silence) {\n console.log('');\n console.log(chalk.bgGreen.black(' DONE '), chalk.green('Done!'));\n console.log('');\n }\n })\n .then(resolve)\n .catch(reject);\n });\n};\n\n/**\n * Expose `run()`.\n */\nexport { run };\n","/*!\n * node-minify\n * Copyright(c) 2011-2022 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport minify from '@node-minify/core';\nimport { utils } from '@node-minify/utils';\nimport { Settings, Result } from '@node-minify/types';\n\n/**\n * Run compression.\n *\n * @param {Object} options\n */\nconst compress = (options: Settings): Promise<Result> => {\n return new Promise<Result>((resolve, reject) => {\n minify(options)\n .then(() => {\n if (options.output.includes('$1')) {\n // TODO handle $1 output\n // npx node-minify --compressor uglify-js --input 'source/**/*.js' --output 'source/$1.min.js' --option '{\"warnings\": true, \"mangle\": false}'\n return resolve({\n compressorLabel: options.compressorLabel || '',\n compressor: options.compressor,\n size: 0,\n sizeGzip: 0\n });\n }\n utils\n .getFilesizeGzippedInBytes(options.output)\n .then((sizeGzip: number) => {\n resolve({\n compressorLabel: options.compressorLabel || '',\n compressor: options.compressor,\n size: utils.getFilesizeInBytes(options.output),\n sizeGzip: sizeGzip\n });\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\n/**\n * Expose `compress()`.\n */\nexport { compress };\n","/*!\n * node-minify\n * Copyright(c) 2011-2022 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { Settings, Result } from '@node-minify/types';\n\nconst spinner = ora();\n\n/**\n * Start spinner.\n *\n * @param {Object} options\n */\nconst start = (options: Settings) => {\n spinner.text = 'Compressing file(s) with ' + chalk.green(options.compressorLabel) + '...';\n spinner.start();\n};\n\n/**\n * Stop spinner.\n *\n * @param {Object} result\n */\nconst stop = (result: Result) => {\n spinner.text =\n 'File(s) compressed successfully with ' +\n chalk.green(result.compressorLabel) +\n ' (' +\n chalk.green(result.size) +\n ' minified, ' +\n chalk.green(result.sizeGzip) +\n ' gzipped)';\n spinner.succeed();\n};\n\n/**\n * Mark spinner as failed.\n *\n * @param {Object} options\n */\nconst error = (options: Settings) => {\n spinner.text = 'Error - file(s) not compressed with ' + chalk.red(options.compressorLabel);\n spinner.fail();\n};\n\n/**\n * Expose `start(), stop() and error()`.\n */\nexport { start as spinnerStart, stop as spinnerStop, error as spinnerError };\n"],"mappings":"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","names":["chalk","chalk"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@node-minify/cli",
3
- "version": "8.0.0-beta.0",
3
+ "version": "8.0.2-beta.0",
4
4
  "description": "CLI - command line interface for @node-minify",
5
5
  "keywords": [
6
6
  "compressor",
@@ -11,7 +11,7 @@
11
11
  "homepage": "https://github.com/srod/node-minify/tree/master/packages/cli#readme",
12
12
  "license": "MIT",
13
13
  "bin": {
14
- "node-minify": "bin/cli.js"
14
+ "node-minify": "dist/cli.mjs"
15
15
  },
16
16
  "engines": {
17
17
  "node": ">=14.0.0"
@@ -44,21 +44,21 @@
44
44
  },
45
45
  "scripts": {
46
46
  "clean": "pnpm dlx rimraf dist",
47
- "build": "npm run clean && tsup src/index.ts --format cjs,esm --dts --clean",
47
+ "build": "npm run clean && tsup src/index.ts --format cjs,esm --dts --sourcemap && tsup src/bin/cli.ts --format esm --dts --sourcemap",
48
48
  "prepublishOnly": "npm run build"
49
49
  },
50
50
  "dependencies": {
51
- "@node-minify/core": "8.0.0-beta.0",
52
- "@node-minify/utils": "8.0.0-beta.0",
51
+ "@node-minify/core": "8.0.2-beta.0",
52
+ "@node-minify/utils": "8.0.2-beta.0",
53
53
  "chalk": "4.1.2",
54
54
  "commander": "9.4.1",
55
55
  "ora": "5.4.1",
56
56
  "update-notifier": "6.0.2"
57
57
  },
58
58
  "devDependencies": {
59
- "@node-minify/types": "8.0.0-beta.0",
59
+ "@node-minify/types": "8.0.2-beta.0",
60
60
  "@types/chalk": "^2.2.0",
61
61
  "@types/ora": "^3.2.0"
62
62
  },
63
- "gitHead": "0507c6190577e1939997a8231b07952ba167a780"
63
+ "gitHead": "bd2fe186257749fcb9bf7a9ff1ce61fb922c4ade"
64
64
  }
package/bin/cli.js DELETED
@@ -1,55 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /*!
4
- * node-minify
5
- * Copyright(c) 2011-2022 Rodolphe Stoclin
6
- * MIT Licensed
7
- */
8
-
9
- const updateNotifier = require('update-notifier');
10
- const program = require('commander');
11
- const cli = require('../lib/cli');
12
- const pkg = require('../package.json');
13
-
14
- updateNotifier({ pkg: pkg }).notify();
15
-
16
- program
17
- .storeOptionsAsProperties()
18
- .version(pkg.version, '-v, --version')
19
- .option('-c, --compressor [compressor]', 'use the specified compressor [uglify-js]', 'uglify-js')
20
- .option('-i, --input [file]', 'input file path')
21
- .option('-o, --output [file]', 'output file path')
22
- .option('-s, --silence', 'no output will be printed')
23
- .option('-O, --option [option]', 'option for the compressor as JSON object', '');
24
-
25
- program.on('--help', function () {
26
- console.log(' List of compressors:');
27
- console.log('');
28
- console.log(' - babel-minify');
29
- console.log(' - gcc');
30
- console.log(' - html-minifier');
31
- console.log(' - terser');
32
- console.log(' - uglify-js');
33
- console.log(' - uglify-es');
34
- console.log(' - yui');
35
- console.log('');
36
- });
37
-
38
- program.parse(process.argv);
39
-
40
- const options = program.opts();
41
-
42
- /**
43
- * Show help if missing mandatory.
44
- */
45
- if (!options.compressor || !options.input || !options.output) {
46
- program.help();
47
- }
48
-
49
- cli
50
- .run(options)
51
- .then(() => process.exit())
52
- .catch(err => {
53
- console.error(err);
54
- process.exit(1);
55
- });