loader就是一个node模块,它输出了一个函数。
当某种资源需要用这个loader转换时,这个函数会被调用。
并且,这个函数可以通过提供给它的this上下文访问Loader API。
reverse-txt-loader
定义
module.exports = function(src) { var result = src.split('').reverse().join(''); return `module.exports = '${result}'`; }
|
// 使用
{ test: /\\.txt$/, use: [ { './path/reverse-txt-loader' } ] }
|
loader 工具库(Loader Utilities)
充分利用 loader-utils 包。它提供了许多有用的工具,但最常用的一种工具是获取传递给 loader 的选项。schema-utils 包配合 loader-utils,用于保证 loader 选项,进行与 JSON Schema 结构一致的校验。这里有一个简单使用两者的例子:
loader.js
import { getOptions } from 'loader-utils'; import validateOptions from 'schema-utils';
const schema = { type: 'object', properties: { test: { type: 'string' } } };
export default function(source) { const options = getOptions(this);
validateOptions(schema, options, 'Example Loader');
return `export default ${ JSON.stringify(source) }`; }
|