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

PHP项目中借助Composer、npm、Gulp如何正确配置TinyMCE?

使用Gulp复制TinyMCE到项目指定目录的完整方案

既然你已经在用npm+Gulp管理CoreUI,用Gulp来处理TinyMCE的资源复制确实是更贴合现有工作流的选择,比用Composer处理前端资源更合理。我来帮你一步步搞定这个问题:

第一步:确认Gulp环境就绪

首先确保你的项目里已经安装了Gulp相关依赖,如果之前操作失败,先检查这一步:

  • 全局安装Gulp CLI(如果没装过):npm install -g gulp-cli
  • 项目内安装Gulp核心包:npm install gulp --save-dev

第二步:明确需要复制的TinyMCE文件

TinyMCE在node_modules/tinymce/里的核心资源是这些,缺一不可(按需取舍插件):

  • 核心JS文件:tinymce.min.js(位于node_modules/tinymce/js/tinymce/)
  • 主题文件:themes/目录(默认用silver主题,必须复制,不然编辑器没有基础样式)
  • 皮肤样式:skins/目录(控制编辑器的外观,比如按钮、工具栏的样式)
  • 插件(可选):plugins/目录下的你需要的插件,比如advlist、autolink、lists这些常用插件,如果用不到可以只复制需要的,减少体积。

第三步:编写Gulp复制任务

在项目根目录的gulpfile.js里添加以下任务代码:

const gulp = require('gulp');

// 复制TinyMCE资源的任务
function copyTinyMce() {
  // 选择需要复制的文件/目录
  return gulp.src([
    'node_modules/tinymce/js/tinymce/tinymce.min.js',
    'node_modules/tinymce/themes/**/*',
    'node_modules/tinymce/skins/**/*',
    // 如果需要插件,取消下面的注释并添加你需要的插件
    // 'node_modules/tinymce/plugins/advlist/**/*',
    // 'node_modules/tinymce/plugins/autolink/**/*',
    // 'node_modules/tinymce/plugins/lists/**/*'
  ], { base: 'node_modules/tinymce/' }) // 保留原目录结构
  .pipe(gulp.dest('public/assets/tinymce/')); // 替换成你项目里的目标目录,比如assets/tinymce
}

// 导出任务,方便单独执行
exports.copyTinyMce = copyTinyMce;

// 可选:把复制任务加到build/watch任务里,自动执行
// exports.build = gulp.series(copyTinyMce, yourExistingBuildTasks);
// exports.watch = gulp.parallel(copyTinyMce, yourExistingWatchTasks);

第四步:运行任务并验证

  • 单独执行复制任务:在终端运行 gulp copyTinyMce
  • 执行后去你指定的目标目录(比如public/assets/tinymce/)检查,应该能看到复制过来的js/、themes/、skins/等目录和文件。

常见问题排查

如果之前操作失败,大概率是这几个原因:

  1. 路径错误:检查gulp.src里的源路径和gulp.dest的目标路径是否和你的项目结构匹配,比如如果你的前端资源放在resources/assets/而不是public/assets/,要改对应路径。
  2. 文件选择器问题:用**/*来匹配目录下的所有子文件和子目录,确保不会遗漏资源。
  3. Gulp版本问题:如果是Gulp 4.x,任务写法和3.x不同,上面的代码是Gulp 4.x的写法,如果你用的是3.x,需要调整为gulp.task('copyTinyMce', function() { ... })的格式。

在项目中引用TinyMCE

复制完成后,你就可以在HTML/PHP文件里正常引用了,比如:

<script src="/assets/tinymce/js/tinymce/tinymce.min.js"></script>
<script>
  tinymce.init({
    selector: '#your-editor-id',
    theme: 'silver',
    plugins: 'advlist autolink lists' // 对应你复制的插件
  });
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:29:51