настройка webpack
This commit is contained in:
1561
node_modules/webpack-cli/CHANGELOG.md
generated
vendored
Normal file
1561
node_modules/webpack-cli/CHANGELOG.md
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
20
node_modules/webpack-cli/LICENSE
generated
vendored
Normal file
20
node_modules/webpack-cli/LICENSE
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
Copyright JS Foundation and other contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
'Software'), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
112
node_modules/webpack-cli/README.md
generated
vendored
Normal file
112
node_modules/webpack-cli/README.md
generated
vendored
Normal file
@ -0,0 +1,112 @@
|
||||
<div align="center">
|
||||
<a href="https://github.com/webpack/webpack-cli">
|
||||
<img width="200" height="200" src="https://webpack.js.org/assets/icon-square-big.svg">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<h1 align="center">webpack CLI</h1>
|
||||
|
||||
<p align="center">
|
||||
The official CLI of webpack
|
||||
</p>
|
||||
<br>
|
||||
|
||||
[![npm][npm]][npm-url]
|
||||
[![Build Status][build-status]][build-status-url]
|
||||
[![Build2 Status][build-status-azure]][build-status-azure-url]
|
||||
[![deps][deps]][deps-url]
|
||||
[![Code Climate][maintainability]][maintainability-url]
|
||||
[![chat on gitter][chat]][chat-url]
|
||||
[![Install Size][size]][size-url]
|
||||
[![Downloads][downloads]][downloads-url]
|
||||
[![lerna][lerna]][lerna-url]
|
||||
[![GitHub contributors][contributors]][contributors-url]
|
||||
|
||||
- [About](#about)
|
||||
- [How to install](#how-to-install)
|
||||
- [Packages](#packages)
|
||||
- [Commands](#commands)
|
||||
- [Utilities](#utilities)
|
||||
- [Getting started](#getting-started)
|
||||
- [webpack CLI Scaffolds](#webpack-cli-scaffolds)
|
||||
- [Contributing and Internal Documentation](#contributing-and-internal-documentation)
|
||||
- [Open Collective](#open-collective)
|
||||
|
||||
## About
|
||||
|
||||
webpack CLI provides a flexible set of commands for developers to increase speed when setting up a custom webpack project. As of webpack v4, webpack is not expecting a configuration file, but often developers want to create a more custom webpack configuration based on their use-cases and needs. webpack CLI addresses these needs by providing a set of tools to improve the setup of custom webpack configuration.
|
||||
|
||||
### How to install
|
||||
|
||||
When you have followed the [Getting Started](https://webpack.js.org/guides/getting-started/) guide of webpack then webpack CLI is already installed!
|
||||
|
||||
Otherwise `npm install --save-dev webpack-cli` or `yarn add webpack-cli --dev` will install it.
|
||||
|
||||
## Packages
|
||||
|
||||
We organize webpack CLI as a multi-package repository using [lerna](https://github.com/lerna/lerna). Every command has a dedicated subfolder in the `packages` Folder. Here's a summary of commands provided by the CLI.
|
||||
|
||||
### Commands
|
||||
|
||||
Supporting developers is an important task for webpack CLI. Thus, webpack CLI provides different commands for many common tasks.
|
||||
|
||||
- [`webpack-cli init`](./packages/init/README.md#webpack-cli-init) - Create a new webpack configuration.
|
||||
- [`webpack-cli info`](./packages/info/README.md#webpack-cli-info) - Returns information related to the local environment.
|
||||
- [`webpack-cli migrate`](./packages/migrate/README.md#webpack-cli-migrate) - Migrate project from one version to another.
|
||||
- [`webpack-cli generate-plugin`](./packages/generate-plugin/README.md#webpack-cli-generate-plugin) - Initiate new plugin project.
|
||||
- [`webpack-cli generate-loader`](./packages/generate-loader/README.md#webpack-cli-generate-loader) - Initiate new loader project.
|
||||
- [`webpack-cli serve`](./packages/serve/README.md#webpack-cli-serve) - Use webpack with a development server that provides live reloading.
|
||||
|
||||
### Utilities
|
||||
|
||||
The project also has several utility packages which are used by other commands
|
||||
|
||||
- [`utils`](./packages/utils/README.md) - Several utilities used across webpack-cli.
|
||||
- [`generators`](./packages/generators/README.md) - Contains all webpack-cli related yeoman generators.
|
||||
- [`webpack-scaffold`](./packages/webpack-scaffold/README.md) - Utilities to create a webpack scaffold.
|
||||
|
||||
## Getting started
|
||||
|
||||
When you have followed the [Getting Started](https://webpack.js.org/guides/getting-started/) guide of webpack then webpack CLI is already installed! Otherwise, you would need to install webpack CLI and the packages you want to use. If we want to use the `init` command to create a new `webpack.config.js` configuration file:
|
||||
|
||||
```sh
|
||||
npm i webpack-cli @webpack-cli/init
|
||||
npx webpack-cli init
|
||||
```
|
||||
|
||||
You will be prompted for some questions about what how you want to generate your config file when running the `init` command so webpack CLI can provide the best fitting configuration.
|
||||
|
||||
## webpack CLI Scaffolds
|
||||
|
||||
With v3 of webpack CLI, we introduced scaffolding as an integral part of the CLI. Our goal is to simplify the creation of webpack configurations for different purposes. Additionally, sharing such solutions with the community is beneficial and with webpack, we want to allow this. We provide `webpack-scaffold` as a utility suite for creating these scaffolds. It contains functions that could be of use for creating a scaffold yourself.
|
||||
|
||||
You can read more about [Scaffolding](https://webpack.js.org/guides/scaffolding), learn [How to compose a webpack-scaffold?](https://webpack.js.org/contribute/writing-a-scaffold) or generate one with [webpack-scaffold-starter](https://github.com/rishabh3112/webpack-scaffold-starter).
|
||||
|
||||
## Contributing and Internal Documentation
|
||||
|
||||
The webpack family welcomes any contributor, small or big. We are happy to elaborate, guide you through the source code and find issues you might want to work on! To get started have a look at our [documentation on contributing](./.github/CONTRIBUTING.md).
|
||||
|
||||
## Open Collective
|
||||
|
||||
If you like **webpack**, please consider donating to our [Open Collective](https://opencollective.com/webpack) to help us maintain it.
|
||||
|
||||
[build-status]: https://travis-ci.org/webpack/webpack-cli.svg
|
||||
[build-status-url]: https://travis-ci.org/webpack/webpack-cli
|
||||
[build-status-azure]: https://dev.azure.com/webpack/webpack/_apis/build/status/webpack.webpack-cli
|
||||
[build-status-azure-url]: https://dev.azure.com/webpack/webpack/_build/latest?definitionId=4
|
||||
[chat]: https://badges.gitter.im/webpack/webpack.svg
|
||||
[chat-url]: https://gitter.im/webpack/webpack
|
||||
[contributors]: https://img.shields.io/github/contributors/webpack/webpack-cli.svg
|
||||
[contributors-url]: https://github.com/webpack/webpack-cli/graphs/contributors
|
||||
[deps]: https://img.shields.io/david/webpack/webpack.svg
|
||||
[deps-url]: https://david-dm.org/webpack/webpack-cli
|
||||
[downloads]: https://img.shields.io/npm/dw/webpack-cli.svg
|
||||
[downloads-url]: https://www.npmjs.com/package/webpack-cli
|
||||
[lerna]: https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg
|
||||
[lerna-url]: http://www.lernajs.io/
|
||||
[npm]: https://img.shields.io/npm/v/webpack-cli.svg
|
||||
[npm-url]: https://www.npmjs.com/package/webpack-cli
|
||||
[maintainability]: https://codeclimate.com/github/webpack/webpack-cli/badges/gpa.svg
|
||||
[maintainability-url]: https://codeclimate.com/github/webpack/webpack-cli
|
||||
[size]: https://packagephobia.now.sh/badge?p=webpack-cli
|
||||
[size-url]: https://packagephobia.now.sh/result?p=webpack-cli
|
||||
63
node_modules/webpack-cli/bin/.eslintrc.js
generated
vendored
Normal file
63
node_modules/webpack-cli/bin/.eslintrc.js
generated
vendored
Normal file
@ -0,0 +1,63 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
plugins: ["node"],
|
||||
extends: ["../.eslintrc.js", "plugin:node/recommended"],
|
||||
env: {
|
||||
node: true,
|
||||
es6: true,
|
||||
jest: true
|
||||
},
|
||||
parserOptions: { ecmaVersion: 2017, sourceType: "module" },
|
||||
rules: {
|
||||
"node/no-unsupported-features": ["error", { version: 6 }],
|
||||
"node/no-deprecated-api": "error",
|
||||
"node/no-missing-import": "error",
|
||||
"node/no-missing-require": [
|
||||
"error",
|
||||
{
|
||||
resolvePaths: ["./packages"],
|
||||
allowModules: [
|
||||
"webpack",
|
||||
"@webpack-cli/generators",
|
||||
"@webpack-cli/init",
|
||||
"@webpack-cli/migrate",
|
||||
"@webpack-cli/utils",
|
||||
"@webpack-cli/generate-loader",
|
||||
"@webpack-cli/generate-plugin",
|
||||
"@webpack-cli/webpack-scaffold"
|
||||
]
|
||||
}
|
||||
],
|
||||
"node/no-unpublished-bin": "error",
|
||||
"node/no-unpublished-require": [
|
||||
"error",
|
||||
{
|
||||
allowModules: [
|
||||
"webpack",
|
||||
"webpack-dev-server",
|
||||
"@webpack-cli/generators",
|
||||
"@webpack-cli/init",
|
||||
"@webpack-cli/migrate",
|
||||
"@webpack-cli/utils",
|
||||
"@webpack-cli/generate-loader",
|
||||
"@webpack-cli/generate-plugin",
|
||||
"@webpack-cli/webpack-scaffold"
|
||||
]
|
||||
}
|
||||
],
|
||||
"node/no-extraneous-require": [
|
||||
"error",
|
||||
{
|
||||
allowModules: [
|
||||
"@webpack-cli/migrate",
|
||||
"@webpack-cli/generators",
|
||||
"@webpack-cli/utils",
|
||||
"@webpack-cli/generate-loader",
|
||||
"@webpack-cli/generate-plugin",
|
||||
"@webpack-cli/webpack-scaffold"
|
||||
]
|
||||
}
|
||||
],
|
||||
"node/process-exit-as-throw": "error"
|
||||
}
|
||||
};
|
||||
366
node_modules/webpack-cli/bin/cli.js
generated
vendored
Executable file
366
node_modules/webpack-cli/bin/cli.js
generated
vendored
Executable file
@ -0,0 +1,366 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/*
|
||||
MIT License http://www.opensource.org/licenses/mit-license.php
|
||||
Author Tobias Koppers @sokra
|
||||
*/
|
||||
|
||||
const { NON_COMPILATION_ARGS } = require("./utils/constants");
|
||||
|
||||
(function() {
|
||||
// wrap in IIFE to be able to use return
|
||||
|
||||
const importLocal = require("import-local");
|
||||
// Prefer the local installation of webpack-cli
|
||||
if (importLocal(__filename)) {
|
||||
return;
|
||||
}
|
||||
|
||||
require("v8-compile-cache");
|
||||
|
||||
const ErrorHelpers = require("./utils/errorHelpers");
|
||||
|
||||
const NON_COMPILATION_CMD = process.argv.find(arg => {
|
||||
if (arg === "serve") {
|
||||
global.process.argv = global.process.argv.filter(a => a !== "serve");
|
||||
process.argv = global.process.argv;
|
||||
}
|
||||
return NON_COMPILATION_ARGS.find(a => a === arg);
|
||||
});
|
||||
|
||||
if (NON_COMPILATION_CMD) {
|
||||
return require("./utils/prompt-command")(NON_COMPILATION_CMD, ...process.argv);
|
||||
}
|
||||
|
||||
const yargs = require("yargs").usage(`webpack-cli ${require("../package.json").version}
|
||||
|
||||
Usage: webpack-cli [options]
|
||||
webpack-cli [options] --entry <entry> --output <output>
|
||||
webpack-cli [options] <entries...> --output <output>
|
||||
webpack-cli <command> [options]
|
||||
|
||||
For more information, see https://webpack.js.org/api/cli/.`);
|
||||
|
||||
require("./config/config-yargs")(yargs);
|
||||
|
||||
// yargs will terminate the process early when the user uses help or version.
|
||||
// This causes large help outputs to be cut short (https://github.com/nodejs/node/wiki/API-changes-between-v0.10-and-v4#process).
|
||||
// To prevent this we use the yargs.parse API and exit the process normally
|
||||
yargs.parse(process.argv.slice(2), (err, argv, output) => {
|
||||
Error.stackTraceLimit = 30;
|
||||
|
||||
// arguments validation failed
|
||||
if (err && output) {
|
||||
console.error(output);
|
||||
process.exitCode = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
// help or version info
|
||||
if (output) {
|
||||
console.log(output);
|
||||
return;
|
||||
}
|
||||
|
||||
if (argv.verbose) {
|
||||
argv["display"] = "verbose";
|
||||
}
|
||||
|
||||
let options;
|
||||
try {
|
||||
options = require("./utils/convert-argv")(argv);
|
||||
} catch (err) {
|
||||
if (err.code === "MODULE_NOT_FOUND") {
|
||||
const moduleName = err.message.split("'")[1];
|
||||
let instructions = "";
|
||||
let errorMessage = "";
|
||||
|
||||
if (moduleName === "webpack") {
|
||||
errorMessage = `\n${moduleName} not installed`;
|
||||
instructions = `Install webpack to start bundling: \u001b[32m\n $ npm install --save-dev ${moduleName}\n`;
|
||||
|
||||
if (process.env.npm_execpath !== undefined && process.env.npm_execpath.includes("yarn")) {
|
||||
instructions = `Install webpack to start bundling: \u001b[32m\n $ yarn add ${moduleName} --dev\n`;
|
||||
}
|
||||
Error.stackTraceLimit = 1;
|
||||
console.error(`${errorMessage}\n\n${instructions}`);
|
||||
process.exitCode = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (err.name !== "ValidationError") {
|
||||
throw err;
|
||||
}
|
||||
|
||||
const stack = ErrorHelpers.cleanUpWebpackOptions(err.stack, err.message);
|
||||
const message = err.message + "\n" + stack;
|
||||
|
||||
if (argv.color) {
|
||||
console.error(`\u001b[1m\u001b[31m${message}\u001b[39m\u001b[22m`);
|
||||
} else {
|
||||
console.error(message);
|
||||
}
|
||||
|
||||
process.exitCode = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* When --silent flag is present, an object with a no-op write method is
|
||||
* used in place of process.stout
|
||||
*/
|
||||
const stdout = argv.silent ? { write: () => {} } : process.stdout;
|
||||
|
||||
function ifArg(name, fn, init) {
|
||||
if (Array.isArray(argv[name])) {
|
||||
if (init) init();
|
||||
argv[name].forEach(fn);
|
||||
} else if (typeof argv[name] !== "undefined") {
|
||||
if (init) init();
|
||||
fn(argv[name], -1);
|
||||
}
|
||||
}
|
||||
|
||||
function processOptions(options) {
|
||||
// process Promise
|
||||
if (typeof options.then === "function") {
|
||||
options.then(processOptions).catch(function(err) {
|
||||
console.error(err.stack || err);
|
||||
// eslint-disable-next-line no-process-exit
|
||||
process.exit(1);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const firstOptions = [].concat(options)[0];
|
||||
const statsPresetToOptions = require("webpack").Stats.presetToOptions;
|
||||
|
||||
let outputOptions = options.stats;
|
||||
if (typeof outputOptions === "boolean" || typeof outputOptions === "string") {
|
||||
outputOptions = statsPresetToOptions(outputOptions);
|
||||
} else if (!outputOptions) {
|
||||
outputOptions = {};
|
||||
}
|
||||
|
||||
ifArg("display", function(preset) {
|
||||
outputOptions = statsPresetToOptions(preset);
|
||||
});
|
||||
|
||||
outputOptions = Object.create(outputOptions);
|
||||
if (Array.isArray(options) && !outputOptions.children) {
|
||||
outputOptions.children = options.map(o => o.stats);
|
||||
}
|
||||
if (typeof outputOptions.context === "undefined") outputOptions.context = firstOptions.context;
|
||||
|
||||
ifArg("env", function(value) {
|
||||
if (outputOptions.env) {
|
||||
outputOptions._env = value;
|
||||
}
|
||||
});
|
||||
|
||||
ifArg("json", function(bool) {
|
||||
if (bool) {
|
||||
outputOptions.json = bool;
|
||||
outputOptions.modules = bool;
|
||||
}
|
||||
});
|
||||
|
||||
if (typeof outputOptions.colors === "undefined") outputOptions.colors = require("supports-color").stdout;
|
||||
|
||||
ifArg("sort-modules-by", function(value) {
|
||||
outputOptions.modulesSort = value;
|
||||
});
|
||||
|
||||
ifArg("sort-chunks-by", function(value) {
|
||||
outputOptions.chunksSort = value;
|
||||
});
|
||||
|
||||
ifArg("sort-assets-by", function(value) {
|
||||
outputOptions.assetsSort = value;
|
||||
});
|
||||
|
||||
ifArg("display-exclude", function(value) {
|
||||
outputOptions.exclude = value;
|
||||
});
|
||||
|
||||
if (!outputOptions.json) {
|
||||
if (typeof outputOptions.cached === "undefined") outputOptions.cached = false;
|
||||
if (typeof outputOptions.cachedAssets === "undefined") outputOptions.cachedAssets = false;
|
||||
|
||||
ifArg("display-chunks", function(bool) {
|
||||
if (bool) {
|
||||
outputOptions.modules = false;
|
||||
outputOptions.chunks = true;
|
||||
outputOptions.chunkModules = true;
|
||||
}
|
||||
});
|
||||
|
||||
ifArg("display-entrypoints", function(bool) {
|
||||
outputOptions.entrypoints = bool;
|
||||
});
|
||||
|
||||
ifArg("display-reasons", function(bool) {
|
||||
if (bool) outputOptions.reasons = true;
|
||||
});
|
||||
|
||||
ifArg("display-depth", function(bool) {
|
||||
if (bool) outputOptions.depth = true;
|
||||
});
|
||||
|
||||
ifArg("display-used-exports", function(bool) {
|
||||
if (bool) outputOptions.usedExports = true;
|
||||
});
|
||||
|
||||
ifArg("display-provided-exports", function(bool) {
|
||||
if (bool) outputOptions.providedExports = true;
|
||||
});
|
||||
|
||||
ifArg("display-optimization-bailout", function(bool) {
|
||||
if (bool) outputOptions.optimizationBailout = bool;
|
||||
});
|
||||
|
||||
ifArg("display-error-details", function(bool) {
|
||||
if (bool) outputOptions.errorDetails = true;
|
||||
});
|
||||
|
||||
ifArg("display-origins", function(bool) {
|
||||
if (bool) outputOptions.chunkOrigins = true;
|
||||
});
|
||||
|
||||
ifArg("display-max-modules", function(value) {
|
||||
outputOptions.maxModules = +value;
|
||||
});
|
||||
|
||||
ifArg("display-cached", function(bool) {
|
||||
if (bool) outputOptions.cached = true;
|
||||
});
|
||||
|
||||
ifArg("display-cached-assets", function(bool) {
|
||||
if (bool) outputOptions.cachedAssets = true;
|
||||
});
|
||||
|
||||
if (!outputOptions.exclude) outputOptions.exclude = ["node_modules", "bower_components", "components"];
|
||||
|
||||
if (argv["display-modules"]) {
|
||||
outputOptions.maxModules = Infinity;
|
||||
outputOptions.exclude = undefined;
|
||||
outputOptions.modules = true;
|
||||
}
|
||||
}
|
||||
|
||||
ifArg("hide-modules", function(bool) {
|
||||
if (bool) {
|
||||
outputOptions.modules = false;
|
||||
outputOptions.chunkModules = false;
|
||||
}
|
||||
});
|
||||
|
||||
ifArg("info-verbosity", function(value) {
|
||||
outputOptions.infoVerbosity = value;
|
||||
});
|
||||
|
||||
ifArg("build-delimiter", function(value) {
|
||||
outputOptions.buildDelimiter = value;
|
||||
});
|
||||
|
||||
const webpack = require("webpack");
|
||||
|
||||
let lastHash = null;
|
||||
let compiler;
|
||||
try {
|
||||
compiler = webpack(options);
|
||||
} catch (err) {
|
||||
if (err.name === "WebpackOptionsValidationError") {
|
||||
if (argv.color) console.error(`\u001b[1m\u001b[31m${err.message}\u001b[39m\u001b[22m`);
|
||||
else console.error(err.message);
|
||||
// eslint-disable-next-line no-process-exit
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
throw err;
|
||||
}
|
||||
|
||||
if (argv.progress) {
|
||||
const ProgressPlugin = require("webpack").ProgressPlugin;
|
||||
new ProgressPlugin({
|
||||
profile: argv.profile
|
||||
}).apply(compiler);
|
||||
}
|
||||
if (outputOptions.infoVerbosity === "verbose") {
|
||||
if (argv.w) {
|
||||
compiler.hooks.watchRun.tap("WebpackInfo", compilation => {
|
||||
const compilationName = compilation.name ? compilation.name : "";
|
||||
console.error("\nCompilation " + compilationName + " starting…\n");
|
||||
});
|
||||
} else {
|
||||
compiler.hooks.beforeRun.tap("WebpackInfo", compilation => {
|
||||
const compilationName = compilation.name ? compilation.name : "";
|
||||
console.error("\nCompilation " + compilationName + " starting…\n");
|
||||
});
|
||||
}
|
||||
compiler.hooks.done.tap("WebpackInfo", compilation => {
|
||||
const compilationName = compilation.name ? compilation.name : "";
|
||||
console.error("\nCompilation " + compilationName + " finished\n");
|
||||
});
|
||||
}
|
||||
|
||||
function compilerCallback(err, stats) {
|
||||
if (!options.watch || err) {
|
||||
// Do not keep cache anymore
|
||||
compiler.purgeInputFileSystem();
|
||||
}
|
||||
if (err) {
|
||||
lastHash = null;
|
||||
console.error(err.stack || err);
|
||||
if (err.details) console.error(err.details);
|
||||
process.exitCode = 1;
|
||||
return;
|
||||
}
|
||||
if (outputOptions.json) {
|
||||
stdout.write(JSON.stringify(stats.toJson(outputOptions), null, 2) + "\n");
|
||||
} else if (stats.hash !== lastHash) {
|
||||
lastHash = stats.hash;
|
||||
if (stats.compilation && stats.compilation.errors.length !== 0) {
|
||||
const errors = stats.compilation.errors;
|
||||
if (errors[0].name === "EntryModuleNotFoundError") {
|
||||
console.error("\n\u001b[1m\u001b[31mInsufficient number of arguments or no entry found.");
|
||||
console.error(
|
||||
"\u001b[1m\u001b[31mAlternatively, run 'webpack(-cli) --help' for usage info.\u001b[39m\u001b[22m\n"
|
||||
);
|
||||
}
|
||||
}
|
||||
const statsString = stats.toString(outputOptions);
|
||||
const delimiter = outputOptions.buildDelimiter ? `${outputOptions.buildDelimiter}\n` : "";
|
||||
if (statsString) stdout.write(`${statsString}\n${delimiter}`);
|
||||
}
|
||||
if (!options.watch && stats.hasErrors()) {
|
||||
process.exitCode = 2;
|
||||
}
|
||||
}
|
||||
if (firstOptions.watch || options.watch) {
|
||||
const watchOptions =
|
||||
firstOptions.watchOptions || options.watchOptions || firstOptions.watch || options.watch || {};
|
||||
if (watchOptions.stdin) {
|
||||
process.stdin.on("end", function(_) {
|
||||
process.exit(); // eslint-disable-line
|
||||
});
|
||||
process.stdin.resume();
|
||||
}
|
||||
compiler.watch(watchOptions, compilerCallback);
|
||||
if (outputOptions.infoVerbosity !== "none") console.error("\nwebpack is watching the files…\n");
|
||||
} else {
|
||||
compiler.run((err, stats) => {
|
||||
if (compiler.close) {
|
||||
compiler.close(err2 => {
|
||||
compilerCallback(err || err2, stats);
|
||||
});
|
||||
} else {
|
||||
compilerCallback(err, stats);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
processOptions(options);
|
||||
});
|
||||
})();
|
||||
504
node_modules/webpack-cli/bin/config/config-yargs.js
generated
vendored
Normal file
504
node_modules/webpack-cli/bin/config/config-yargs.js
generated
vendored
Normal file
@ -0,0 +1,504 @@
|
||||
const optionsSchema = require("../config/optionsSchema.json");
|
||||
|
||||
const { GROUPS } = require("../utils/constants");
|
||||
|
||||
const {
|
||||
CONFIG_GROUP,
|
||||
BASIC_GROUP,
|
||||
MODULE_GROUP,
|
||||
OUTPUT_GROUP,
|
||||
ADVANCED_GROUP,
|
||||
RESOLVE_GROUP,
|
||||
OPTIMIZE_GROUP,
|
||||
DISPLAY_GROUP
|
||||
} = GROUPS;
|
||||
|
||||
const nestedProperties = ["anyOf", "oneOf", "allOf"];
|
||||
|
||||
const resolveSchema = schema => {
|
||||
let current = schema;
|
||||
if (schema && typeof schema === "object" && "$ref" in schema) {
|
||||
const path = schema.$ref.split("/");
|
||||
for (const element of path) {
|
||||
if (element === "#") {
|
||||
current = optionsSchema;
|
||||
} else {
|
||||
current = current[element];
|
||||
}
|
||||
}
|
||||
}
|
||||
return current;
|
||||
};
|
||||
|
||||
const findPropertyInSchema = (schema, property, subProperty) => {
|
||||
if (!schema) return null;
|
||||
if (subProperty) {
|
||||
if (schema[property] && typeof schema[property] === "object" && subProperty in schema[property]) {
|
||||
return resolveSchema(schema[property][subProperty]);
|
||||
}
|
||||
} else {
|
||||
if (property in schema) return resolveSchema(schema[property]);
|
||||
}
|
||||
for (const name of nestedProperties) {
|
||||
if (schema[name]) {
|
||||
for (const item of schema[name]) {
|
||||
const resolvedItem = resolveSchema(item);
|
||||
const result = findPropertyInSchema(resolvedItem, property, subProperty);
|
||||
if (result) return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
};
|
||||
|
||||
const getSchemaInfo = (path, property, subProperty) => {
|
||||
const pathSegments = path.split(".");
|
||||
let current = optionsSchema;
|
||||
for (const segment of pathSegments) {
|
||||
if (segment === "*") {
|
||||
current = findPropertyInSchema(current, "additionalProperties") || findPropertyInSchema(current, "items");
|
||||
} else {
|
||||
current = findPropertyInSchema(current, "properties", segment);
|
||||
}
|
||||
if (!current) return undefined;
|
||||
}
|
||||
return findPropertyInSchema(current, property, subProperty);
|
||||
};
|
||||
|
||||
module.exports = function(yargs) {
|
||||
yargs
|
||||
.help("help")
|
||||
.alias("help", "h")
|
||||
.version()
|
||||
.alias("version", "v")
|
||||
.options({
|
||||
config: {
|
||||
type: "string",
|
||||
describe: "Path to the config file",
|
||||
group: CONFIG_GROUP,
|
||||
defaultDescription: "webpack.config.js or webpackfile.js",
|
||||
requiresArg: true
|
||||
},
|
||||
"config-register": {
|
||||
type: "array",
|
||||
alias: "r",
|
||||
describe: "Preload one or more modules before loading the webpack configuration",
|
||||
group: CONFIG_GROUP,
|
||||
defaultDescription: "module id or path",
|
||||
requiresArg: true
|
||||
},
|
||||
"config-name": {
|
||||
type: "string",
|
||||
describe: "Name of the config to use",
|
||||
group: CONFIG_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
env: {
|
||||
describe: "Environment passed to the config, when it is a function",
|
||||
group: CONFIG_GROUP
|
||||
},
|
||||
mode: {
|
||||
type: getSchemaInfo("mode", "type"),
|
||||
choices: getSchemaInfo("mode", "enum"),
|
||||
describe: getSchemaInfo("mode", "description"),
|
||||
group: CONFIG_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
context: {
|
||||
type: getSchemaInfo("context", "type"),
|
||||
describe: getSchemaInfo("context", "description"),
|
||||
group: BASIC_GROUP,
|
||||
defaultDescription: "The current directory",
|
||||
requiresArg: true
|
||||
},
|
||||
entry: {
|
||||
type: "string",
|
||||
describe: getSchemaInfo("entry", "description"),
|
||||
group: BASIC_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
"no-cache": {
|
||||
type: "boolean",
|
||||
describe: "Disables cached builds",
|
||||
group: BASIC_GROUP
|
||||
},
|
||||
"module-bind": {
|
||||
type: "string",
|
||||
describe: "Bind an extension to a loader",
|
||||
group: MODULE_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
"module-bind-post": {
|
||||
type: "string",
|
||||
describe: "Bind an extension to a post loader",
|
||||
group: MODULE_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
"module-bind-pre": {
|
||||
type: "string",
|
||||
describe: "Bind an extension to a pre loader",
|
||||
group: MODULE_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
output: {
|
||||
alias: "o",
|
||||
describe: "The output path and file for compilation assets",
|
||||
group: OUTPUT_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
"output-path": {
|
||||
type: "string",
|
||||
describe: getSchemaInfo("output.path", "description"),
|
||||
group: OUTPUT_GROUP,
|
||||
defaultDescription: "The current directory",
|
||||
requiresArg: true
|
||||
},
|
||||
"output-filename": {
|
||||
type: "string",
|
||||
describe: getSchemaInfo("output.filename", "description"),
|
||||
group: OUTPUT_GROUP,
|
||||
defaultDescription: "[name].js",
|
||||
requiresArg: true
|
||||
},
|
||||
"output-chunk-filename": {
|
||||
type: "string",
|
||||
describe: getSchemaInfo("output.chunkFilename", "description"),
|
||||
group: OUTPUT_GROUP,
|
||||
defaultDescription: "filename with [id] instead of [name] or [id] prefixed",
|
||||
requiresArg: true
|
||||
},
|
||||
"output-source-map-filename": {
|
||||
type: "string",
|
||||
describe: getSchemaInfo("output.sourceMapFilename", "description"),
|
||||
group: OUTPUT_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
"output-public-path": {
|
||||
type: "string",
|
||||
describe: getSchemaInfo("output.publicPath", "description"),
|
||||
group: OUTPUT_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
"output-jsonp-function": {
|
||||
type: "string",
|
||||
describe: getSchemaInfo("output.jsonpFunction", "description"),
|
||||
group: OUTPUT_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
"output-pathinfo": {
|
||||
type: "boolean",
|
||||
describe: getSchemaInfo("output.pathinfo", "description"),
|
||||
group: OUTPUT_GROUP
|
||||
},
|
||||
"output-library": {
|
||||
type: "array",
|
||||
describe: "Expose the exports of the entry point as library",
|
||||
group: OUTPUT_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
"output-library-target": {
|
||||
type: "string",
|
||||
describe: getSchemaInfo("output.libraryTarget", "description"),
|
||||
choices: getSchemaInfo("output.libraryTarget", "enum"),
|
||||
group: OUTPUT_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
"records-input-path": {
|
||||
type: "string",
|
||||
describe: getSchemaInfo("recordsInputPath", "description"),
|
||||
group: ADVANCED_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
"records-output-path": {
|
||||
type: "string",
|
||||
describe: getSchemaInfo("recordsOutputPath", "description"),
|
||||
group: ADVANCED_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
"records-path": {
|
||||
type: "string",
|
||||
describe: getSchemaInfo("recordsPath", "description"),
|
||||
group: ADVANCED_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
define: {
|
||||
type: "string",
|
||||
describe: "Define any free var in the bundle",
|
||||
group: ADVANCED_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
target: {
|
||||
type: "string",
|
||||
describe: getSchemaInfo("target", "description"),
|
||||
group: ADVANCED_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
cache: {
|
||||
type: "boolean",
|
||||
describe: getSchemaInfo("cache", "description"),
|
||||
default: null,
|
||||
group: ADVANCED_GROUP,
|
||||
defaultDescription: "It's enabled by default when watching"
|
||||
},
|
||||
watch: {
|
||||
type: "boolean",
|
||||
alias: "w",
|
||||
describe: getSchemaInfo("watch", "description"),
|
||||
group: BASIC_GROUP
|
||||
},
|
||||
"watch-stdin": {
|
||||
type: "boolean",
|
||||
alias: "stdin",
|
||||
describe: getSchemaInfo("watchOptions.stdin", "description"),
|
||||
group: ADVANCED_GROUP
|
||||
},
|
||||
"watch-aggregate-timeout": {
|
||||
describe: getSchemaInfo("watchOptions.aggregateTimeout", "description"),
|
||||
type: getSchemaInfo("watchOptions.aggregateTimeout", "type"),
|
||||
group: ADVANCED_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
"watch-poll": {
|
||||
type: "string",
|
||||
describe: getSchemaInfo("watchOptions.poll", "description"),
|
||||
group: ADVANCED_GROUP
|
||||
},
|
||||
hot: {
|
||||
type: "boolean",
|
||||
describe: "Enables Hot Module Replacement",
|
||||
group: ADVANCED_GROUP
|
||||
},
|
||||
debug: {
|
||||
type: "boolean",
|
||||
describe: "Switch loaders to debug mode",
|
||||
group: BASIC_GROUP
|
||||
},
|
||||
devtool: {
|
||||
type: "string",
|
||||
describe: getSchemaInfo("devtool", "description"),
|
||||
group: BASIC_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
"resolve-alias": {
|
||||
type: "string",
|
||||
describe: getSchemaInfo("resolve.alias", "description"),
|
||||
group: RESOLVE_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
"resolve-extensions": {
|
||||
type: "array",
|
||||
describe: getSchemaInfo("resolve.alias", "description"),
|
||||
group: RESOLVE_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
"resolve-loader-alias": {
|
||||
type: "string",
|
||||
describe: "Setup a loader alias for resolving",
|
||||
group: RESOLVE_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
"optimize-max-chunks": {
|
||||
describe: "Try to keep the chunk count below a limit",
|
||||
group: OPTIMIZE_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
"optimize-min-chunk-size": {
|
||||
describe: getSchemaInfo("optimization.splitChunks.minSize", "description"),
|
||||
group: OPTIMIZE_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
"optimize-minimize": {
|
||||
type: "boolean",
|
||||
describe: getSchemaInfo("optimization.minimize", "description"),
|
||||
group: OPTIMIZE_GROUP
|
||||
},
|
||||
prefetch: {
|
||||
type: "string",
|
||||
describe: "Prefetch this request (Example: --prefetch ./file.js)",
|
||||
group: ADVANCED_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
provide: {
|
||||
type: "string",
|
||||
describe: "Provide these modules as free vars in all modules (Example: --provide jQuery=jquery)",
|
||||
group: ADVANCED_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
"labeled-modules": {
|
||||
type: "boolean",
|
||||
describe: "Enables labeled modules",
|
||||
group: ADVANCED_GROUP
|
||||
},
|
||||
plugin: {
|
||||
type: "string",
|
||||
describe: "Load this plugin",
|
||||
group: ADVANCED_GROUP,
|
||||
requiresArg: true
|
||||
},
|
||||
bail: {
|
||||
type: getSchemaInfo("bail", "type"),
|
||||
describe: getSchemaInfo("bail", "description"),
|
||||
group: ADVANCED_GROUP,
|
||||
default: null
|
||||
},
|
||||
profile: {
|
||||
type: "boolean",
|
||||
describe: getSchemaInfo("profile", "description"),
|
||||
group: ADVANCED_GROUP,
|
||||
default: null
|
||||
},
|
||||
d: {
|
||||
type: "boolean",
|
||||
describe: "shortcut for --debug --devtool eval-cheap-module-source-map --output-pathinfo",
|
||||
group: BASIC_GROUP
|
||||
},
|
||||
p: {
|
||||
type: "boolean",
|
||||
// eslint-disable-next-line quotes
|
||||
describe: 'shortcut for --optimize-minimize --define process.env.NODE_ENV="production"',
|
||||
group: BASIC_GROUP
|
||||
},
|
||||
silent: {
|
||||
type: "boolean",
|
||||
describe: "Prevent output from being displayed in stdout"
|
||||
},
|
||||
json: {
|
||||
type: "boolean",
|
||||
alias: "j",
|
||||
describe: "Prints the result as JSON."
|
||||
},
|
||||
progress: {
|
||||
type: "boolean",
|
||||
describe: "Print compilation progress in percentage",
|
||||
group: BASIC_GROUP
|
||||
},
|
||||
color: {
|
||||
type: "boolean",
|
||||
alias: "colors",
|
||||
default: function supportsColor() {
|
||||
return require("supports-color").stdout;
|
||||
},
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Force colors on the console"
|
||||
},
|
||||
"no-color": {
|
||||
type: "boolean",
|
||||
alias: "no-colors",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Force no colors on the console"
|
||||
},
|
||||
"sort-modules-by": {
|
||||
type: "string",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Sorts the modules list by property in module"
|
||||
},
|
||||
"sort-chunks-by": {
|
||||
type: "string",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Sorts the chunks list by property in chunk"
|
||||
},
|
||||
"sort-assets-by": {
|
||||
type: "string",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Sorts the assets list by property in asset"
|
||||
},
|
||||
"hide-modules": {
|
||||
type: "boolean",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Hides info about modules"
|
||||
},
|
||||
"display-exclude": {
|
||||
type: "string",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Exclude modules in the output"
|
||||
},
|
||||
"display-modules": {
|
||||
type: "boolean",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Display even excluded modules in the output"
|
||||
},
|
||||
"display-max-modules": {
|
||||
type: "number",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Sets the maximum number of visible modules in output"
|
||||
},
|
||||
"display-chunks": {
|
||||
type: "boolean",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Display chunks in the output"
|
||||
},
|
||||
"display-entrypoints": {
|
||||
type: "boolean",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Display entry points in the output"
|
||||
},
|
||||
"display-origins": {
|
||||
type: "boolean",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Display origins of chunks in the output"
|
||||
},
|
||||
"display-cached": {
|
||||
type: "boolean",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Display also cached modules in the output"
|
||||
},
|
||||
"display-cached-assets": {
|
||||
type: "boolean",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Display also cached assets in the output"
|
||||
},
|
||||
"display-reasons": {
|
||||
type: "boolean",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Display reasons about module inclusion in the output"
|
||||
},
|
||||
"display-depth": {
|
||||
type: "boolean",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Display distance from entry point for each module"
|
||||
},
|
||||
"display-used-exports": {
|
||||
type: "boolean",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Display information about used exports in modules (Tree Shaking)"
|
||||
},
|
||||
"display-provided-exports": {
|
||||
type: "boolean",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Display information about exports provided from modules"
|
||||
},
|
||||
"display-optimization-bailout": {
|
||||
type: "boolean",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Display information about why optimization bailed out for modules"
|
||||
},
|
||||
"display-error-details": {
|
||||
type: "boolean",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Display details about errors"
|
||||
},
|
||||
display: {
|
||||
type: "string",
|
||||
choices: ["", "verbose", "detailed", "normal", "minimal", "errors-only", "none"],
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Select display preset"
|
||||
},
|
||||
verbose: {
|
||||
type: "boolean",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Show more details"
|
||||
},
|
||||
"info-verbosity": {
|
||||
type: "string",
|
||||
default: "info",
|
||||
choices: ["none", "info", "verbose"],
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Controls the output of lifecycle messaging e.g. Started watching files..."
|
||||
},
|
||||
"build-delimiter": {
|
||||
type: "string",
|
||||
group: DISPLAY_GROUP,
|
||||
describe: "Display custom text after build output"
|
||||
}
|
||||
});
|
||||
};
|
||||
1989
node_modules/webpack-cli/bin/config/optionsSchema.json
generated
vendored
Normal file
1989
node_modules/webpack-cli/bin/config/optionsSchema.json
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
20
node_modules/webpack-cli/bin/config/webpackConfigurationSchema.json
generated
vendored
Normal file
20
node_modules/webpack-cli/bin/config/webpackConfigurationSchema.json
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"description": "A webpack configuration object."
|
||||
},
|
||||
{
|
||||
"type": "array",
|
||||
"description": "An array of webpack configuration objects.",
|
||||
"items": {
|
||||
"description": "A webpack configuration object.",
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
{
|
||||
"instanceof": "Promise",
|
||||
"description": "A promise that resolves with a configuration object, or an array of configuration objects."
|
||||
}
|
||||
]
|
||||
}
|
||||
28
node_modules/webpack-cli/bin/utils/constants.js
generated
vendored
Normal file
28
node_modules/webpack-cli/bin/utils/constants.js
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
const NON_COMPILATION_ARGS = ["init", "migrate", "serve", "generate-loader", "generate-plugin", "info"];
|
||||
|
||||
const CONFIG_GROUP = "Config options:";
|
||||
const BASIC_GROUP = "Basic options:";
|
||||
const MODULE_GROUP = "Module options:";
|
||||
const OUTPUT_GROUP = "Output options:";
|
||||
const ADVANCED_GROUP = "Advanced options:";
|
||||
const RESOLVE_GROUP = "Resolving options:";
|
||||
const OPTIMIZE_GROUP = "Optimizing options:";
|
||||
const DISPLAY_GROUP = "Stats options:";
|
||||
const GROUPS = {
|
||||
CONFIG_GROUP,
|
||||
BASIC_GROUP,
|
||||
MODULE_GROUP,
|
||||
OUTPUT_GROUP,
|
||||
ADVANCED_GROUP,
|
||||
RESOLVE_GROUP,
|
||||
OPTIMIZE_GROUP,
|
||||
DISPLAY_GROUP
|
||||
};
|
||||
|
||||
const WEBPACK_OPTIONS_FLAG = "WEBPACK_OPTIONS";
|
||||
|
||||
module.exports = {
|
||||
NON_COMPILATION_ARGS,
|
||||
GROUPS,
|
||||
WEBPACK_OPTIONS_FLAG
|
||||
};
|
||||
562
node_modules/webpack-cli/bin/utils/convert-argv.js
generated
vendored
Normal file
562
node_modules/webpack-cli/bin/utils/convert-argv.js
generated
vendored
Normal file
@ -0,0 +1,562 @@
|
||||
const path = require("path");
|
||||
const fs = require("fs");
|
||||
fs.existsSync = fs.existsSync || path.existsSync;
|
||||
const interpret = require("interpret");
|
||||
const prepareOptions = require("./prepareOptions");
|
||||
const findup = require("findup-sync");
|
||||
const validateOptions = require("./validate-options");
|
||||
|
||||
module.exports = function(...args) {
|
||||
const argv = args[1] || args[0];
|
||||
const options = [];
|
||||
// Shortcuts
|
||||
if (argv.d) {
|
||||
argv.debug = true;
|
||||
argv["output-pathinfo"] = true;
|
||||
if (!argv.devtool) {
|
||||
argv.devtool = "eval-cheap-module-source-map";
|
||||
}
|
||||
if (!argv.mode) {
|
||||
argv.mode = "development";
|
||||
}
|
||||
}
|
||||
if (argv.p) {
|
||||
argv["optimize-minimize"] = true;
|
||||
// eslint-disable-next-line quotes
|
||||
argv["define"] = [].concat(argv["define"] || []).concat('process.env.NODE_ENV="production"');
|
||||
if (!argv.mode) {
|
||||
argv.mode = "production";
|
||||
}
|
||||
}
|
||||
|
||||
if (argv.output) {
|
||||
let output = argv.output;
|
||||
if (!path.isAbsolute(argv.o)) {
|
||||
output = path.resolve(process.cwd(), output);
|
||||
}
|
||||
argv["output-filename"] = path.basename(output);
|
||||
argv["output-path"] = path.dirname(output);
|
||||
}
|
||||
|
||||
let configFileLoaded = false;
|
||||
let configFiles = [];
|
||||
const extensions = Object.keys(interpret.extensions).sort(function(a, b) {
|
||||
return a === ".js" ? -1 : b === ".js" ? 1 : a.length - b.length;
|
||||
});
|
||||
|
||||
let i;
|
||||
if (argv.config) {
|
||||
const getConfigExtension = function getConfigExtension(configPath) {
|
||||
for (i = extensions.length - 1; i >= 0; i--) {
|
||||
const tmpExt = extensions[i];
|
||||
if (configPath.indexOf(tmpExt, configPath.length - tmpExt.length) > -1) {
|
||||
return tmpExt;
|
||||
}
|
||||
}
|
||||
return path.extname(configPath);
|
||||
};
|
||||
|
||||
const mapConfigArg = function mapConfigArg(configArg) {
|
||||
const resolvedPath = path.resolve(configArg);
|
||||
const extension = getConfigExtension(resolvedPath);
|
||||
return {
|
||||
path: resolvedPath,
|
||||
ext: extension
|
||||
};
|
||||
};
|
||||
|
||||
const configArgList = Array.isArray(argv.config) ? argv.config : [argv.config];
|
||||
configFiles = configArgList.map(mapConfigArg);
|
||||
} else {
|
||||
const defaultConfigFileNames = ["webpack.config", "webpackfile"].join("|");
|
||||
const webpackConfigFileRegExp = `(${defaultConfigFileNames})(${extensions.join("|")})`;
|
||||
const pathToWebpackConfig = findup(webpackConfigFileRegExp);
|
||||
|
||||
if (pathToWebpackConfig) {
|
||||
const resolvedPath = path.resolve(pathToWebpackConfig);
|
||||
const actualConfigFileName = path.basename(resolvedPath);
|
||||
const ext = actualConfigFileName.replace(new RegExp(defaultConfigFileNames), "");
|
||||
configFiles.push({
|
||||
path: resolvedPath,
|
||||
ext
|
||||
});
|
||||
}
|
||||
}
|
||||
if (configFiles.length > 0) {
|
||||
const registerCompiler = function registerCompiler(moduleDescriptor) {
|
||||
if (moduleDescriptor) {
|
||||
if (typeof moduleDescriptor === "string") {
|
||||
require(moduleDescriptor);
|
||||
} else if (!Array.isArray(moduleDescriptor)) {
|
||||
moduleDescriptor.register(require(moduleDescriptor.module));
|
||||
} else {
|
||||
for (let i = 0; i < moduleDescriptor.length; i++) {
|
||||
try {
|
||||
registerCompiler(moduleDescriptor[i]);
|
||||
break;
|
||||
} catch (e) {
|
||||
// do nothing
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const requireConfig = function requireConfig(configPath) {
|
||||
let options = (function WEBPACK_OPTIONS() {
|
||||
if (argv.configRegister && argv.configRegister.length) {
|
||||
module.paths.unshift(path.resolve(process.cwd(), "node_modules"), process.cwd());
|
||||
argv.configRegister.forEach(dep => {
|
||||
require(dep);
|
||||
});
|
||||
return require(path.resolve(process.cwd(), configPath));
|
||||
} else {
|
||||
return require(path.resolve(process.cwd(), configPath));
|
||||
}
|
||||
})();
|
||||
options = prepareOptions(options, argv);
|
||||
return options;
|
||||
};
|
||||
|
||||
configFiles.forEach(function(file) {
|
||||
registerCompiler(interpret.extensions[file.ext]);
|
||||
options.push(requireConfig(file.path));
|
||||
});
|
||||
configFileLoaded = true;
|
||||
}
|
||||
|
||||
if (!configFileLoaded) {
|
||||
return processConfiguredOptions();
|
||||
} else if (options.length === 1) {
|
||||
return processConfiguredOptions(options[0]);
|
||||
} else {
|
||||
return processConfiguredOptions(options);
|
||||
}
|
||||
|
||||
function processConfiguredOptions(options) {
|
||||
if (options) {
|
||||
validateOptions(options);
|
||||
} else {
|
||||
options = {};
|
||||
}
|
||||
|
||||
// process Promise
|
||||
if (typeof options.then === "function") {
|
||||
return options.then(processConfiguredOptions);
|
||||
}
|
||||
|
||||
// process ES6 default
|
||||
if (typeof options === "object" && typeof options.default === "object") {
|
||||
return processConfiguredOptions(options.default);
|
||||
}
|
||||
|
||||
// filter multi-config by name
|
||||
if (Array.isArray(options) && argv["config-name"]) {
|
||||
const namedOptions = options.filter(function(opt) {
|
||||
return opt.name === argv["config-name"];
|
||||
});
|
||||
if (namedOptions.length === 0) {
|
||||
console.error("Configuration with name '" + argv["config-name"] + "' was not found.");
|
||||
process.exit(-1); // eslint-disable-line
|
||||
} else if (namedOptions.length === 1) {
|
||||
return processConfiguredOptions(namedOptions[0]);
|
||||
}
|
||||
options = namedOptions;
|
||||
}
|
||||
|
||||
if (Array.isArray(options)) {
|
||||
options.forEach(processOptions);
|
||||
} else {
|
||||
processOptions(options);
|
||||
}
|
||||
|
||||
if (argv.context) {
|
||||
options.context = path.resolve(argv.context);
|
||||
}
|
||||
if (!options.context) {
|
||||
options.context = process.cwd();
|
||||
}
|
||||
|
||||
if (argv.watch) {
|
||||
options.watch = true;
|
||||
}
|
||||
|
||||
if (argv["watch-aggregate-timeout"]) {
|
||||
options.watchOptions = options.watchOptions || {};
|
||||
options.watchOptions.aggregateTimeout = +argv["watch-aggregate-timeout"];
|
||||
}
|
||||
|
||||
if (typeof argv["watch-poll"] !== "undefined") {
|
||||
options.watchOptions = options.watchOptions || {};
|
||||
if (argv["watch-poll"] === "true" || argv["watch-poll"] === "") options.watchOptions.poll = true;
|
||||
else if (!isNaN(argv["watch-poll"])) options.watchOptions.poll = +argv["watch-poll"];
|
||||
}
|
||||
|
||||
if (argv["watch-stdin"]) {
|
||||
options.watchOptions = options.watchOptions || {};
|
||||
options.watchOptions.stdin = true;
|
||||
options.watch = true;
|
||||
}
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
function processOptions(options) {
|
||||
function ifArg(name, fn, init, finalize) {
|
||||
const isArray = Array.isArray(argv[name]);
|
||||
const isSet = typeof argv[name] !== "undefined" && argv[name] !== null;
|
||||
if (!isArray && !isSet) return;
|
||||
|
||||
init && init();
|
||||
if (isArray) argv[name].forEach(fn);
|
||||
else if (isSet) fn(argv[name], -1);
|
||||
finalize && finalize();
|
||||
}
|
||||
|
||||
function ifArgPair(name, fn, init, finalize) {
|
||||
ifArg(
|
||||
name,
|
||||
function(content, idx) {
|
||||
const i = content.indexOf("=");
|
||||
if (i < 0) {
|
||||
return fn(null, content, idx);
|
||||
} else {
|
||||
return fn(content.substr(0, i), content.substr(i + 1), idx);
|
||||
}
|
||||
},
|
||||
init,
|
||||
finalize
|
||||
);
|
||||
}
|
||||
|
||||
function ifBooleanArg(name, fn) {
|
||||
ifArg(name, function(bool) {
|
||||
if (bool) {
|
||||
fn();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function mapArgToBoolean(name, optionName) {
|
||||
ifArg(name, function(bool) {
|
||||
if (bool === true) options[optionName || name] = true;
|
||||
else if (bool === false) options[optionName || name] = false;
|
||||
});
|
||||
}
|
||||
|
||||
function loadPlugin(name) {
|
||||
const loadUtils = require("loader-utils");
|
||||
let args;
|
||||
try {
|
||||
const p = name && name.indexOf("?");
|
||||
if (p > -1) {
|
||||
args = loadUtils.parseQuery(name.substring(p));
|
||||
name = name.substring(0, p);
|
||||
}
|
||||
} catch (e) {
|
||||
console.log("Invalid plugin arguments " + name + " (" + e + ").");
|
||||
process.exit(-1); // eslint-disable-line
|
||||
}
|
||||
|
||||
let path;
|
||||
try {
|
||||
const resolve = require("enhanced-resolve");
|
||||
path = resolve.sync(process.cwd(), name);
|
||||
} catch (e) {
|
||||
console.log("Cannot resolve plugin " + name + ".");
|
||||
process.exit(-1); // eslint-disable-line
|
||||
}
|
||||
let Plugin;
|
||||
try {
|
||||
Plugin = require(path);
|
||||
} catch (e) {
|
||||
console.log("Cannot load plugin " + name + ". (" + path + ")");
|
||||
throw e;
|
||||
}
|
||||
try {
|
||||
return new Plugin(args);
|
||||
} catch (e) {
|
||||
console.log("Cannot instantiate plugin " + name + ". (" + path + ")");
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
function ensureObject(parent, name, force) {
|
||||
if (force || typeof parent[name] !== "object" || parent[name] === null) {
|
||||
parent[name] = {};
|
||||
}
|
||||
}
|
||||
|
||||
function ensureArray(parent, name) {
|
||||
if (!Array.isArray(parent[name])) {
|
||||
parent[name] = [];
|
||||
}
|
||||
}
|
||||
|
||||
function addPlugin(options, plugin) {
|
||||
ensureArray(options, "plugins");
|
||||
options.plugins.unshift(plugin);
|
||||
}
|
||||
|
||||
ifArg("mode", function(value) {
|
||||
options.mode = value;
|
||||
});
|
||||
|
||||
ifArgPair(
|
||||
"entry",
|
||||
function(name, entry) {
|
||||
if (typeof options.entry[name] !== "undefined" && options.entry[name] !== null) {
|
||||
options.entry[name] = [].concat(options.entry[name]).concat(entry);
|
||||
} else {
|
||||
options.entry[name] = entry;
|
||||
}
|
||||
},
|
||||
function() {
|
||||
ensureObject(options, "entry", true);
|
||||
}
|
||||
);
|
||||
|
||||
function bindRules(arg) {
|
||||
ifArgPair(
|
||||
arg,
|
||||
function(name, binding) {
|
||||
if (name === null) {
|
||||
name = binding;
|
||||
binding += "-loader";
|
||||
}
|
||||
const rule = {
|
||||
test: new RegExp("\\." + name.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&") + "$"), // eslint-disable-line no-useless-escape
|
||||
loader: binding
|
||||
};
|
||||
if (arg === "module-bind-pre") {
|
||||
rule.enforce = "pre";
|
||||
} else if (arg === "module-bind-post") {
|
||||
rule.enforce = "post";
|
||||
}
|
||||
options.module.rules.push(rule);
|
||||
},
|
||||
function() {
|
||||
ensureObject(options, "module");
|
||||
ensureArray(options.module, "rules");
|
||||
}
|
||||
);
|
||||
}
|
||||
bindRules("module-bind");
|
||||
bindRules("module-bind-pre");
|
||||
bindRules("module-bind-post");
|
||||
|
||||
let defineObject;
|
||||
ifArgPair(
|
||||
"define",
|
||||
function(name, value) {
|
||||
if (name === null) {
|
||||
name = value;
|
||||
value = true;
|
||||
}
|
||||
defineObject[name] = value;
|
||||
},
|
||||
function() {
|
||||
defineObject = {};
|
||||
},
|
||||
function() {
|
||||
const DefinePlugin = require("webpack").DefinePlugin;
|
||||
addPlugin(options, new DefinePlugin(defineObject));
|
||||
}
|
||||
);
|
||||
|
||||
ifArg("output-path", function(value) {
|
||||
ensureObject(options, "output");
|
||||
options.output.path = path.resolve(value);
|
||||
});
|
||||
|
||||
ifArg("output-filename", function(value) {
|
||||
ensureObject(options, "output");
|
||||
|
||||
options.output.filename = value;
|
||||
});
|
||||
|
||||
ifArg("output-chunk-filename", function(value) {
|
||||
ensureObject(options, "output");
|
||||
options.output.chunkFilename = value;
|
||||
});
|
||||
|
||||
ifArg("output-source-map-filename", function(value) {
|
||||
ensureObject(options, "output");
|
||||
options.output.sourceMapFilename = value;
|
||||
});
|
||||
|
||||
ifArg("output-public-path", function(value) {
|
||||
ensureObject(options, "output");
|
||||
options.output.publicPath = value;
|
||||
});
|
||||
|
||||
ifArg("output-jsonp-function", function(value) {
|
||||
ensureObject(options, "output");
|
||||
options.output.jsonpFunction = value;
|
||||
});
|
||||
|
||||
ifBooleanArg("output-pathinfo", function() {
|
||||
ensureObject(options, "output");
|
||||
options.output.pathinfo = true;
|
||||
});
|
||||
|
||||
ifArg("output-library", function(value) {
|
||||
ensureObject(options, "output");
|
||||
ensureArray(options.output, "library");
|
||||
options.output.library.push(value);
|
||||
});
|
||||
|
||||
ifArg("output-library-target", function(value) {
|
||||
ensureObject(options, "output");
|
||||
options.output.libraryTarget = value;
|
||||
});
|
||||
|
||||
ifArg("records-input-path", function(value) {
|
||||
options.recordsInputPath = path.resolve(value);
|
||||
});
|
||||
|
||||
ifArg("records-output-path", function(value) {
|
||||
options.recordsOutputPath = path.resolve(value);
|
||||
});
|
||||
|
||||
ifArg("records-path", function(value) {
|
||||
options.recordsPath = path.resolve(value);
|
||||
});
|
||||
|
||||
ifArg("target", function(value) {
|
||||
options.target = value;
|
||||
});
|
||||
|
||||
mapArgToBoolean("cache");
|
||||
|
||||
ifBooleanArg("hot", function() {
|
||||
const HotModuleReplacementPlugin = require("webpack").HotModuleReplacementPlugin;
|
||||
addPlugin(options, new HotModuleReplacementPlugin());
|
||||
});
|
||||
|
||||
ifBooleanArg("no-cache", function() {
|
||||
options.cache = false;
|
||||
});
|
||||
|
||||
ifBooleanArg("debug", function() {
|
||||
const LoaderOptionsPlugin = require("webpack").LoaderOptionsPlugin;
|
||||
addPlugin(
|
||||
options,
|
||||
new LoaderOptionsPlugin({
|
||||
debug: true
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
ifArg("devtool", function(value) {
|
||||
options.devtool = value;
|
||||
});
|
||||
|
||||
function processResolveAlias(arg, key) {
|
||||
ifArgPair(arg, function(name, value) {
|
||||
if (!name) {
|
||||
throw new Error("--" + arg + " <string>=<string>");
|
||||
}
|
||||
ensureObject(options, key);
|
||||
ensureObject(options[key], "alias");
|
||||
options[key].alias[name] = value;
|
||||
});
|
||||
}
|
||||
processResolveAlias("resolve-alias", "resolve");
|
||||
processResolveAlias("resolve-loader-alias", "resolveLoader");
|
||||
|
||||
ifArg("resolve-extensions", function(value) {
|
||||
ensureObject(options, "resolve");
|
||||
if (Array.isArray(value)) {
|
||||
options.resolve.extensions = value;
|
||||
} else {
|
||||
options.resolve.extensions = value.split(/,\s*/);
|
||||
}
|
||||
});
|
||||
|
||||
ifArg("optimize-max-chunks", function(value) {
|
||||
const LimitChunkCountPlugin = require("webpack").optimize.LimitChunkCountPlugin;
|
||||
addPlugin(
|
||||
options,
|
||||
new LimitChunkCountPlugin({
|
||||
maxChunks: parseInt(value, 10)
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
ifArg("optimize-min-chunk-size", function(value) {
|
||||
const MinChunkSizePlugin = require("webpack").optimize.MinChunkSizePlugin;
|
||||
addPlugin(
|
||||
options,
|
||||
new MinChunkSizePlugin({
|
||||
minChunkSize: parseInt(value, 10)
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
ifBooleanArg("optimize-minimize", function() {
|
||||
const LoaderOptionsPlugin = require("webpack").LoaderOptionsPlugin;
|
||||
addPlugin(
|
||||
options,
|
||||
new LoaderOptionsPlugin({
|
||||
minimize: true
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
ifArg("prefetch", function(request) {
|
||||
const PrefetchPlugin = require("webpack").PrefetchPlugin;
|
||||
addPlugin(options, new PrefetchPlugin(request));
|
||||
});
|
||||
|
||||
ifArg("provide", function(value) {
|
||||
const idx = value.indexOf("=");
|
||||
let name;
|
||||
if (idx >= 0) {
|
||||
name = value.substr(0, idx);
|
||||
value = value.substr(idx + 1);
|
||||
} else {
|
||||
name = value;
|
||||
}
|
||||
const ProvidePlugin = require("webpack").ProvidePlugin;
|
||||
addPlugin(options, new ProvidePlugin(name, value));
|
||||
});
|
||||
|
||||
ifArg("plugin", function(value) {
|
||||
addPlugin(options, loadPlugin(value));
|
||||
});
|
||||
|
||||
mapArgToBoolean("bail");
|
||||
|
||||
mapArgToBoolean("profile");
|
||||
|
||||
if (argv._.length > 0) {
|
||||
ensureObject(options, "entry", true);
|
||||
|
||||
const addTo = function addTo(name, entry) {
|
||||
if (options.entry[name]) {
|
||||
if (!Array.isArray(options.entry[name])) {
|
||||
options.entry[name] = [options.entry[name]];
|
||||
}
|
||||
options.entry[name].push(entry);
|
||||
} else {
|
||||
options.entry[name] = entry;
|
||||
}
|
||||
};
|
||||
argv._.forEach(function(content) {
|
||||
const i = content.indexOf("=");
|
||||
const j = content.indexOf("?");
|
||||
if (i < 0 || (j >= 0 && j < i)) {
|
||||
const resolved = path.resolve(content);
|
||||
if (fs.existsSync(resolved)) {
|
||||
addTo("main", `${resolved}${fs.statSync(resolved).isDirectory() ? path.sep : ""}`);
|
||||
} else {
|
||||
addTo("main", content);
|
||||
}
|
||||
} else {
|
||||
addTo(content.substr(0, i), content.substr(i + 1));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
33
node_modules/webpack-cli/bin/utils/errorHelpers.js
generated
vendored
Normal file
33
node_modules/webpack-cli/bin/utils/errorHelpers.js
generated
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
MIT License http://www.opensource.org/licenses/mit-license.php
|
||||
Author Tobias Koppers @sokra
|
||||
*/
|
||||
"use strict";
|
||||
|
||||
const { WEBPACK_OPTIONS_FLAG } = require("./constants");
|
||||
|
||||
exports.cutOffByFlag = (stack, flag) => {
|
||||
stack = stack.split("\n");
|
||||
for (let i = 0; i < stack.length; i++) if (stack[i].indexOf(flag) >= 0) stack.length = i;
|
||||
return stack.join("\n");
|
||||
};
|
||||
|
||||
exports.cutOffWebpackOptions = stack => exports.cutOffByFlag(stack, WEBPACK_OPTIONS_FLAG);
|
||||
|
||||
exports.cutOffMultilineMessage = (stack, message) => {
|
||||
stack = stack.split("\n");
|
||||
message = message.split("\n");
|
||||
|
||||
return stack
|
||||
.reduce(
|
||||
(acc, line, idx) => (line === message[idx] || line === `Error: ${message[idx]}` ? acc : acc.concat(line)),
|
||||
[]
|
||||
)
|
||||
.join("\n");
|
||||
};
|
||||
|
||||
exports.cleanUpWebpackOptions = (stack, message) => {
|
||||
stack = exports.cutOffWebpackOptions(stack);
|
||||
stack = exports.cutOffMultilineMessage(stack, message);
|
||||
return stack;
|
||||
};
|
||||
24
node_modules/webpack-cli/bin/utils/prepareOptions.js
generated
vendored
Normal file
24
node_modules/webpack-cli/bin/utils/prepareOptions.js
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
"use strict";
|
||||
|
||||
module.exports = function prepareOptions(options, argv) {
|
||||
argv = argv || {};
|
||||
options = handleExport(options);
|
||||
|
||||
return Array.isArray(options)
|
||||
? options.map(_options => handleFunction(_options, argv))
|
||||
: handleFunction(options, argv);
|
||||
};
|
||||
|
||||
function handleExport(options) {
|
||||
const isES6DefaultExported =
|
||||
typeof options === "object" && options !== null && typeof options.default !== "undefined";
|
||||
|
||||
return isES6DefaultExported ? options.default : options;
|
||||
}
|
||||
|
||||
function handleFunction(options, argv) {
|
||||
if (typeof options === "function") {
|
||||
options = options(argv.env, argv);
|
||||
}
|
||||
return options;
|
||||
}
|
||||
142
node_modules/webpack-cli/bin/utils/prompt-command.js
generated
vendored
Normal file
142
node_modules/webpack-cli/bin/utils/prompt-command.js
generated
vendored
Normal file
@ -0,0 +1,142 @@
|
||||
// based on https://github.com/webpack/webpack/blob/master/bin/webpack.js
|
||||
|
||||
/**
|
||||
* @param {string} command process to run
|
||||
* @param {string[]} args commandline arguments
|
||||
* @returns {Promise<void>} promise
|
||||
*/
|
||||
const runCommand = (command, args) => {
|
||||
const cp = require("child_process");
|
||||
return new Promise((resolve, reject) => {
|
||||
const executedCommand = cp.spawn(command, args, {
|
||||
stdio: "inherit",
|
||||
shell: true
|
||||
});
|
||||
|
||||
executedCommand.on("error", error => {
|
||||
reject(error);
|
||||
});
|
||||
|
||||
executedCommand.on("exit", code => {
|
||||
if (code === 0) {
|
||||
resolve();
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
const npmGlobalRoot = () => {
|
||||
const cp = require("child_process");
|
||||
return new Promise((resolve, reject) => {
|
||||
const command = cp.spawn("npm", ["root", "-g"]);
|
||||
command.on("error", error => reject(error));
|
||||
command.stdout.on("data", data => resolve(data.toString()));
|
||||
command.stderr.on("data", data => reject(data));
|
||||
});
|
||||
};
|
||||
|
||||
const runWhenInstalled = (packages, pathForCmd, ...args) => {
|
||||
const currentPackage = require(pathForCmd);
|
||||
const func = currentPackage.default;
|
||||
if (typeof func !== "function") {
|
||||
throw new Error(`@webpack-cli/${packages} failed to export a default function`);
|
||||
}
|
||||
return func(...args);
|
||||
};
|
||||
|
||||
module.exports = function promptForInstallation(packages, ...args) {
|
||||
const nameOfPackage = "@webpack-cli/" + packages;
|
||||
let packageIsInstalled = false;
|
||||
let pathForCmd;
|
||||
try {
|
||||
const path = require("path");
|
||||
const fs = require("fs");
|
||||
pathForCmd = path.resolve(process.cwd(), "node_modules", "@webpack-cli", packages);
|
||||
if (!fs.existsSync(pathForCmd)) {
|
||||
const globalModules = require("global-modules");
|
||||
pathForCmd = globalModules + "/@webpack-cli/" + packages;
|
||||
require.resolve(pathForCmd);
|
||||
} else {
|
||||
require.resolve(pathForCmd);
|
||||
}
|
||||
packageIsInstalled = true;
|
||||
} catch (err) {
|
||||
packageIsInstalled = false;
|
||||
}
|
||||
if (!packageIsInstalled) {
|
||||
const path = require("path");
|
||||
const fs = require("fs");
|
||||
const readLine = require("readline");
|
||||
const isYarn = fs.existsSync(path.resolve(process.cwd(), "yarn.lock"));
|
||||
|
||||
const packageManager = isYarn ? "yarn" : "npm";
|
||||
const options = ["install", "-D", nameOfPackage];
|
||||
|
||||
if (isYarn) {
|
||||
options[0] = "add";
|
||||
}
|
||||
|
||||
if (packages === "init") {
|
||||
if (isYarn) {
|
||||
options.splice(1, 1); // remove '-D'
|
||||
options.splice(0, 0, "global");
|
||||
} else {
|
||||
options[1] = "-g";
|
||||
}
|
||||
}
|
||||
|
||||
const commandToBeRun = `${packageManager} ${options.join(" ")}`;
|
||||
|
||||
const question = `Would you like to install ${packages}? (That will run ${commandToBeRun}) (yes/NO) : `;
|
||||
|
||||
console.error(`The command moved into a separate package: ${nameOfPackage}`);
|
||||
const questionInterface = readLine.createInterface({
|
||||
input: process.stdin,
|
||||
output: process.stdout
|
||||
});
|
||||
questionInterface.question(question, answer => {
|
||||
questionInterface.close();
|
||||
switch (answer.toLowerCase()) {
|
||||
case "y":
|
||||
case "yes":
|
||||
case "1": {
|
||||
runCommand(packageManager, options)
|
||||
.then(_ => {
|
||||
if (packages === "init") {
|
||||
npmGlobalRoot()
|
||||
.then(root => {
|
||||
const pathtoInit = path.resolve(root.trim(), "@webpack-cli", "init");
|
||||
return pathtoInit;
|
||||
})
|
||||
.then(pathForInit => {
|
||||
return require(pathForInit).default(...args);
|
||||
})
|
||||
.catch(error => {
|
||||
console.error(error);
|
||||
process.exitCode = 1;
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
pathForCmd = path.resolve(process.cwd(), "node_modules", "@webpack-cli", packages);
|
||||
return runWhenInstalled(packages, pathForCmd, ...args);
|
||||
})
|
||||
.catch(error => {
|
||||
console.error(error);
|
||||
process.exitCode = 1;
|
||||
});
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
console.error(`${nameOfPackage} needs to be installed in order to run the command.`);
|
||||
process.exitCode = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
return runWhenInstalled(packages, pathForCmd, ...args);
|
||||
}
|
||||
};
|
||||
21
node_modules/webpack-cli/bin/utils/validate-options.js
generated
vendored
Normal file
21
node_modules/webpack-cli/bin/utils/validate-options.js
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
const webpackConfigurationSchema = require("../config/webpackConfigurationSchema.json");
|
||||
const validateSchema = require("webpack").validateSchema;
|
||||
|
||||
module.exports = function validateOptions(options) {
|
||||
let error;
|
||||
try {
|
||||
const errors = validateSchema(webpackConfigurationSchema, options);
|
||||
if (errors && errors.length > 0) {
|
||||
const { WebpackOptionsValidationError } = require("webpack");
|
||||
error = new WebpackOptionsValidationError(errors);
|
||||
}
|
||||
} catch (err) {
|
||||
error = err;
|
||||
}
|
||||
|
||||
if (error) {
|
||||
console.error(error.message);
|
||||
// eslint-disable-next-line no-process-exit
|
||||
process.exit(-1);
|
||||
}
|
||||
};
|
||||
204
node_modules/webpack-cli/package.json
generated
vendored
Normal file
204
node_modules/webpack-cli/package.json
generated
vendored
Normal file
@ -0,0 +1,204 @@
|
||||
{
|
||||
"_from": "webpack-cli",
|
||||
"_id": "webpack-cli@3.3.12",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==",
|
||||
"_location": "/webpack-cli",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "tag",
|
||||
"registry": true,
|
||||
"raw": "webpack-cli",
|
||||
"name": "webpack-cli",
|
||||
"escapedName": "webpack-cli",
|
||||
"rawSpec": "",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "latest"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"#DEV:/",
|
||||
"#USER"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz",
|
||||
"_shasum": "94e9ada081453cd0aa609c99e500012fd3ad2d4a",
|
||||
"_spec": "webpack-cli",
|
||||
"_where": "/Users/alinavigdorova/dev/storage-service-ui",
|
||||
"bin": {
|
||||
"webpack-cli": "bin/cli.js"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/webpack/webpack-cli/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"config": {
|
||||
"commitizen": {
|
||||
"path": "./node_modules/cz-customizable"
|
||||
},
|
||||
"cz-customizable": {
|
||||
"config": "./.cz-config.js"
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"chalk": "^2.4.2",
|
||||
"cross-spawn": "^6.0.5",
|
||||
"enhanced-resolve": "^4.1.1",
|
||||
"findup-sync": "^3.0.0",
|
||||
"global-modules": "^2.0.0",
|
||||
"import-local": "^2.0.0",
|
||||
"interpret": "^1.4.0",
|
||||
"loader-utils": "^1.4.0",
|
||||
"supports-color": "^6.1.0",
|
||||
"v8-compile-cache": "^2.1.1",
|
||||
"yargs": "^13.3.2"
|
||||
},
|
||||
"deprecated": false,
|
||||
"description": "CLI for webpack & friends",
|
||||
"devDependencies": {
|
||||
"@babel/preset-env": "^7.8.3",
|
||||
"@babel/register": "7.8.3",
|
||||
"@commitlint/cli": "8.1.0",
|
||||
"@commitlint/config-lerna-scopes": "8.0.0",
|
||||
"@commitlint/travis-cli": "8.0.0",
|
||||
"@strictsoftware/typedoc-plugin-monorepo": "0.2.1",
|
||||
"@types/jest": "24.9.1",
|
||||
"@types/node": "12.0.8",
|
||||
"@typescript-eslint/eslint-plugin": "1.10.2",
|
||||
"@typescript-eslint/parser": "1.10.2",
|
||||
"babel-preset-env": "^1.7.0",
|
||||
"babel-preset-jest": "24.9.0",
|
||||
"codecov": "3.5.0",
|
||||
"commitizen": "4.0.3",
|
||||
"commitlint": "^8.1.0",
|
||||
"commitlint-config-cz": "0.12.0",
|
||||
"conventional-changelog-cli": "2.0.21",
|
||||
"cz-customizable": "6.2.0",
|
||||
"eslint": "5.16.0",
|
||||
"eslint-config-prettier": "5.0.0",
|
||||
"eslint-plugin-node": "9.1.0",
|
||||
"eslint-plugin-prettier": "3.1.0",
|
||||
"esm": "3.2.25",
|
||||
"execa": "1.0.0",
|
||||
"husky": "2.4.1",
|
||||
"jest": "24.9.0",
|
||||
"jest-cli": "24.9.0",
|
||||
"jest-junit": "6.4.0",
|
||||
"lerna": "3.15.0",
|
||||
"lint-staged": "8.2.1",
|
||||
"nyc": "14.1.1",
|
||||
"prettier": "1.18.2",
|
||||
"prettier-eslint-cli": "5.0.0",
|
||||
"readable-stream": "3.4.0",
|
||||
"rimraf": "2.6.3",
|
||||
"schema-utils": "1.0.0",
|
||||
"ts-jest": "24.0.2",
|
||||
"ts-node": "8.3.0",
|
||||
"typescript": "3.5.2",
|
||||
"webpack": "4.x.x",
|
||||
"webpack-dev-server": "3.7.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.11.5"
|
||||
},
|
||||
"files": [
|
||||
"bin",
|
||||
"scripts"
|
||||
],
|
||||
"homepage": "https://github.com/webpack/webpack-cli#readme",
|
||||
"husky": {
|
||||
"hooks": {
|
||||
"pre-commit": "lint-staged",
|
||||
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
|
||||
}
|
||||
},
|
||||
"jest": {
|
||||
"testPathIgnorePatterns": [
|
||||
"/node_modules/"
|
||||
],
|
||||
"testEnvironment": "node",
|
||||
"collectCoverage": true,
|
||||
"coverageReporters": [
|
||||
"json",
|
||||
"html",
|
||||
"cobertura"
|
||||
],
|
||||
"transform": {
|
||||
"^.+\\.(ts)?$": "ts-jest"
|
||||
},
|
||||
"testRegex": [
|
||||
"/__tests__/.*\\.(test.js|test.ts)$",
|
||||
"/test/.*\\.(test.js|test.ts)$"
|
||||
],
|
||||
"moduleFileExtensions": [
|
||||
"ts",
|
||||
"js",
|
||||
"json"
|
||||
]
|
||||
},
|
||||
"keywords": [
|
||||
"webpack",
|
||||
"cli",
|
||||
"scaffolding",
|
||||
"module",
|
||||
"bundler",
|
||||
"web"
|
||||
],
|
||||
"license": "MIT",
|
||||
"lint-staged": {
|
||||
"*.md": [
|
||||
"prettier --parser markdown --write",
|
||||
"git add"
|
||||
],
|
||||
"{packages,bin}/**/!(__testfixtures__)/**.js": [
|
||||
"eslint --fix",
|
||||
"git add"
|
||||
],
|
||||
"*.ts": [
|
||||
"npm run format:ts",
|
||||
"git add"
|
||||
],
|
||||
"*.js": [
|
||||
"npm run format:js",
|
||||
"git add"
|
||||
]
|
||||
},
|
||||
"main": "./bin/cli.js",
|
||||
"name": "webpack-cli",
|
||||
"nyc": {
|
||||
"include": [
|
||||
"bin/**.js",
|
||||
"packages/**/*.js"
|
||||
],
|
||||
"reporter": [
|
||||
"lcov"
|
||||
],
|
||||
"all": true
|
||||
},
|
||||
"peerDependencies": {
|
||||
"webpack": "4.x.x"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/webpack/webpack-cli.git"
|
||||
},
|
||||
"scripts": {
|
||||
"bootstrap": "npm run clean:all && npm install && lerna bootstrap",
|
||||
"build": "tsc",
|
||||
"changelog": "conventional-changelog --config ./build/changelog-generator/index.js --infile CHANGELOG.md --same-file",
|
||||
"clean:all": "rimraf node_modules packages/*/{node_modules}",
|
||||
"format": "npm run format:js && npm run format:ts",
|
||||
"format:js": "prettier-eslint ./bin/*.js ./bin/**/*.js ./test/**/*.js ./packages/**/**/*.js ./packages/**/*.js --write",
|
||||
"format:ts": "prettier-eslint ./packages/**/**/*.ts ./packages/**/*.ts ./packages/**/**/**/*.ts --write",
|
||||
"lint": "eslint \"./bin/*.js\" \"./bin/**/*.js\" \"./test/**/*.js\" \"packages/**/!(node_modules)/*.ts\" \"packages/**/!(node_modules)/**/*.ts\"",
|
||||
"pretest": "npm run build && npm run lint",
|
||||
"publish:monorepo": "npm run format && npm run test && lerna publish -m \"chore: monorepo version update\"",
|
||||
"reportCoverage": "nyc report --reporter=json && codecov -f coverage/coverage-final.json --disable=gcov",
|
||||
"test": "nyc jest --maxWorkers=4 --reporters=default --reporters=jest-junit",
|
||||
"test:ci": "nyc jest --maxWorkers=$(nproc) --reporters=default --reporters=jest-junit",
|
||||
"test:cli": "nyc jest test/ --maxWorkers=4 --reporters=default --reporters=jest-junit",
|
||||
"test:packages": "nyc jest packages/ --maxWorkers=4 --reporters=default --reporters=jest-junit",
|
||||
"travis:integration": "npm run build && npm run test && npm run reportCoverage",
|
||||
"travis:lint": "npm run build && npm run lint",
|
||||
"watch": "npm run build && tsc -w"
|
||||
},
|
||||
"version": "3.3.12"
|
||||
}
|
||||
Reference in New Issue
Block a user