Skip to content

Commit 0a9e1fd

Browse files
committed
build: update postcss-loader to version 4.0
1 parent 16fabdd commit 0a9e1fd

File tree

5 files changed

+71
-81
lines changed

5 files changed

+71
-81
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@
188188
"popper.js": "^1.14.1",
189189
"postcss": "7.0.32",
190190
"postcss-import": "12.0.1",
191-
"postcss-loader": "3.0.0",
191+
"postcss-loader": "4.0.1",
192192
"prettier": "^2.0.0",
193193
"protractor": "~7.0.0",
194194
"puppeteer": "5.2.1",

packages/angular_devkit/build_angular/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
"pnp-webpack-plugin": "1.6.4",
4848
"postcss": "7.0.32",
4949
"postcss-import": "12.0.1",
50-
"postcss-loader": "3.0.0",
50+
"postcss-loader": "4.0.1",
5151
"raw-loader": "4.0.1",
5252
"regenerator-runtime": "0.13.7",
5353
"resolve-url-loader": "3.1.1",

packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/styles.ts

Lines changed: 56 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -35,38 +35,6 @@ export function getStylesConfig(wco: WebpackConfigOptions) {
3535
// Determine hashing format.
3636
const hashFormat = getOutputHashFormat(buildOptions.outputHashing as string);
3737

38-
const postcssPluginCreator = function(loader: webpack.loader.LoaderContext) {
39-
return [
40-
postcssImports({
41-
resolve: (url: string) => (url.startsWith('~') ? url.substr(1) : url),
42-
load: (filename: string) => {
43-
return new Promise<string>((resolve, reject) => {
44-
loader.fs.readFile(filename, (err: Error, data: Buffer) => {
45-
if (err) {
46-
reject(err);
47-
48-
return;
49-
}
50-
51-
const content = data.toString();
52-
resolve(content);
53-
});
54-
});
55-
},
56-
}),
57-
PostcssCliResources({
58-
baseHref: buildOptions.baseHref,
59-
deployUrl: buildOptions.deployUrl,
60-
resourcesOutputPath: buildOptions.resourcesOutputPath,
61-
loader,
62-
rebaseRootRelative: buildOptions.rebaseRootRelativeCssUrls,
63-
filename: `[name]${hashFormat.file}.[ext]`,
64-
emitFile: buildOptions.platform !== 'server',
65-
}),
66-
autoprefixer(),
67-
];
68-
};
69-
7038
// use includePaths from appConfig
7139
const includePaths: string[] = [];
7240
let lessPathOptions: { paths?: string[] } = {};
@@ -186,7 +154,56 @@ export function getStylesConfig(wco: WebpackConfigOptions) {
186154
},
187155
];
188156

