You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用@wordpress/scripts时,npm run build为何不生成*.asset.php文件?

解决Gutenberg区块构建时block.asset.php无法生成的问题

核心原因

@wordpress/scripts默认靠DependencyExtractionWebpackPlugin生成.asset.php文件,但你的自定义webpack配置要么覆盖了默认插件,要么entry/output的设置不符合插件预期,导致文件生成失败。

具体修复步骤

1. 恢复默认的asset生成插件

你直接重写了plugins数组,把默认的DependencyExtractionWebpackPlugin给丢了。修改plugins配置,合并默认插件:

plugins: [
    ...defaultConfig.plugins, // 保留默认插件,包括生成asset.php的核心插件
    new MiniCssExtractPlugin({
        filename: './css/[name].css'
    })
],

2. 调整entry结构,不要单独把样式作为entry

@wordpress/scripts默认会通过区块JS文件导入样式来处理样式提取,没必要把style-front和style-editor单独作为entry。把样式导入到对应的区块JS里,比如在section-block.js里加:

import './css/style-editor.scss';
import './css/style-front.scss';

然后删掉entry里的style-front和style-editor项。

3. 修正output配置,保留默认参数

你的output直接覆盖了所有默认配置,可能导致插件找不到文件位置。改成只修改需要的部分:

output: {
    ...defaultConfig.output,
    path: path.join(__dirname, './build/'),
    filename: './blocks/[name].js'
},

4. 对齐block.json的script字段

每个区块的block.json里的script字段要和entry文件名对应,比如cgbms-section-block对应的block.json要写:

{
    "script": "file:./blocks/cgbms-section-block.js"
}

5. 移除自定义externals

@wordpress/scripts已经默认处理了WordPress依赖的externals,手动添加反而可能冲突。删掉这段:

// externals: { 
//     '@wordpress/blocks': 'wp.blocks',
//     '@wordpress/block-editor': 'wp.blockEditor' 
// },

测试

改完配置后跑npm run build,去build/blocks目录下看有没有生成对应的*.asset.php文件。要是还不行,删掉node_modules和package-lock.json,重新装依赖再构建。

内容的提问来源于stack exchange,提问作者Mateusz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 17:25:29