| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- /*
- * The webpack config exports an object that has a valid webpack configuration
- * For each environment name. By default, there are two Ionic environments:
- * "dev" and "prod". As such, the webpack.config.js exports a dictionary object
- * with "keys" for "dev" and "prod", where the value is a valid webpack configuration
- * For details on configuring webpack, see their documentation here
- * https://webpack.js.org/configuration/
- */
-
- var path = require('path');
- var webpack = require('webpack');
- var ionicWebpackFactory = require(process.env.IONIC_WEBPACK_FACTORY);
-
- var ModuleConcatPlugin = require('webpack/lib/optimize/ModuleConcatenationPlugin');
- var PurifyPlugin = require('@angular-devkit/build-optimizer').PurifyPlugin;
-
- var optimizedProdLoaders = [
- {
- test: /\.json$/,
- loader: 'json-loader'
- },
- {
- test: /\.js$/,
- loader: [
- {
- loader: process.env.IONIC_CACHE_LOADER
- },
-
- {
- loader: '@angular-devkit/build-optimizer/webpack-loader',
- options: {
- sourceMap: true
- }
- },
- ]
- },
- {
- test: /\.ts$/,
- loader: [
- {
- loader: process.env.IONIC_CACHE_LOADER
- },
-
- {
- loader: '@angular-devkit/build-optimizer/webpack-loader',
- options: {
- sourceMap: true
- }
- },
-
- {
- loader: process.env.IONIC_WEBPACK_LOADER
- }
- ]
- }
- ];
-
- function getProdLoaders() {
- if (process.env.IONIC_OPTIMIZE_JS === 'true') {
- return optimizedProdLoaders;
- }
- return devConfig.module.loaders;
- }
-
- var devConfig = {
- entry: process.env.IONIC_APP_ENTRY_POINT,
- output: {
- path: '{{BUILD}}',
- publicPath: 'build/',
- filename: '[name].js',
- devtoolModuleFilenameTemplate: ionicWebpackFactory.getSourceMapperFunction(),
- },
- devtool: process.env.IONIC_SOURCE_MAP_TYPE,
-
- resolve: {
- extensions: ['.ts', '.js', '.json'],
- modules: [path.resolve('node_modules')]
- },
-
- module: {
- loaders: [
- {
- test: /\.json$/,
- loader: 'json-loader'
- },
- {
- test: /\.ts$/,
- loader: process.env.IONIC_WEBPACK_LOADER
- }
- ]
- },
-
- plugins: [
- ionicWebpackFactory.getIonicEnvironmentPlugin(),
- ionicWebpackFactory.getCommonChunksPlugin()
- ],
-
- // Some libraries import Node modules but don't use them in the browser.
- // Tell Webpack to provide empty mocks for them so importing them works.
- node: {
- fs: 'empty',
- net: 'empty',
- tls: 'empty'
- }
- };
-
- var prodConfig = {
- entry: process.env.IONIC_APP_ENTRY_POINT,
- output: {
- path: '{{BUILD}}',
- publicPath: 'build/',
- filename: '[name].js',
- devtoolModuleFilenameTemplate: ionicWebpackFactory.getSourceMapperFunction(),
- },
- devtool: process.env.IONIC_SOURCE_MAP_TYPE,
-
- resolve: {
- extensions: ['.ts', '.js', '.json'],
- modules: [path.resolve('node_modules')]
- },
-
- module: {
- loaders: getProdLoaders()
- },
-
- plugins: [
- ionicWebpackFactory.getIonicEnvironmentPlugin(),
- ionicWebpackFactory.getCommonChunksPlugin(),
- new ModuleConcatPlugin(),
- new PurifyPlugin()
- ],
-
- // Some libraries import Node modules but don't use them in the browser.
- // Tell Webpack to provide empty mocks for them so importing them works.
- node: {
- fs: 'empty',
- net: 'empty',
- tls: 'empty'
- }
- };
-
-
- module.exports = {
- dev: devConfig,
- prod: prodConfig
- }
-
|