157+
const postcssOptionsCreator = (sourceMap: boolean, extracted: boolean | undefined) => {
158+
return (loader: webpack.loader.LoaderContext) => ({
159+
map: sourceMap && {
160+
inline: true,
161+
annotation: false,
162+
},
163+
plugins: [
164+
postcssImports({
165+
resolve: (url: string) => url.startsWith('~') ? url.substr(1) : url,
166+
load: (filename: string) => {
167+
return new Promise<string>((resolve, reject) => {
168+
loader.fs.readFile(filename, (err: Error, data: Buffer) => {
169+
if (err) {
170+
reject(err);
171+
172+
return;
173+
}
174+
175+
const content = data.toString();
176+
resolve(content);
177+
});
178+
});
179+
},
180+
}),
181+
PostcssCliResources({
182+
baseHref: buildOptions.baseHref,
183+
deployUrl: buildOptions.deployUrl,
184+
resourcesOutputPath: buildOptions.resourcesOutputPath,
185+
loader,
186+
rebaseRootRelative: buildOptions.rebaseRootRelativeCssUrls,
187+
filename: `[name]${hashFormat.file}.[ext]`,
188+
emitFile: buildOptions.platform !== 'server',
189+
extracted,
190+
}),
191+
autoprefixer(),
192+
],
193+
});
194+
};
195+
189196
// load component css as raw strings
197+
const componentsSourceMap = !!(
198+
cssSourceMap
199+
// Never use component css sourcemap when style optimizations are on.
200+
// It will just increase bundle size without offering good debug experience.
201+
&& !buildOptions.optimization.styles
202+
// Inline all sourcemap types except hidden ones, which are the same as no sourcemaps
203+
// for component css.
204+
&& !buildOptions.sourceMap.hidden
205+
);
206+
190207
const rules: webpack.RuleSetRule[] = baseRules.map(({ test, use }) => ({
191208
exclude: globalStylePaths,
192209
test,
@@ -195,15 +212,7 @@ export function getStylesConfig(wco: WebpackConfigOptions) {
195212
{
196213
loader: require.resolve('postcss-loader'),
197214
options: {
198-
ident: 'embedded',
199-
plugins: postcssPluginCreator,
200-
sourceMap: cssSourceMap
201-
// Never use component css sourcemap when style optimizations are on.
202-
// It will just increase bundle size without offering good debug experience.
203-
&& !buildOptions.optimization.styles
204-
// Inline all sourcemap types except hidden ones, which are the same as no sourcemaps
205-
// for component css.
206-
&& !buildOptions.sourceMap.hidden ? 'inline' : false,
215+
postcssOptions: postcssOptionsCreator(componentsSourceMap, false),
207216
},
208217
},
209218
...use,
@@ -212,6 +221,10 @@ export function getStylesConfig(wco: WebpackConfigOptions) {
212221

213222
// load global css as css files
214223
if (globalStylePaths.length > 0) {
224+
const globalSourceMap = !!(
225+
cssSourceMap && !buildOptions.extractCss && !buildOptions.sourceMap.hidden
226+
);
227+
215228
rules.push(
216229
...baseRules.map(({ test, use }) => {
217230
return {
@@ -230,18 +243,13 @@ export function getStylesConfig(wco: WebpackConfigOptions) {
230243
loader: require.resolve('css-loader'),
231244
options: {
232245
url: false,
233-
sourceMap: cssSourceMap,
246+
sourceMap: globalSourceMap,
234247
},
235248
},
236249
{
237250
loader: require.resolve('postcss-loader'),
238251
options: {
239-
ident: buildOptions.extractCss ? 'extracted' : 'embedded',
240-
plugins: postcssPluginCreator,
241-
sourceMap:
242-
cssSourceMap && !buildOptions.extractCss && !buildOptions.sourceMap.hidden
243-
? 'inline'
244-
: cssSourceMap,
252+
postcssOptions: postcssOptionsCreator(globalSourceMap, buildOptions.extractCss),
245253
},
246254
},
247255
...use,

packages/angular_devkit/build_angular/src/angular-cli-files/plugins/postcss-cli-resources.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ export interface PostcssCliResourcesOptions {
2929
deployUrl?: string;
3030
resourcesOutputPath?: string;
3131
rebaseRootRelative?: boolean;
32+
/** CSS is extracted to a `.css` or is embedded in a `.js` file. */
33+
extracted?: boolean;
3234
filename: string;
3335
loader: webpack.loader.LoaderContext;
3436
emitFile: boolean;
@@ -59,6 +61,7 @@ export default postcss.plugin('postcss-cli-resources', (options: PostcssCliResou
5961
filename,
6062
loader,
6163
emitFile,
64+
extracted,
6265
} = options;
6366

6467
const dedupeSlashes = (url: string) => url.replace(/\/\/+/g, '/');
@@ -149,7 +152,7 @@ export default postcss.plugin('postcss-cli-resources', (options: PostcssCliResou
149152
outputUrl = url.format({ pathname: outputUrl, hash, search });
150153
}
151154

152-
if (deployUrl && loader.loaders[loader.loaderIndex].options.ident !== 'extracted') {
155+
if (deployUrl && !extracted) {
153156
outputUrl = url.resolve(deployUrl, outputUrl);
154157
}
155158

yarn.lock

Lines changed: 9 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6022,13 +6022,6 @@ immutable@^3.8.2:
60226022
resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3"
60236023
integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=
60246024

6025-
import-cwd@^2.0.0:
6026-
version "2.1.0"
6027-
resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9"
6028-
integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=
6029-
dependencies:
6030-
import-from "^2.1.0"
6031-
60326025
import-fresh@^2.0.0:
60336026
version "2.0.0"
60346027
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
@@ -6045,13 +6038,6 @@ import-fresh@^3.2.1:
60456038
parent-module "^1.0.0"
60466039
resolve-from "^4.0.0"
60476040

6048-
import-from@^2.1.0:
6049-
version "2.1.0"
6050-
resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1"
6051-
integrity sha1-M1238qev/VOqpHHUuAId7ja387E=
6052-
dependencies:
6053-
resolve-from "^3.0.0"
6054-
60556041
import-local@^2.0.0:
60566042
version "2.0.0"
60576043
resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
@@ -9143,23 +9129,16 @@ [email protected]:
91439129
read-cache "^1.0.0"
91449130
resolve "^1.1.7"
91459131

9146-
postcss-load-config@^2.0.0:
9147-
version "2.1.0"
9148-
resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003"
9149-
integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==
9150-
dependencies:
9151-
cosmiconfig "^5.0.0"
9152-
import-cwd "^2.0.0"
9153-
9154-
9155-
version "3.0.0"
9156-
resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d"
9157-
integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==
9132+
9133+
version "4.0.1"
9134+
resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-4.0.1.tgz#d1a2cf443005bcd65e856d3881204886646398d4"
9135+
integrity sha512-m+2fe21cs/1Oz4Yds90al5uqVSc0yJRhYSfCRnsnVLt3z0QoNPpqLdgW7CGVWmlUlKEGL9vmq+P4hHS6Orb5DA==
91589136
dependencies:
9159-
loader-utils "^1.1.0"
9160-
postcss "^7.0.0"
9161-
postcss-load-config "^2.0.0"
9162-
schema-utils "^1.0.0"
9137+
cosmiconfig "^7.0.0"
9138+
klona "^2.0.3"
9139+
loader-utils "^2.0.0"
9140+
schema-utils "^2.7.1"
9141+
semver "^7.3.2"
91639142

91649143
postcss-merge-longhand@^4.0.11:
91659144
version "4.0.11"

0 commit comments

Comments
 (0)