c926b10b0181faeb3ebe2917404623ade186e954fc08a7bb33b71a2a36763ad162ef140f8642e80ed81093d65ebe97ddf1d690e41464734986260d95a87169 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. <div align="center">
  2. <a href="https://github.com/webpack/webpack">
  3. <img width="200" height="200" src="https://webpack.js.org/assets/icon-square-big.svg">
  4. </a>
  5. </div>
  6. [![npm][npm]][npm-url]
  7. [![node][node]][node-url]
  8. [![deps][deps]][deps-url]
  9. [![tests][tests]][tests-url]
  10. [![chat][chat]][chat-url]
  11. [![size][size]][size-url]
  12. # url-loader
  13. A loader for webpack which transforms files into base64 URIs.
  14. ## Getting Started
  15. To begin, you'll need to install `url-loader`:
  16. ```console
  17. $ npm install url-loader --save-dev
  18. ```
  19. `url-loader` works like
  20. [`file-loader`](https://github.com/webpack-contrib/file-loader), but can return
  21. a DataURL if the file is smaller than a byte limit.
  22. **index.js**
  23. ```js
  24. import img from './image.png';
  25. ```
  26. **webpack.config.js**
  27. ```js
  28. module.exports = {
  29. module: {
  30. rules: [
  31. {
  32. test: /\.(png|jpg|gif)$/i,
  33. use: [
  34. {
  35. loader: 'url-loader',
  36. options: {
  37. limit: 8192,
  38. },
  39. },
  40. ],
  41. },
  42. ],
  43. },
  44. };
  45. ```
  46. And run `webpack` via your preferred method.
  47. ## Options
  48. ### `fallback`
  49. Type: `String`
  50. Default: `'file-loader'`
  51. Specifies an alternative loader to use when a target file's size exceeds the
  52. limit set in the `limit` option.
  53. **webpack.config.js**
  54. ```js
  55. module.exports = {
  56. module: {
  57. rules: [
  58. {
  59. test: /\.(png|jpg|gif)$/i,
  60. use: [
  61. {
  62. loader: 'url-loader',
  63. options: {
  64. fallback: require.resolve('responsive-loader'),
  65. },
  66. },
  67. ],
  68. },
  69. ],
  70. },
  71. };
  72. ```
  73. The fallback loader will receive the same configuration options as url-loader.
  74. For example, to set the quality option of a responsive-loader above use:
  75. **webpack.config.js**
  76. ```js
  77. module.exports = {
  78. module: {
  79. rules: [
  80. {
  81. test: /\.(png|jpg|gif)$/i,
  82. use: [
  83. {
  84. loader: 'url-loader',
  85. options: {
  86. fallback: require.resolve('responsive-loader'),
  87. quality: 85,
  88. },
  89. },
  90. ],
  91. },
  92. ],
  93. },
  94. };
  95. ```
  96. ### `limit`
  97. Type: `Number|Boolean|String`
  98. Default: `undefined`
  99. The limit can be specified via loader options and defaults to no limit.
  100. #### `Number|String`
  101. A `Number` or `String` specifying the maximum size of a file in bytes. If the file size is
  102. **equal** or **greater** than the limit [`file-loader`](https://github.com/webpack-contrib/file-loader)
  103. will be used (by default) and all query parameters are passed to it.
  104. Using an alternative to `file-loader` is enabled via the `fallback` option.
  105. **webpack.config.js**
  106. ```js
  107. module.exports = {
  108. module: {
  109. rules: [
  110. {
  111. test: /\.(png|jpg|gif)$/i,
  112. use: [
  113. {
  114. loader: 'url-loader',
  115. options: {
  116. limit: 8192,
  117. },
  118. },
  119. ],
  120. },
  121. ],
  122. },
  123. };
  124. ```
  125. #### `Boolean`
  126. Enable or disable transform files into base64.
  127. **webpack.config.js**
  128. ```js
  129. module.exports = {
  130. module: {
  131. rules: [
  132. {
  133. test: /\.(png|jpg|gif)$/i,
  134. use: [
  135. {
  136. loader: 'url-loader',
  137. options: {
  138. limit: false,
  139. },
  140. },
  141. ],
  142. },
  143. ],
  144. },
  145. };
  146. ```
  147. ### `mimetype`
  148. Type: `String`
  149. Default: `(file extension)`
  150. Sets the MIME type for the file to be transformed. If unspecified the file
  151. extensions will be used to lookup the MIME type.
  152. **webpack.config.js**
  153. ```js
  154. module.exports = {
  155. module: {
  156. rules: [
  157. {
  158. test: /\.(png|jpg|gif)$/i,
  159. use: [
  160. {
  161. loader: 'url-loader',
  162. options: {
  163. mimetype: 'image/png',
  164. },
  165. },
  166. ],
  167. },
  168. ],
  169. },
  170. };
  171. ```
  172. ## Contributing
  173. Please take a moment to read our contributing guidelines if you haven't yet done so.
  174. [CONTRIBUTING](./.github/CONTRIBUTING.md)
  175. ## License
  176. [MIT](./LICENSE)
  177. [npm]: https://img.shields.io/npm/v/url-loader.svg
  178. [npm-url]: https://npmjs.com/package/url-loader
  179. [node]: https://img.shields.io/node/v/url-loader.svg
  180. [node-url]: https://nodejs.org
  181. [deps]: https://david-dm.org/webpack-contrib/url-loader.svg
  182. [deps-url]: https://david-dm.org/webpack-contrib/url-loader
  183. [tests]: https://dev.azure.com/webpack-contrib/url-loader/_apis/build/status/webpack-contrib.url-loader?branchName=master
  184. [tests-url]: https://dev.azure.com/webpack-contrib/url-loader/_build/latest?definitionId=2&branchName=master
  185. [cover]: https://codecov.io/gh/webpack-contrib/url-loader/branch/master/graph/badge.svg
  186. [cover-url]: https://codecov.io/gh/webpack-contrib/url-loader
  187. [chat]: https://img.shields.io/badge/gitter-webpack%2Fwebpack-brightgreen.svg
  188. [chat-url]: https://gitter.im/webpack/webpack
  189. [size]: https://packagephobia.now.sh/badge?p=url-loader
  190. [size-url]: https://packagephobia.now.sh/result?p=url-loader