24

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"
        } )
    ]
} );

它应该去哪里?

4

3 回答 3

20

你可以像这样将它添加到 babel-loader 配置中:

loaders: [
    {
        test: /\.jsx?$/,
        exclude: /node_modules/,
        loader: "babel-loader?optional=runtime&cacheDirectory"
    }
]

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

您还可以使用该query属性:

rules: [
    {
        test: /\.jsx?$/,
        exclude: /node_modules/,
        loader: "babel-loader",
        query: {
            optional: "runtime",
            cacheDirectory: true
        }
    }
]

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

于 2015-05-21T21:30:27.030 回答
2

像这样将它添加到加载器字符串中:

module: {
    loaders: [
        { test: /\.jsx?$/, exclude: /node_modules/, loader: "babel-loader?optional=runtime&cacheDirectory=true" }
    ]
},
于 2015-04-30T06:08:01.983 回答
1

你可以这样做 -

module.exports = {
  module: {
    loaders: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        loader: 'babel-loader?+cacheDirectory'
      }
    ]
  } 
};


它将缓存在node_modules/.cache/babel-loader文件夹中。

文件将像这样存储 -

0065e42bfc1ab4c292dfa71c6a0e924b59ed6a37.json.gz 538205e2b3bffa535d934c3d8f2feee4566bfc00.json.gz b17d9d4b73726f4ba7c5797a9959546fb3d72d69.json.gz

每个 JS 文件的缓存文件不同。

请参阅此处的文档 - https://webpack.js.org/loaders/babel-loader/#options

于 2019-07-08T12:46:58.287 回答