【问题标题】:How can you specify a custom path for the babel loader in Webpack 1?如何在 Webpack 1 中为 babel 加载器指定自定义路径?
【发布时间】:2017-05-04 18:03:20
【问题描述】:

我有一个仍然使用 webpack 版本 1 的项目,我想知道是否有一种方法可以使用 require 为 babel 指定自定义路径。这是我正在尝试的:

module: {
    loaders: [{ 
    test: /\.tsx?$/, 
    loaders: ["babel?query=require('./babel.dev')", 'awesome-typescript']
    }]
}

我还尝试通过执行以下操作来使用 webpack-combine-loaders 包:

module: {
    loaders: [{ 
        test: /\.tsx?$/, 
        loader: combineLoaders([
          {
            loader: 'babel',
            query: require('./babel.dev')
          },
          {
            loader: 'awesome-typescript'
          },
        ]),
      },
    }]
}

但这两种解决方案都不适合我。有什么建议吗?

【问题讨论】:

    标签: webpack babeljs


    【解决方案1】:

    您可以使用require.resolve,它的工作方式与 require 类似,但返回模块的完整路径而不是其内容。它不应该是查询,而是用来代替加载程序名称。

    { 
      test: /\.tsx?$/, 
      loaders: [require.resolve('./babel.dev'), 'awesome-typescript-loader']
    }
    

    require.resolve 不会自动添加-loader 后缀,一般情况下您不应省略它,尤其是在 webpack 2 中不再允许使用它的情况下。

    或者,您也可以配置 resolveLoader.modulesDirectories,webpack 使用它来查找加载器导入。

    resolveLoader: {
      modulesDirectories: [__dirname, 'node_modules']
    }
    

    你可以使用'babel.dev'作为加载器。

    【讨论】:

    • 感谢您的回复,但是使用“require.resolve('./babel.dev')”给了我以下错误:“babel.dev.js 没有返回函数”。知道我做错了什么吗?
    • 加载器必须导出一个函数,其他的都不是有效的加载器。 babel.dev.js的内容是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 2018-03-13
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多