diff --git a/packages/custom-webpack/package.json b/packages/custom-webpack/package.json index 83edce585..9339eea76 100644 --- a/packages/custom-webpack/package.json +++ b/packages/custom-webpack/package.json @@ -42,6 +42,6 @@ "@angular-devkit/core": "^11.0.0", "lodash": "^4.17.15", "ts-node": "^9.0.0", - "webpack-merge": "^5.7.0" + "webpack-merge": "^5.7.2" } } diff --git a/packages/custom-webpack/src/webpack-config-merger.spec.ts b/packages/custom-webpack/src/webpack-config-merger.spec.ts index fb5e27a7f..803b2aee7 100644 --- a/packages/custom-webpack/src/webpack-config-merger.spec.ts +++ b/packages/custom-webpack/src/webpack-config-merger.spec.ts @@ -1,6 +1,6 @@ import { mergeConfigs } from './webpack-config-merger'; import * as webpack from 'webpack'; -import { CustomizeRule } from 'webpack-merge'; +import merge, { CustomizeRule } from 'webpack-merge'; describe('Webpack config merger test', () => { it('Should replace plugins', () => { @@ -235,4 +235,75 @@ describe('Webpack config merger test', () => { expect(output).toEqual(expected); }); + + it('should append loaders even if there is not intersection between configs', () => { + const conf1 = { + module: { + rules: [ + { + test: '/\\.scss$|\\.sass$/', + use: [ + { + loader: 'sass-loader', + options: { + sourceMap: true, + sassOptions: { + precision: 8, + outputStyle: 'expanded', + }, + }, + }, + ], + }, + ], + }, + }; + const conf2 = { + module: { + rules: [ + { + test: '/\\.scss$|\\.sass$/', + use: [ + { + loader: 'sass-resources-loader', + options: { + resources: ['src/styles/includes.scss'], + }, + }, + ], + }, + ], + }, + }; + + const expected = { + module: { + rules: [ + { + test: '/\\.scss$|\\.sass$/', + use: [ + { + loader: 'sass-loader', + options: { + sourceMap: true, + sassOptions: { + precision: 8, + outputStyle: 'expanded', + }, + }, + }, + { + loader: 'sass-resources-loader', + options: { + resources: ['src/styles/includes.scss'], + }, + }, + ], + }, + ], + }, + }; + + expect(mergeConfigs(conf1, conf2)).toEqual(expected); + }); });