在webpack中使用babel-loader时如何指定cacheDirectory选项?

Vla*_*sny 23 webpack babeljs

babel-loader中有一个cacheDirectory选项.我无法弄清楚如何使用以下webpack设置:

var compiler = webpack( {
    context: path.resolve( __dirname + "/../../" + rootModuleDir + "/" + modules[ module ] ),
    entry: "./index.jsx",
    resolve: {
        root: path.resolve( __dirname + "/../../assets/js/lib/react" ),
        extensions: [ "", ".js", ".jsx" ]
    },
    output: {
        path: targetDir,
        filename: modules[ module ] + ".js"
    },
    module: {
        loaders: [
            { test: /\.jsx?$/, exclude: /node_modules/, loader: "babel-loader?optional=runtime" }
        ]
    },
    plugins: [
        //new webpack.optimize.UglifyJsPlugin(),
        new webpack.SourceMapDevToolPlugin( {
            filename: "[file].map"
        } )
    ]
} );
Run Code Online (Sandbox Code Playgroud)

它应该去哪里?

Wil*_*ein 18

您可以将它添加到babel-loader配置中,如下所示:

loaders: [
    {
        test: /\.jsx?$/,
        exclude: /node_modules/,
        loader: "babel-loader?optional=runtime&cacheDirectory"
    }
]
Run Code Online (Sandbox Code Playgroud)

请注意,您不应该添加=true,这是不必要的,并将设置cacheDirectory为使用名为的目录true.参考:使用cacheDirectory失败并显示错误

您还可以使用该query属性:

rules: [
    {
        test: /\.jsx?$/,
        exclude: /node_modules/,
        loader: "babel-loader",
        query: {
            optional: "runtime",
            cacheDirectory: true
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

使用该query属性时,指定true将启用该选项,并指定字符串值将启用该选项并将其配置为使用该目录名称.参考:查询参数

  • 根据babel文档,`= true`将导致加载程序使用默认缓存目录.请参阅https://github.com/babel/babel-loader (2认同)