torann/baun-asset-manifest

Baun 插件,用于添加 gulp 资产清单助手

0.1.1 2015-10-31 17:13 UTC

This package is auto-updated.

Last update: 2024-09-08 09:28:54 UTC


README

Baun 插件,用于添加 gulp 资产清单助手

安装

在命令行中运行

$ composer require torann/baun-asset-manifest

安装完成后,您需要将插件与应用程序注册。打开 config/plugins.php 文件,添加插件命名空间。

<?php

return [

    ...

    'Torann\AssetManifest\Manifest',

];

资产目录

在您的 config/app.php 文件中添加资产目录名称,相对于 public 目录。

<?php

return [

    ...

    // Assets folder name
    'assets_dir' => 'assets',
    
];

使用 Gulp 的资产

示例 gulp 文件,当运行 gulp --env=production 时创建 manifest JSON 文件。

var gulp       = require('gulp'),
    gulpif     = require('gulp-if'),
    less       = require('gulp-less'),
    concat     = require('gulp-concat'),
    minifyCSS  = require('gulp-minify-css'),
    uglify     = require('gulp-uglify'),
    watch      = require('gulp-watch'),
    rename     = require('gulp-rename'),
    argv       = require('yargs').argv,
    prefix     = require('gulp-autoprefixer'),
    rev        = require('gulp-rev');

// Options
var options = {
    target: argv.target || 'public/assets',
    env: argv.env || 'local'
};

// Is a production build
var IS_PROD_BUILD = (options.env === 'production');

// Error catcher
function swallowError (err) {
    console.error(err);
    throw err;
}

// Compile Less and save to stylesheets directory
gulp.task('less', function () {

    var destDir = options.target + '/css/',
        destFile = 'app.css';

    return gulp.src('resources/assets/less/app.less')
        .pipe(less())
        .on('error', swallowError)
        .pipe(prefix('last 2 versions', '> 1%', 'Explorer 7', 'Android 2'))
        .pipe(gulpif(IS_PROD_BUILD, minifyCSS()))
        .pipe(rename(destFile))
        .pipe(gulp.dest(destDir));
});

// Publish JavaScript
gulp.task('scripts', function () {

    var destDir = options.target + '/js/',
        destFile = 'app.js';

    return gulp.src([
            'resources/assets/js/main.js'
        ])
        .on('error', swallowError)
        .pipe(concat(destFile))
        .pipe(gulpif(IS_PROD_BUILD, uglify()))
        .pipe(gulp.dest(destDir));
});

// What tasks does running gulp trigger?
gulp.task('default', ['build']);

gulp.task('watch', ['build'], function() {
    gulp.watch('resources/assets/less/**/*.less', ['less']);
    gulp.watch('resources/assets/js/**/*.js', ['scripts']);
});

gulp.task('build', ['less', 'scripts'], function () {
    // Create manifest of assets
    if (IS_PROD_BUILD) {
        return gulp.src(options.target + '/**/*.{css,js}')
            .pipe(gulp.dest(options.target))
            .pipe(rev())
            .pipe(gulp.dest(options.target))
            .pipe(rev.manifest())
            .pipe(gulp.dest('./'));
    }
});

用法

在模板内部,您可以使用 {{ asset('css/app.css') }} 简单地从清单文件获取资产。

<link rel="stylesheet" href="{{ asset('css/app.css') }}">