有没有办法自动化从Assetic到gulp的迁移?

时间:2016-03-04 11:03:56

标签: symfony gruntjs gulp twig assetic

我正在开发一个使用Symfony2的项目,它碰巧使用Assetic来管理css和js。

我习惯于吞噬/授予任务但不使用Symfony,我试图找到一种系统(或自动)方式来提取我在模板中使用的资产文件,将它们分组并用适当的树枝替换树枝中的资产块替代品。

我确信像这样的工具可以节省生命,并帮助将旧项目从Assetic迁移到现代任务运行器,因为它太有限了。

有关从哪里开始的任何建议?

1 个答案:

答案 0 :(得分:2)

我从Assetic迁移到了gulp,但它不是一个自动化过程。

就我而言,我必须使用 7--1 模式更改所有前端架构。我还在Symfony项目的根目录中创建了一个gulpfile。您可以在Resources文件夹中的某个包中创建它。

假设您不想更改文件位置,我建议您按照以下步骤操作:

  • 创建package.json正在运行 npm init
  • 安装gulp,browserify和所有必需的软件包。
  • 将所有css / scss文件移至app/Resources文件夹。将资产存放在那里是一种最佳做法。例如,您可以为样式创建app/Resources/styles文件夹,为脚本创建app/Resources/scripts
  • 在根目录或某些包的Res​​ources文件夹中创建gulpfile.js。
  • 添加任务以编译scss和js文件。

    gulp.task('sass', function() {
      return gulp.src('app/Resources/styles/main.scss')
      .pipe($.sass())
      .pipe(gulp.dest('web/css/'))
    });
    
    gulp.task('browserify', function() {
      return browserify('app/Resources/scripts/main.js')
      .transform("babelify", {presets: ["es2015"]})
      .bundle()
      .pipe(source('main.js'))
      .pipe(gulp.dest('web/js'))
     });
    

当然,browserify任务会编译用ES6编写的所有javascript模块和浏览器。

最后,您可以添加观看任务,但这与问题无关。