webpack4下如何为inline file-loader导入设置outputPath?
解决方案
你可以通过在webpack.config.js中新增模块规则,覆盖ace内置inline file-loader的输出参数,将对应js文件输出到指定子目录,具体配置如下:
通用配置示例
假设你需要将这些ace相关的js资源输出到output.path下的ace-modules子目录中,在module.rules节点新增如下规则即可:
module.exports = { // 保留你原有的webpack配置不变,仅新增下方规则 module: { rules: [ // 原有其他loader规则保持不变 { // 匹配ace-builds目录下所有被引入的js资源 test: /ace-builds\/.+\.js$/, // 仅处理webpack-resolver.js中引入的资源,避免影响正常引入的ace核心文件 issuer: /webpack-resolver\.js$/, loader: 'file-loader', options: { // 和inline的参数保持一致,避免出现导出异常 esModule: false, // 自定义输出子目录,路径基于你配置的output.path outputPath: 'ace-modules', // 文件名规则可按需调整,不需要hash可以直接写[name].[ext] name: '[name].[contenthash:8].[ext]' } } ] } }
区分官方和自定义模式输出
如果你需要把自己写的additional-modes目录下的自定义模式文件单独输出到另一个子目录,可以再加一条规则:
{ test: /additional-modes\/.+\.js$/, issuer: /webpack-resolver\.js$/, loader: 'file-loader', options: { esModule: false, // 自定义模式单独输出的子目录 outputPath: 'ace-custom-modes', name: '[name].[ext]' } }
注意:请确保你项目中安装的
file-loader版本适配webpack4,推荐使用4.x~6.x版本的file-loader。
内容的提问来源于stack exchange,提问作者xdenser
相关产品推荐
相关产品推荐

