質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.92%

webpack + autoprefixerでベンダープレフィックス付与させたい。

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 125

AkihiroH

score 10

package.json

{
  "name": "starter-theme",
  "version": "1.0.0",
  "description": "",
  "private": true,
  "scripts": {
    "build": "webpack --mode=production",
    "build:dev": "webpack --mode=development --watch"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.7.7",
    "@babel/preset-env": "^7.7.7",
    "autoprefixer": "^9.8.4",
    "babel-loader": "^8.0.6",
    "css-loader": "^3.4.0",
    "jquery": "^3.4.1",
    "mini-css-extract-plugin": "^0.9.0",
    "node-sass": "^4.13.0",
    "optimize-css-assets-webpack-plugin": "^5.0.3",
    "postcss-loader": "^3.0.0",
    "sass-loader": "^8.0.0",
    "style-loader": "^1.1.2",
    "terser-webpack-plugin": "^2.3.1",
    "webpack": "^4.41.5",
    "webpack-cli": "^3.3.10"
  }
}


webpack.config.js

const path = require("path");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const TerserPlugin = require("terser-webpack-plugin");
const OptimizeCssAssetsPlugin = require("optimize-css-assets-webpack-plugin");

module.exports = (env, argv) => ({
  watch: true,
  entry: "./assets/js/src/index.js",
  output: {
    filename: "bundle.js",
    path: path.resolve(__dirname, "assets/js"),
  },

  // 最適化オプションを上書き
  optimization: {
    minimizer: [new TerserPlugin({}), new OptimizeCssAssetsPlugin({})],
  },

  // ソースマップの設定
  devtool: "source-map",

  module: {
    rules: [
      // babel-loaderの設定
      {
        test: /\.js$/,
        use: [
          {
            loader: "babel-loader",
            options: {
              presets: ["@babel/preset-env"],
            },
          },
        ],
        exclude: /node_modules/,
      },
      // css/sass-loaderの設定
      {
        test: /\.(sa|sc|c)ss$/,
        use: [
          MiniCssExtractPlugin.loader,
          {
            loader: "css-loader",
            options: {
              url: false,
              sourceMap: true,
            },
          },
          "sass-loader",
        ],
      },
      // PostCSSのための設定
      {
        loader: "postcss-loader",
        options: {
          // PostCSS側でもソースマップを有効にする
          sourceMap: true,
          plugins: [
            // Autoprefixerを有効化
            // ベンダープレフィックスを自動付与する
            require("autoprefixer")({
              grid: true
            })
          ]
        }
      }
    ],
  },

  plugins: [
    new MiniCssExtractPlugin({
      filename: "../styles/bundle.css",
    }),
  ],
});
npm run build:dev                                                        

> starter-theme@1.0.0 build:dev /Users/akihirohanai/My_project/3_ugr.hokkaido.jp/app/wp-content/themes/ver.3_theme
> webpack --mode=development --watch


webpack is watching the files…

Hash: 983db68a01c30db0ca32
Version: webpack 4.41.5
Time: 152ms
Built at: 2020/07/07 15:33:30
        Asset      Size  Chunks                   Chunk Names
    bundle.js  4.38 KiB    main  [emitted]        main
bundle.js.map  3.53 KiB    main  [emitted] [dev]  main
Entrypoint main = bundle.js bundle.js.map
[./assets/js/src/index.js] 591 bytes {main} [built] [failed] [1 error]

ERROR in ./assets/js/src/index.js
Module build failed (from ./node_modules/postcss-loader/src/index.js):
SyntaxError

(1:1) Unknown word

> 1 | import "../../styles/src/style.scss";
    | ^
  2 | import $ from "jquery";
  3 | import { slickslide } from "./modules/slick";

ちなみに、index.jsは以下の通り

import "../../styles/src/style.scss";
import $ from "jquery";
import { slickslide } from "./modules/slick";

slickslide();

webpack.config.jsの下記の記述を消すとエラーは起きません。

webpack.config.js

// PostCSSのための設定
     {
        loader: "postcss-loader",
        options: {
          // PostCSS側でもソースマップを有効にする
          sourceMap: true,
          plugins: [
            // Autoprefixerを有効化
            // ベンダープレフィックスを自動付与する
            require("autoprefixer")({
              grid: true
            })
          ]
        }
      }

タイトルの通り、webpack + autoprefixerでベンダープレフィックス付与させたいのですが、webpack.config.jsの記述方法をご教示頂けませんでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る