什么是Loader?

    Loader是用来处理各种类型文件的,用于对模块源码的转换。

    loader可以理解就是一个函数function
    /loaders/replaceLoader.js

    1. module.exports = function (source) {
    2. // source指的是源码
    3. return source.replace('dell', 'dellLee')
    4. }

    只有一个参数source

    使用

    1. module.exports = {
    2. module: {
    3. rules: [{
    4. test: /\.js/,
    5. use: [
    6. {
    7. loader: path.resolve(__dirname, './loaders/replaceLoader.js'),
    8. options: {
    9. name: 'zx'
    10. }
    11. }
    12. ]
    13. }]
    14. }
    15. }

    loaders获取options内容

    1. const loaderUtils = reuqire('loader-utils')
    2. module.exports = function(option) {
    3. const options = loaderUtils.getOptions(this)
    4. return source.replace('dell', options.name)
    5. }

    处理异步

    1. const loaderUtils = reuqire('loader-utils')
    2. module.exports = function(option) {
    3. const options = loaderUtils.getOptions(this)
    4. const callback = this.async()
    5. setTimeout(() => {
    6. const res = source.replace('dell', options.name)
    7. callback(null, res)
    8. }, 1000)
    9. }

    this.callback(
    err: Error | null,
    content: string | Buffer,
    sourceMap?: SourceMap,
    meta?: any
    )
    第二个参数就是要返回的result,第一二个参数必填,三四选填