Security News
JSR Working Group Kicks Off with Ambitious Roadmap and Plans for Open Governance
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
@webpack-contrib/config-loader
Advanced tools
A webpack configuration loader.
This module utilizes cosmiconfig
which supports declaring a webpack configuration in a number of different file
formats including; .webpackrc
, webpack.config.js
, and a webpack
property
in a package.json
.
config-loader
supports configuration modules which export an Object
, Array
,
Function
, Promise
, and Function
which returns a Promise
.
The module also validates found configurations against webpack's options schema to ensure that the configuration is correct before webpack attempts to use it.
This module requires a minimum of Node v6.9.0 and Webpack v4.0.0.
To begin, you'll need to install config-loader
:
$ npm install @webpack-contrib/config-loader --save-dev
And get straight to loading a config:
const loader = require('@webpack-contrib/config-loader');
const options = { ... };
loader(options).then((result) => {
// ...
// result = { config: Object, configPath: String }
});
This module supports extending webpack configuration files with
ESLint-style
extends
functionality. This feature allows users to create a "base" config and
in essence, "inherit" from that base config in a separate config. A bare-bones
example:
// base.config.js
module.exports = {
name: 'base',
mode: 'development',
plugins: [...]
}
// webpack.config.js
module.exports = {
extends: path.join(..., 'base-config.js'),
name: 'dev'
The resulting configuration object would resemble:
// result
{
name: 'dev',
mode: 'development',
plugins: [...]
}
The webpack.config.js
file will be intelligently extended with properties from
base.config.js
.
The extends
property also supports naming installed NPM modules which export
webpack configurations. Various configuration properties can also be filtered in
different ways based on need.
Read More about Extending Configuration Files;
When using a configuration file that exports a Function
, users of webpack-cli
have become accustom to the function signature:
function config (env, argv)
webpack-cli
provides any CLI flags prefixed with --env
as a single object in
the env
parameter, which is an unnecessary feature.
Environment Variables
have long served the same purpose, and are easily accessible within a
Node environment.
As such, config-loader
does not call Function
configs with the env
parameter. Rather, it makes calls with only the argv
parameter.
This module can support non-standard JavaScript file formats when a compatible
compiler is registered via the require
option. If the option is defined,
config-loader
will attempt to require the specified module(s) before the
target config is found and loaded.
As such, config-loader
will also search for the following file extensions;
.js
, .es6
, .flow
, .mjs
, and .ts
.
The module is also tested with the following compilers:
Note: Compilers are not part of or built-into this module. To use a specific compiler, you
must install it and specify its use by using the --require
CLI flag.
Returns a Promise
, which resolves with an Object
containing:
config
Type: Object
Contains the actual configuration object.
configPath
Type: String
Contains the full, absolute filesystem path to the configuration file.
allowMissing
Type: Boolean
Default: false
Instructs the module to allow a missing config file, and returns an Object
with empty config
and configPath
properties in the event a config file was
not found.
configPath
Type: String
Default: undefined
Specifies an absolute path to a valid configuration file on the filesystem.
cwd
Type: String
Default: process.cwd()
Specifies an filesystem path from which point config-loader
will begin looking
for a configuration file.
require
Type: String | Array[String]
Default: undefined
Specifies compiler(s) to use when loading modules from files containing the configuration. For example:
const loader = require('@webpack-contrib/config-loader');
const options = { require: 'ts-node/register' };
loader(options).then((result) => { ... });
See Supported Compilers for more information.
schema
Type: Object
Default: undefined
An object containing a valid JSON Schema Definition.
By default, config-loader
validates your webpack config against the
webpack config schema.
However, it can be useful to append additional schema data to allow configs,
which contain properties not present in the webpack schema, to pass validation.
Please take a moment to read our contributing guidelines if you haven't yet done so.
FAQs
A webpack configuration loader
The npm package @webpack-contrib/config-loader receives a total of 5,487 weekly downloads. As such, @webpack-contrib/config-loader popularity was classified as popular.
We found that @webpack-contrib/config-loader demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 9 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
Security News
Research
An advanced npm supply chain attack is leveraging Ethereum smart contracts for decentralized, persistent malware control, evading traditional defenses.
Security News
Research
Attackers are impersonating Sindre Sorhus on npm with a fake 'chalk-node' package containing a malicious backdoor to compromise developers' projects.