【问题标题】:Foundation for Apps inside of LumenLumen 内的应用程序基础
【发布时间】:2015-04-24 20:46:10
【问题描述】:

我正在尝试在 Lumen(一个 php 框架)内安装 Foundation for Apps。

我很难弄清楚如何在我的 gulpfile 中配置前端路由器以创建正确的 route.js 文件。

  1. 在 localhost 上公开的文件位于 /public/index.php(加载正常)
  2. 它可以很好地加载 app.css、foundation.js、templates.js、routes.js 和 app.js,它们都在 public/build/assets(我相应地更改了 gulpfile)。

  3. 但是,routes.js 文件显示:

    [{"name":"home","url":"/","path":"client/templates/home.html"}];

代替:

[{"name":"home","url":"/","path":"build/templates/home.html"}];

我该如何解决这个问题?

我的 gulpfile 是:

// FOUNDATION FOR APPS TEMPLATE GULPFILE
// -------------------------------------
// This file processes all of the assets in the "client" folder, combines them with the Foundation for Apps assets, and outputs the finished files in the "build" folder as a finished app.

// 1. LIBRARIES
// - - - - - - - - - - - - - - -

var $        = require('gulp-load-plugins')();
var argv     = require('yargs').argv;
var gulp     = require('gulp');
var rimraf   = require('rimraf');
var router   = require('front-router');
var sequence = require('run-sequence');

// Check for --production flag
var isProduction = !!(argv.production);

// 2. FILE PATHS
// - - - - - - - - - - - - - - -

var paths = {
  assets: [
    './client/**/*.*',
    '!./client/templates/**/*.*',
    '!./client/assets/{scss,js}/**/*.*'
  ],
  // Sass will check these folders for files when you use @import.
  sass: [
    'client/assets/scss',
    'bower_components/foundation-apps/scss'
  ],
  // These files include Foundation for Apps and its dependencies
  foundationJS: [
    'bower_components/fastclick/lib/fastclick.js',
    'bower_components/viewport-units-buggyfill/viewport-units-buggyfill.js',
    'bower_components/tether/tether.js',
    'bower_components/hammerjs/hammer.js',
    'bower_components/angular/angular.js',
    'bower_components/angular-animate/angular-animate.js',
    'bower_components/angular-ui-router/release/angular-ui-router.js',
    'bower_components/foundation-apps/js/vendor/**/*.js',
    'bower_components/foundation-apps/js/angular/**/*.js',
    '!bower_components/foundation-apps/js/angular/app.js'
  ],
  // These files are for your app's JavaScript
  appJS: [
    'client/assets/js/app.js'
  ]
};

// 3. TASKS
// - - - - - - - - - - - - - - -

// Cleans the build directory
gulp.task('clean', function(cb) {
  rimraf('../public/build', cb);
});

// Copies everything in the client folder except templates, Sass, and JS
gulp.task('copy', function() {
  return gulp.src(paths.assets, {
    base: './client/'
  })
    .pipe(gulp.dest('../public/build'))
  ;
});

// Copies your app's page templates and generates URLs for them
gulp.task('copy:templates', function() {
  return gulp.src('./client/templates/**/*.html')
    .pipe(router({
      path: '../public/build/assets/js/routes.js',
      root: './client/templates'
    }))
    .pipe(gulp.dest('../public/build/templates'))
  ;
});

// Compiles the Foundation for Apps directive partials into a single JavaScript file
gulp.task('copy:foundation', function(cb) {
  gulp.src('bower_components/foundation-apps/js/angular/components/**/*.html')
    .pipe($.ngHtml2js({
      prefix: 'components/',
      moduleName: 'foundation',
      declareModule: false
    }))
    .pipe($.uglify())
    .pipe($.concat('templates.js'))
    .pipe(gulp.dest('../public/build/assets/js'))
  ;

  // Iconic SVG icons
  gulp.src('./bower_components/foundation-apps/iconic/**/*')
    .pipe(gulp.dest('../public/build/assets/img/iconic/'))
  ;

  cb();
});

// Compiles Sass
gulp.task('sass', function () {
  return gulp.src('client/assets/scss/app.scss')
    .pipe($.sass({
      includePaths: paths.sass,
      outputStyle: (isProduction ? 'compressed' : 'nested'),
      errLogToConsole: true
    }))
    .pipe($.autoprefixer({
      browsers: ['last 2 versions', 'ie 10']
    }))
    .pipe(gulp.dest('../public/build/assets/css/'))
  ;
});

