2017-05-04 80 views
0

我有一個仍然使用webpack版本1的項目,我想知道是否有一種方法可以使用require爲babel指定自定義路徑。這裏就是我想:如何爲Webpack 1中的babel加載器指定一個自定義路徑?

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

而且我通過執行以下操作使用的WebPack,結合裝卸包裝也試過:

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

但無論是解決方案爲我工作。有什麼建議麼?

回答

0

您可以使用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'作爲加載程序。

+0

感謝您的回覆,但是使用「require.resolve('./ babel.dev')」給了我以下錯誤:「babel.dev.js沒有返回函數」。任何想法我做錯了什麼? – Ryan

+0

加載程序必須導出一個函數,其他所有內容都不是有效的加載程序。 'babel.dev.js'的內容是什麼? –

相關問題