0

ヨーマンのデプロイを統合する方法を知っている人はいますか

PHP フロントエンドを使用しない PHP フレームワーク スケルトン (laravel の場合もあります)

外部ドメインとして?

このgenerator-laravelを見つけました

この件について、あなたの意見やヒントを知りたいです。ありがとう

4

1 に答える 1

3

「yeo webapp」とLaravel 4をcomposer経由で並べてインストールしました。次に、webapp www フォルダーの内容を Laravel の構造に手動で統合しました。(少し一方通行に感じたので、これを行うための自動化された反復可能な方法があるかどうか疑問に思っていますが、すべての Bower パッケージはまだ更新可能であると思います。Yeoman はジェネレーターなので、それは一方通行だと思います。 .)。

これらのファイルは webapp/www から Laravel ルート フォルダーに移動されます。

.bowerrc     [modified below]
.jshint
bower.json
Gruntfile.js [modified below]
package.json

Grunt で作成された webapp/www/dist のコンテンツは Laravel/public フォルダーと同等であるため、webapp/www/app のソースと同等のものが必要です。このために、Laravel/public-src フォルダーを作成しました。この src フォルダーから読み取るようにビルドを変更し、Laravel/public フォルダーにビルドしました。public-src フォルダーには、webapp フロントエンド ソースと Laravel エントリ ポイント (index.php、.htaccess) のマージが含まれています。

注意。ビルドすると、Laravel/public フォルダーは完全に破棄されます。そのため、grunt を実行する前に、コミットされていないファイルに注意してください。以前のすべての静的リソースが src フォルダーに移動されていることを確認してください。

.bowerrc は次のようになります。

{
    "directory": "public-src/bower_components"
}

Gruntfile の変更点は次のとおりです。

grunt.initConfig({
    // configurable paths
    yeoman: {
        app: 'public-src',
        dist: 'public'
    },
:

したがって、これにより、SASS、JS などを Laravel パブリック フォルダーにビルドできるようになります。しかし、これは静的な HTML サイトを超えてはあまり役に立ちません。明らかに構築していないか、Laravel を気にする必要はありません。そのため、フロントエンド ビルドの一部を Laravel のビュー サブフォルダーに公開する必要があります。

これは単純化されたバージョンで、something-view.php の命名規則ですべてのファイルを実行するだけですが、Laravel アプリはマスター テンプレート (ヘッダー/フッター) 構造を使用するため、フロントエンド ビルドはすべてのサブビュー (ページ本体またはモジュール) ではなく、外側のビューのみを公開します。

ここにある home-view.php は、webapp HTML の php 化されたバージョンであり、必要な PHP プレースホルダーが含まれています。

このビルド後の Laravel ビューへのパブリッシュを行うための Gruntfile の変更と、HTML の代わりに PHP ファイルをサポートする方法は次のとおりです。

    'bower-install': {
        app: {
            html: '<%= yeoman.app %>/home-view.php',
            ignorePath: '<%= yeoman.app %>/'
        }
    },

...

    useminPrepare: {
        options: {
            dest: '<%= yeoman.dist %>'
        },
        html: '<%= yeoman.app %>/*-view.php'
    },
    usemin: {
        options: {
            assetsDirs: ['<%= yeoman.dist %>']
        },
        html: ['<%= yeoman.dist %>/{,*/}*-view.php'],
        css: ['<%= yeoman.dist %>/styles/{,*/}*.css']
    },

...

    htmlmin: {
        dist: {
            files: [{
                expand: true,
                cwd: '<%= yeoman.app %>',
                src: '*-view.php',
                dest: '<%= yeoman.dist %>'
            }]
        }

...

    // Put files not handled in other tasks here
    copy: {
    ...
        // move the main view(s) into Laravel
        laravel: {
            files: [{
                expand: true,
                dot: true,
                cwd: '<%= yeoman.dist %>',
                dest: 'app/views',
                src: '*-view.php'
            },
            {
                expand: true,
                dot: true,
                cwd: '<%= yeoman.app %>',
                dest: '<%= yeoman.dist %>',
                src: 'index.php'
            }]
        }
    },

...

grunt.registerTask('build', [
...
    'usemin',
    'copy:laravel'
]);

また、Laravel/.gitignore にビルド出力の除外をいくつか追加しました

.tmp
.sass-cache
public/bower_components
public/scripts
public/styles
public-src/bower_components

(私はそれ以来、インストールされたパッケージのキャッシュされたコピーを保持することが推奨されていることを読みましたが、つまり public-src/bower_components )。

見落としがあれば申し訳ありませんが、調整すべき点はまだあります。たとえば、前述のように、ヘッダー/フッターのマスター テンプレート ビューのみを公開することを優先して、おそらくワイルドカード PHP 公開を削除します。残りの internal/body ビューは Laravel/views フォルダーから取得でき、フロントエンドの目的でビルドする必要はありません。

私は自分のコードベースをフォークし、独自のコードを削除して、共有できる作業統合のクリーンなベースを作成するつもりです。それまでは、これが私が提供できるすべてです。その助けになることを願っています。

于 2013-12-12T12:09:27.063 に答える