// Compiles and copies the Foundation for Apps JavaScript, as well as your app's custom JS
gulp.task('uglify', ['uglify:foundation', 'uglify:app']);

gulp.task('uglify:foundation', function(cb) {
  var uglify = $.if(isProduction, $.uglify()
    .on('error', function (e) {
      console.log(e);
    }));

  return gulp.src(paths.foundationJS)
    .pipe(uglify)
    .pipe($.concat('foundation.js'))
    .pipe(gulp.dest('../public/build/assets/js/'))
  ;
});

gulp.task('uglify:app', function() {
  var uglify = $.if(isProduction, $.uglify()
    .on('error', function (e) {
      console.log(e);
    }));

  return gulp.src(paths.appJS)
    .pipe(uglify)
    .pipe($.concat('app.js'))
    .pipe(gulp.dest('../public/build/assets/js/'))
  ;
});

// RR: took this out; going to use php artisan serve
// Starts a test server, which you can view at http://localhost:8080
// gulp.task('server', ['build'], function() {
//   gulp.src('./build')
//     .pipe($.webserver({
//       port: 8080,
//       host: 'localhost',
//       fallback: 'index.html',
//       livereload: true,
//       open: true
//     }))
//   ;
// });

// Builds your entire app once, without starting a server
gulp.task('build', function(cb) {
  sequence('clean', ['copy', 'copy:foundation', 'sass', 'uglify'], 'copy:templates', cb);
});

// RR: changed to not run server
// Default task: builds your app, starts a server, and recompiles assets when they change
// gulp.task('default', ['server'], function () {
gulp.task('default', ['build'], function () {
  // Watch Sass
  gulp.watch(['./client/assets/scss/**/*', './scss/**/*'], ['sass']);

  // Watch JavaScript
  gulp.watch(['./client/assets/js/**/*', './js/**/*'], ['uglify:app']);

  // Watch static files
  gulp.watch(['./client/**/*.*', '!./client/templates/**/*.*', '!./client/assets/{scss,js}/**/*.*'], ['copy']);

  // Watch app templates
  gulp.watch(['./client/templates/**/*.html'], ['copy:templates']);
});

