mmir-webpack v7.0.0-beta6
mmir-webpack
Integration for mmir in webpack built apps.
Basic steps for integrating mmir:
- install mmir-lib via
npm - install mmir-webpack via
npm - create or use existing
webpackconfiguration wheremmir-webpackconfigures/extends the app's base webpack-configuration formmir, similar to//const webpackInstance = require('webpack'); require('mmir-webpack')(webpackInstance, origWebpackConfig, mmirWebpackConfig)
Overview:
Prerequisites
- Node.js
webpackbuilt application withwebpackversion 3.x - 5.xwebpackplugins: (may need to be installed, see instructions below)"file-loader": ">=3.0.0", "raw-loader": ">=3.0.0", "virtual-module-webpack-plugin": ">=0.4.1", "val-loader": ">=1.1.1", "worker-loader": ">=2.0.0"
Installation
Install mmir-webpack via npm.
From npm registry
npm install -D mmir-webpackOr latest development version from github
npm install -D git+https://github.com/mmig/mmir-webpack.gitIn addition, some webpack plugins are required:
if not already installed (see npm log output regarding peer/OPTIONAL dependencies
during installation of mmir-webpack), they can be installed with
npm install -D file-loader raw-loader val-loader worker-loader virtual-module-webpack-pluginFor older webpack versions, see the corresponding documentation for the
plugin for installing the appropriate plugin package version(s), using
npm install <package>@<required version>
API Documentation
See generated API documentation (or more detailed HTML documentation) and details below.
Example
Assuming the base webpack configuration is in /app-webpack.config.js:
then create the default-configuration file for the webpack build by creating /webpack.config.js --
this webpack build configuration should load the app's base webpack
configuration and adds its mmir configuration, e.g. something similar to
const path = require('path');
const webpack = require('webpack');
const appWebpackConfig = require('./app-webpack.config');
//NOTE the following assumes that appWebpackConfig is a single webpack-configuration object
//this assumes that the mmir resources are included in the standard directory
// structure in src/app/mmir/** (see docs for more details/options)
const mmirWebpackConfig = {
resourcesPath: path.join(__dirname, 'src/app/mmir')
};
require('mmir-webpack')(webpack, appWebpackConfig, mmirWebpackConfig);
module.exports = appWebpackConfig;or an example for replacing / extending / overwriting runtime configuration settings
of mmir that would usually be made in the <src-app-mmir>/config/configuration.json file:
...
// specify some runtime configuration settings for mmir:
const runtimeConfig = {
language: 'de', // this will set or overwrite language setting in configuration.json (see docs for RuntimeConfiguration)
grammarAsyncExecMode: true // load grammars for async-execution in web workers (see docs for RuntimeConfiguration)
};
...
//set the runtime configuration in the mmir webpack options & apply them:
const mmirWebpackConfig = {
...
configuration: runtimeConfig
};
require('mmir-webpack')(webpack, appWebpackConfig, mmirWebpackConfig);
module.exports = appWebpackConfig;See also file webpack.config.js for more examples.
Integrating with angular
For integrating with angular Create the mmir build configuration in a file, e.g.
/mmir-webpack.config.js following instructions above, but
export as a modifier function:
// ... some mmir-related configuration stored in variable mmirAppConfig, then:
const webpack = require('webpack');
//NOTE: do use function-modifiction in order to add mmir-config on top of angualar etc config
// (otherwise, the automatic merging may interfere with mmir webpack config)
module.exports = function(webpackConfig, _options){
try{
require('mmir-webpack')(webpack, webpackConfig, mmirAppConfig);
} catch(err){
console.log(err);
throw err;
}
return webpackConfig;
}Then for integration with angular:
setup the project to use the custom-webpack builder for
angularby installing# for angular v7.x npm install -D @angular-builders/custom-webpack@7 # for angular v8.x npm install -D @angular-builders/custom-webpack@8 # for angular v9.x npm install -D @angular-builders/custom-webpack@9 # for angular v10.x npm install -D @angular-builders/custom-webpack@10 # for angular v11.x npm install -D @angular-builders/custom-webpack@11and starting with
angularv8.x, for supporting iterative dev builds,angular's custom dev-server withwebpack-supportnpm install -D @angular-builders/dev-servermodify the
angularbuild configuration/angular.json:- find the option for
projects.app.architect.build.builderand change it to@angular-builders/custom-webpack:browser, and add an entry to itsoptionswherecustomWebpackConfig.pathpoints to the file withmmirwebpack configuration:{ ... "architect": { "build": { "builder": "@angular-builders/custom-webpack:browser", "options": { "customWebpackConfig": { "path": "./mmir-webpack.config.js" }, ... }}}} - for supporting dev-builds, modify the entry for
projects.app.architect.serve.builderto use@angular-builders/custom-webpack:dev-server:
(in case of{ ... "serve": { "builder": "@angular-builders/custom-webpack:dev-server", "options": { "browserTarget": "app:build" }, ... }}}}angularv7.x, instead you may need to configureserveanalogous tobuild, see above) - for
projects.app.architect.testuse similar modifications as forbuild(see above) while settingbuilderto@angular-builders/custom-webpack:karma
- find the option for
Versioning Note
The major and minor version number of mmir-webpack matches the compatible
verison of mmir-lib, i.e. mmir-webpack X.Y.i is compatible with mmir-lib X.Y.j.
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago