cad*_*zah 19 javascript webpack
在官方文档中说在应用Code Splitting
和生成chunk
文件时,如果chunk
代码改变,那么它的文件名就会改变。但是index.html
,使用chunk
代码文件的哪个不能更改其<script>
标记中的文件名,因此在这种情况下manifest.json
,由 生成的webpack-manifest-plugin
将有助于映射[name].js
到[name].[hash].js
.
但是与文档所说的相反,似乎每次我运行 webpack 来构建我的代码时,都会在其文件中生成具有新哈希值的新代码(以防代码中的某些内容发生更改),并且HTML-Webpack-Plugin
会自动注入<script>
具有新名称的标签代码的文件。这个好像没必要用webpack-manifest-plugin
,我什至看不到用在哪里manifest.json
。
如果您正在寻找我的webpack.config.js
:
const path = require('path')
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
const HTMLWebpackPlugin = require('html-webpack-plugin')
const ManifestPlugin = require('webpack-manifest-plugin')
module.exports = {
entry: ["core-js/stable", "regenerator-runtime/runtime", "./src/index.jsx"],
output: {
filename: '[name].[chunkhash].js',
path: path.resolve(`${__dirname}/build`)
},
mode: "none",
optimization: {
runtimeChunk: 'single',
splitChunks: {
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/,
name: 'vendors',
chunks: 'all'
}
}
}
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: "/node_modules",
use: ['babel-loader']
}
]
},
plugins: [
new CleanWebpackPlugin(),
new HTMLWebpackPlugin({
template: './public/index.html'
}),
new ManifestPlugin({
fileName: 'manifest.json'
})
// need this plugin for SSR?
]
}
Run Code Online (Sandbox Code Playgroud)
webpack-manifest-plugin
和的详细用法是manifest.json
什么?
jac*_*dbd 24
HtmlWebpackPlugin “知道”您的资产bundle.js
映射到,bundle.some-hash.js
因为它使用 Webpack 的Manifest。但是,不会发出此清单。它只是 Webpack 用来跟踪所有模块如何映射到输出包的数据。
WebpackManifestPlugin使用 Webpack 的清单数据数据来发出一个 JSON 文件(你可以调用它manifest.json
或任何你想要的)。
由于您将 HtmlWebpackPlugin 与inject: true选项(这是默认选项)一起使用,HtmlWebpackPlugin 会将您的包bundle.some-hash.js
注入到您的模板中。所以你可能不需要为你的应用程序使用 WebpackManifestPlugin。
如果您没有使用 HtmlWebpackPlugin,或者您将它与 一起使用inject: false
,那么您需要找到一种方法来“手动”注入 Webpack 生成的资产。
所以,这manifest.json
不适用于 Webpack。这是给你的。
例如,假设您有一个 Python Flask Web 应用程序,并且您的网页是使用Jinja模板构建的。您可以使用 Webpack 生成所有静态资产,并使用manifest.json
来解析 Webpack 生成的资产。这个 Flask 扩展就是这样做的。这意味着在你的 jinja 模板中你可以这样写:
<img src="{{ asset_for('images/hamburger.svg') }}" alt="Hamburger">
Run Code Online (Sandbox Code Playgroud)
得到这个:
<img src="images/hamburger.d2cb0dda3e8313b990e8dcf5e25d2d0f.svg" alt="Hamburger">
Run Code Online (Sandbox Code Playgroud)
另一个用例是,如果您想要精细控制将包注入模板的位置。为此,请查看html-webpack-plugin 存储库中的此示例。
归档时间: |
|
查看次数: |
8751 次 |
最近记录: |