在 webpack 中使用 babel-loader 时如何指定 cacheDirectory 选项?
How to specify cacheDirectory option when using babel-loader with webpack?
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"
} )
]
} );
它应该去哪里?
像这样将其添加到加载程序字符串中:
module: {
loaders: [
{ test: /\.jsx?$/, exclude: /node_modules/, loader: "babel-loader?optional=runtime&cacheDirectory=true" }
]
},
你可以像这样将它添加到 babel-loader 配置中:
loaders: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: "babel-loader?optional=runtime&cacheDirectory"
}
]
请注意,您不应添加 =true
,这是不必要的,并且会将 cacheDirectory
设置为使用名为 true
的目录。参考:using cacheDirectory fails with Error
您也可以使用 query
属性:
rules: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: "babel-loader",
query: {
optional: "runtime",
cacheDirectory: true
}
}
]
当使用 query
属性 时,指定 true
将启用该选项,指定一个字符串值将启用该选项并将其配置为使用该目录名称。参考:query parameters
你可以这样做 -
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
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"
} )
]
} );
它应该去哪里?
像这样将其添加到加载程序字符串中:
module: {
loaders: [
{ test: /\.jsx?$/, exclude: /node_modules/, loader: "babel-loader?optional=runtime&cacheDirectory=true" }
]
},
你可以像这样将它添加到 babel-loader 配置中:
loaders: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: "babel-loader?optional=runtime&cacheDirectory"
}
]
请注意,您不应添加 =true
,这是不必要的,并且会将 cacheDirectory
设置为使用名为 true
的目录。参考:using cacheDirectory fails with Error
您也可以使用 query
属性:
rules: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: "babel-loader",
query: {
optional: "runtime",
cacheDirectory: true
}
}
]
当使用 query
属性 时,指定 true
将启用该选项,指定一个字符串值将启用该选项并将其配置为使用该目录名称。参考:query parameters
你可以这样做 -
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