|
4 | 4 |
|
5 | 5 | This loader generates a srcset string from an image. |
6 | 6 |
|
7 | | -## Example |
| 7 | +## Examples |
8 | 8 |
|
9 | | -```javascript |
10 | | -import jpg from "./some_pic.jpg?srcset&sizes[]=500w&sizes[]=1000w&sizes[]=1500w"; |
| 9 | +[React](https://github.com/Calvin-LL/webpack-image-srcset-loader/tree/master/examples/react) |
11 | 10 |
|
12 | | -console.log(jpg); |
13 | | -// outputs: "44aacd9d8d250c420d100a3fb0f1debe.jpg 500w, 5a35cdf3268c47471b8e96b656a23200.jpg 1000w, fdaf70a107ad3cebfaf1e03ff0601c1c.jpg 1500w" |
14 | | -``` |
| 11 | +[Vue](https://github.com/Calvin-LL/webpack-image-srcset-loader/tree/master/examples/vue) |
15 | 12 |
|
16 | 13 | ## Install |
17 | 14 |
|
18 | 15 | Install with npm: |
19 | 16 |
|
20 | 17 | ```bash |
21 | | -npm install webpack-image-srcset-loader webpack-image-resize-loader --save-dev |
| 18 | +npm install --save-dev webpack-image-srcset-loader webpack-image-resize-loader |
22 | 19 | ``` |
23 | 20 |
|
24 | 21 | Install with yarn: |
25 | 22 |
|
26 | 23 | ```bash |
27 | | -yarn add webpack-image-srcset-loader webpack-image-resize-loader --dev |
| 24 | +yarn add --dev webpack-image-srcset-loader webpack-image-resize-loader |
28 | 25 | ``` |
29 | 26 |
|
30 | 27 | ## Usage |
31 | 28 |
|
32 | | -### Use with [webpack-query-loader](https://github.com/Calvin-LL/webpack-query-loader) |
33 | | - |
34 | | -Use [webpack-query-loader](https://github.com/Calvin-LL/webpack-query-loader) if you only want some import of images to be in the srcset format |
35 | | - |
36 | | -```javascript |
37 | | -import jpg from "./some_pic.jpg?srcset"; |
38 | | -``` |
39 | | - |
40 | | -note: |
41 | | -You can override the `sizes` in options by |
42 | | - |
43 | 29 | ```javascript |
44 | | -import jpg from "./some_pic.jpg?srcset&sizes[]=1x&sizes[]=2x&sizes[]=3x"; |
45 | | -``` |
46 | | - |
47 | | -Install with npm: |
48 | | - |
49 | | -```bash |
50 | | -npm install webpack-query-loader --save-dev |
51 | | -``` |
52 | | - |
53 | | -Install with yarn: |
| 30 | +import jpgSrcSet from "./some_pic.jpg?srcset"; |
54 | 31 |
|
55 | | -```bash |
56 | | -yarn add webpack-query-loader --dev |
| 32 | +// jpgSrcSet will be "97[...]7.jpg 500w, ed[...]3.jpg 1000w, c6[...]b.jpg 1500w, 57[...]e.jpg" |
57 | 33 | ``` |
58 | 34 |
|
59 | 35 | #### webpack.config.js |
60 | 36 |
|
61 | 37 | ```javascript |
62 | 38 | module.exports = { |
63 | | - ... |
| 39 | + // ... |
64 | 40 | module: { |
65 | 41 | rules: [ |
| 42 | + // ... |
66 | 43 | { |
67 | | - test: /\.(png|jpe?g)/i, |
68 | | - use: [ |
| 44 | + test: /\.(png|jpe?g|svg|gif|webp|tiff?)$/i, |
| 45 | + oneOf: [ |
69 | 46 | { |
70 | | - loader: "webpack-query-loader", |
71 | | - options: { |
72 | | - resourceQuery: "srcset", // run only if the url query has "srcset" |
73 | | - use: { |
| 47 | + // if the import url looks like "some.png?srcset..." |
| 48 | + resourceQuery: /srcset/, |
| 49 | + use: [ |
| 50 | + { |
74 | 51 | loader: "webpack-image-srcset-loader", |
75 | 52 | options: { |
76 | 53 | sizes: ["500w", "1000w", "1500w", null], |
77 | 54 | }, |
78 | 55 | }, |
79 | | - }, |
80 | | - }, |
81 | | - { |
82 | | - loader: "webpack-query-loader", |
83 | | - options: { |
84 | | - resourceQuery: "srcset", // run only if the url query has "srcset" |
85 | | - use: "webpack-image-resize-loader", |
86 | | - }, |
| 56 | + "webpack-image-resize-loader", |
| 57 | + ], |
87 | 58 | }, |
88 | 59 | { |
89 | | - loader: "webpack-query-loader", |
90 | | - options: { |
91 | | - resourceQuery: "!srcset", |
92 | | - use: "file-loader", // use "file-loader" when the url query does not have "srcset" |
93 | | - }, |
| 60 | + // if no previous resourceQuery match |
| 61 | + use: "file-loader", |
94 | 62 | }, |
95 | 63 | ], |
96 | 64 | }, |
97 | 65 | ], |
98 | 66 | }, |
99 | 67 | }; |
100 | | - |
101 | 68 | ``` |
102 | 69 |
|
103 | | -### Use without [webpack-query-loader](https://github.com/Calvin-LL/webpack-query-loader) |
| 70 | +## Options |
104 | 71 |
|
105 | | -All image imports will be in the srcset format |
| 72 | +#### Note: |
106 | 73 |
|
107 | | -```javascript |
108 | | -import jpg from "./some_pic.jpg"; |
109 | | -``` |
| 74 | +Additional options such as `quality` here will be passed down to [webpack-image-resize-loader](https://github.com/Calvin-LL/webpack-image-resize-loader). See [webpack-image-resize-loader's options](https://github.com/Calvin-LL/webpack-image-resize-loader#options). |
110 | 75 |
|
111 | | -#### webpack.config.js |
| 76 | +For example: |
112 | 77 |
|
113 | 78 | ```javascript |
114 | | -module.exports = { |
115 | | - ... |
116 | | - module: { |
117 | | - rules: [ |
118 | | - { |
119 | | - test: /\.(png|jpe?g)/i, |
120 | | - use: [ |
121 | | - { |
122 | | - loader: "webpack-image-srcset-loader", |
123 | | - options: { |
124 | | - sizes: ["500w", "1000w", "1500w", null], |
125 | | - }, |
126 | | - }, |
127 | | - "webpack-image-resize-loader", |
128 | | - ], |
129 | | - }, |
130 | | - ], |
131 | | - }, |
132 | | -}; |
| 79 | +import webpSrcSet from "./some_pic.jpg?srcset&format=webp"; |
133 | 80 |
|
| 81 | +// webpSrcSet will be "00[...]5.webp 500w, 40[...]3.webp 1000w, 76[...]b.webp 1500w, b1[...]c.webp" |
134 | 82 | ``` |
135 | 83 |
|
136 | | -## Options |
137 | | - |
138 | 84 | | Name | Type | Default | Description | |
139 | 85 | | --------------------------------------------------- | ------------------ | --------- | -------------------------------------------------------------------------------------------- | |
140 | 86 | | **[`sizes`](#sizes)** | `(string\|null)[]` | undefined | Sizes in the output srcset. | |
|
0 commit comments