Magento 2はCSS grunt-autoprefixerとどのように連携しますか


9

Magento 2(v2.1.8)の新規インストールを見るGruntfile.jspackage.json、Magentoがgrunt-autoprefixerを使用していることがファイルとファイルからわかります

  1. これはすばらしいです。CSSオートプレフィックスは本当に便利です。しかし、MagentoのGruntfileでそれを使用する方法がわかりません。
  2. また、これはライブ環境のプロダクションモードでどのように機能しますか?Magento2はプロダクションモードでPHP LESSコンパイラを使用しませんが、Gruntは開発に使用されているだけです。

Gruntfile.js

/**
 * Production preparation task.
 */
prod: function (component) {
    var tasks = [
        'less',
        'autoprefixer',
        'cssmin',
        'usebanner'
    ]

package.json

"devDependencies": {
    "glob": "^5.0.14",
    "grunt": "^0.4.5",
    "grunt-autoprefixer": "^2.0.0",

私は走りましたgrunt autoprefixer、そしてそれはまた働くようではないようです。

$ grunt autoprefixer
Running "autoprefixer:setup" (autoprefixer) task
Autoprefixer's process() method is deprecated and will removed in next major release. Use postcss([autoprefixer]).process() instead
File setup/pub/styles/setup.css created.

Running "autoprefixer:updater" (autoprefixer) task
Warning: No source files were found. Use --force to continue.

Aborted due to warnings.


Execution Time (2017-10-29 11:12:01 UTC-0)
loading tasks               145ms  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 30%
loading grunt-autoprefixer  118ms  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 24%
autoprefixer:setup          216ms  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 45%
autoprefixer:updater          5ms  ▇▇ 1%
Total 485ms

回答:


5
  1. カスタマイズdev/tools/grunt/configs/autoprefixer.jsonして実行しgrunt autoprefixerます。
  2. 展開パイプラインで手動で設定する必要があります。b/ c MagentoからGruntタスクを実行する方法はありません。

実行grunt autoprefixerは、メッセージで完了せずに中止されましたAutoprefixer's process() method is deprecated and will removed in next major release. Use postcss([autoprefixer]).process() instead。Magentoが自動プレフィックスをまったくサポートしていないことを示唆しているのはどれですか?
ホリー

Gruntがデプロイメントパイプラインで実行するように設定されていても、管理ユーザーがCSSキャッシュをクリアすると、信頼性がなくなります。
Holly

また、.jsonファイルにグラントタスクを設定するにはどうすればよいですか?Gruntを.jsファイルに設定する必要はありません
Holly

1.動作します。これは非推奨の警告です。下の数行には、処理されたファイルに関する情報があります。
igloczek 2017年

2.キャッシュはpubテーマディレクトリ内のファイルを削除しないため、100%安全です。
igloczek 2017年

5

上記の変更を行ってください。うまくいくと思います。

package.json

{
  "name": "Project",
  "author": "Vendor",
  "description": "Node modules dependencies for local development",
  "version": "2.0.0",
  "license": "(OSL-3.0 OR AFL-3.0)",
  "repository": {
    "type": "git",
    "url": "https://github.com/magento/magento2.git"
  },
  "homepage": "http://magento.com/",
  "devDependencies": {
    "autoprefixer": "^7.1.1",
    "glob": "^5.0.14",
    "grunt": "^0.4.5",
    "grunt-banner": "^0.4.0",
    "grunt-contrib-clean": "^0.6.0",
    "grunt-contrib-connect": "^0.9.0",
    "grunt-contrib-cssmin": "^0.10.0",
    "grunt-contrib-imagemin": "^0.9.2",
    "grunt-contrib-jasmine": "^0.8.1",
    "grunt-contrib-less": "^0.12.0",
    "grunt-contrib-watch": "^0.6.1",
    "grunt-eslint": "17.3.1",
    "grunt-exec": "^0.4.6",
    "grunt-jscs": "2.2.0",
    "grunt-postcss": "^0.8.0",
    "grunt-replace": "^0.9.2",
    "grunt-styledocco": "^0.1.4",
    "grunt-template-jasmine-requirejs": "^0.2.3",
    "grunt-text-replace": "^0.4.0",
    "imagemin-svgo": "^4.0.1",
    "load-grunt-config": "^0.16.0",
    "morgan": "^1.5.0",
    "node-minify": "^1.0.1",
    "path": "^0.11.14",
    "serve-static": "^1.7.1",
    "strip-json-comments": "^1.0.2",
    "time-grunt": "^1.0.0",
    "underscore": "^1.7.0"
  },
  "engines": {
    "node": ">=0.10.0"
  }
}

postcss.js

/**
 * PostCSS autoprefixer initialisation
 *
 * Docs: https://github.com/postcss/autoprefixer
 * Config: dev/tools/grunt/configs/postcss.json
 * Usage: grunt autoprefixer:themename [--verbose] [--debug]
 * To do: load src from themes.js
 *
 * @param grunt
 */

module.exports = function(grunt) {
    grunt.loadNpmTasks('grunt-postcss');

    grunt.registerTask('autoprefixer', function (target) {
        var currentTarget = target || 'dist';

        /*** configuration tweaks ***/
        var config = grunt.config.get('postcss');

        // set 'processors' options (not possible to set function in json config)
        config['options'].processors = [require('autoprefixer')({browsers: ['last 2 versions']})];

        // apply theme source and destination dynamically
        if (target) {
            config[target] = {
                src: ['pub/static/frontend/*/'+target+'/*/css/*.css']
            };
        }
        grunt.config.set('postcss', config);

        grunt.option('force', true);
        grunt.task.run('postcss:'+currentTarget);
    });
};

postcss.json

{
    "options": {
        "map": true
    },
    "dist": {
      "src": ["pub/static/frontend/*/*/*/css/*.css"]
    }
}

上記のファイルを設定した後、実行します grunt autoprefixer


これをPRとしてコアに送信し、現在の古いセットアップを置き換えます
igloczek

0

誰にとっても明確にするために:postcss.js&postcss.json-/ dev / tools / grunt / configs package.jsonに移動します-Webサイトのルートにあります-devDependenciesの下にautoprefixerが含まれていることを確認してください

完了したら、通常の方法でexec / less / watch / setupを実行します。

次に、ブラウザーでWebサイトにアクセスして、CSSキャッシュファイルを作成します。

次に、実行:grunt autoprefixer

これにより、結果のcssファイルがチェックされ、-webkit-およびその他のブラウザーサポートが追加されます。

これは開発に適した修正ですが、本番環境でこれを使用する方法はわかりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.