【问题讨论】:

    标签: laravel zurb-foundation lumen


    【解决方案1】:

    我找到了解决方法:

    1. 安装 gulp-replace

      npm install --save-dev gulp-replace
    2. 为它创建一个变量:

      var replace = require('gulp-replace');
    3. 创建一个任务。

      // RR:将 routes.js 中的路径更改为 build/templates/
      gulp.task('更新路由', function(){
        gulp.src(['../public/build/assets/js/routes.js'])
          .pipe(replace('templates', 'build/templates'))
          .pipe(gulp.dest('../public/build/assets/js/'));
      });
    4. 添加到构建任务

      gulp.task('build', function(cb) {
        sequence('clean', ['copy', 'copy:foundation', 'sass', 'uglify'], 'copy:templates', 'update-route', cb);
      });

    【讨论】:

      【解决方案2】:

      这是最终的工作 gulpfile,以防其他人需要它。我确信有更好的方法来完成这一切,但是,嘿,——它有效!

      gulpfile 位于项目名称/ffa/

      php artisan serve 在 8000 端口上运行服务器并响应 livereload。

      工作的前端目录位于 project-name/ffa/client/

      build 进入项目名称/public/build/

      // 应用程序模板 GULPFILE 的基础 // ------------------------------------- // 此文件处理“client”文件夹中的所有资产,将它们与Foundation for Apps资产组合,并将“build”文件夹中的完成文件作为完成的应用程序输出。 // 1. 库 // - - - - - - - - - - - - - - - var $ = require('gulp-load-plugins')(); var argv = require('yargs').argv; var gulp = require('gulp'); var rimraf = 要求('rimraf'); var router = require('front-router'); var sequence = require('run-sequence'); var replace = require('gulp-replace'); var livereload = require('gulp-livereload'); // 检查 --production 标志 var isProduction = !!(argv.production); // 2. 文件路径 // - - - - - - - - - - - - - - - 变量路径 = { 资产:[ '。/客户/**/*。*', '!./client/templates/**/*.*', '!./client/assets/{scss,js}/**/*.*' ], // 当你使用@import 时,Sass 会检查这些文件夹中的文件。 萨斯:[ '客户/资产/scss', 'bower_components/基础应用程序/scss' ], // 这些文件包括 Foundation for Apps 及其依赖项 基础JS:[ 'bower_components/fastclick/lib/fastclick.js', 'bower_components/viewport-units-buggyfill/viewport-units-buggyfill.js', 'bower_components/tether/tether.js', 'bower_components/hammerjs/hammer.js', 'bower_components/angular/angular.js', 'bower_components/angular-animate/angular-animate.js', 'bower_components/angular-ui-router/release/angular-ui-router.js', 'bower_components/foundation-apps/js/vendor/**/*.js', 'bower_components/foundation-apps/js/angular/**/*.js', '!bower_components/foundation-apps/js/angular/app.js' ], // 这些文件用于您应用的 JavaScript 应用程序:[ '客户端/资产/js/app.js' ] }; // 3. 任务 // - - - - - - - - - - - - - - - // 清理构建目录 gulp.task('干净',函数(cb){ rimraf('../public/build', cb); }); // 复制客户端文件夹中除模板、Sass 和 JS 之外的所有内容 gulp.task('复制', function() { 返回 gulp.src(paths.assets, { 基础:'./client/' }) .pipe(gulp.dest('../public/build')) ; }); // 复制您应用的页面模板并为其生成 URL gulp.task('copy:templates', function() { 返回 gulp.src('./client/templates/**/*.html') .pipe(路由器({ 路径:'../public/build/assets/js/routes.js', 根:'客户' })) .pipe(gulp.dest('../public/build/templates')) ; }); // RR: 将 routes.js 中的路径更改为 build/templates/ gulp.task('更新路由', function(){ gulp.src(['../public/build/assets/js/routes.js']) .pipe(replace('templates', 'build/templates')) .pipe(gulp.dest('../public/build/assets/js/')); }); // 将 Foundation for Apps 指令部分编译成单个 JavaScript 文件 gulp.task('copy:foundation', function(cb) { gulp.src('bower_components/foundation-apps/js/angular/components/**/*.html') .pipe($.ngHtml2js({ 前缀:'组件/', 模块名称:'基础', 声明模块:假 })) .pipe($.uglify()) .pipe($.concat('templates.js')) .pipe(gulp.dest('../public/build/assets/js')) ; // 标志性的 SVG 图标 gulp.src('./bower_components/foundation-apps/iconic/**/*') .pipe(gulp.dest('../public/build/assets/img/iconic/')) ; CB(); }); // 编译 Sass gulp.task('sass', function () { return gulp.src('client/assets/scss/app.scss') .pipe($.sass({ 包括路径:paths.sass, outputStyle: (isProduction ? 'compressed' : 'nested'), errLogToConsole: 真 })) .pipe($.autoprefixer({ browsers: ['last 2 versions', 'ie 10'] })) .pipe(gulp.dest('../public/build/assets/css/')) ; }); // 编译并复制 Foundation for Apps JavaScript,以及您应用的自定义 JS gulp.task('uglify', ['uglify:foundation', 'uglify:app']); gulp.task('uglify:foundation', function(cb) { var uglify = $.if(isProduction, $.uglify() .on('错误', 函数 (e) { 控制台.log(e); })); 返回 gulp.src(paths.foundationJS) .pipe(丑化) .pipe($.concat('foundation.js')) .pipe(gulp.dest('../public/build/assets/js/')) ; }); gulp.task('uglify:app', function() { var uglify = $.if(isProduction, $.uglify() .on('错误', 函数 (e) { 控制台.log(e); })); 返回 gulp.src(paths.appJS) .pipe(丑化) .pipe($.concat('app.js')) .pipe(gulp.dest('../public/build/assets/js/')) ; }); // 一次构建整个应用程序,无需启动服务器 gulp.task('build', function(cb) { sequence('clean', ['copy', 'copy:foundation', 'sass', 'uglify'], 'copy:templates', 'update-route', cb); }); // 默认任务:构建您的应用程序,并在资产更改时重新编译它们 gulp.task('default', ['build'], function () { livereload.listen(35729); // 观察萨斯 gulp.watch(['./client/assets/scss/**/*', './scss/**/*'], ['build']); // 观看 JavaScript gulp.watch(['./client/assets/js/**/*', './js/**/*'], ['build']); // 查看静态文件 gulp.watch(['./client/**/*.*', '!./client/templates/**/*.*', '!./client/assets/{scss,js}/** /*。*'], ['建造']); // 观看应用模板 gulp.watch(['./client/templates/**/*.html'], ['build']); gulp.on('停止',函数(){ livereload.changed(""); }); });

      【讨论】:

        猜你喜欢
        • 2016-02-22
        • 2016-08-24
        • 2012-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-24
        • 2015-05-26
        相关资源
        最近更新 更多