Webpackで React(ES6)+SASS(SCSS) をコンパイルして開発する最小限の環境を作る

Webpackで React(ES6)+SASS(SCSS) をコンパイルして開発する最小限の環境を作る

Webpackで React(ES6)+SASS(SCSS) をコンパイルして開発する最小限の環境を作る

Webpackで React(ES6)+SASS(SCSS) をコンパイルして開発する最小限の環境を作る へのコメントはまだありません

はじめに

ReactでSPAを作るようになりました。
Webpackで開発環境を作るわけですが、Reactの ES6(JSX)をコンパイルして、
デザイナーさんから上がってきたSASS(SCSS)をコンパイルしたい。
Webで探してもぴったりくる情報が少なかったので、両方のコンパイルが出来て、
テストできる最小限の環境を作る方法を記載してみます。

出来上がりのファイルツリーのイメージ

だいたいこんなイメージで・・・
成果物がdist配下に配置される感じですね。

wp-1

作業フォルダ作成

[bash]
$ mkdir sass_react
$ cd sass_react/
$ npm init -y
[/bash]

パッケージのインストール

npmで必要なパッケージをインストールします。

[bash]
$ npm install –save react react-dom
$ npm install –save-dev babel-core babel-loader babel-preset-es2015 babel-preset-react webpack webpack-dev-server
$ npm install –save-dev webpack extract-text-webpack-plugin css-loader sass-loader style-loader node-sass file-loader
[/bash]

エントリーポイントとなるJavaScript作成

scssをインポートするところがポイントです。

index.js
[bash]
import React from “react”
import {render} from “react-dom”
import App from “./components/App”
//scssのコンパイル
import “./sass/style.scss”

document.write(“

“);

render (
,
document.getElementById(“root”)
)

[/bash]

アプリ画面のトップページ作成

components/App.js
[bash]
import React from “react”

const App = () => {
return (

This is React Scss App

)
}

export default App

[/bash]

エントリーポイントとなるHTML

./main.css や ./main.bundle.js
というような相対パスではなく、絶対パスで書くことがポイント!
(react routerなどで、パラメーターを渡したパスを起動するときに、エラーが出てハマりますので・・・)

dist/index.html
[bash]




React Scssコンパイル


[/bash]

SASSのファイル

sass/style.scss
[bash]
div.contents{
margin-top: 30px;
div.menus {
padding: 20px;
label {
background-color: #45cc77;
}
}
}

[/bash]

webpack.config.js

webpack.config.js
[bash]
var path = require(‘path’);
var webpack = require(‘webpack’);
const ExtractTextPlugin = require(‘extract-text-webpack-plugin’);

module.exports = {
entry: {
main: ‘./index.js’,
},
output: {
path: path.join(__dirname, ‘dist’),
filename: “[name].bundle.js”
},
module: {
loaders: [
{
test: /\.js[x]?$/,
loader: ‘babel-loader’,
exclude: /node_modules/,
query: {
presets: [‘es2015’, ‘react’]
}
},
{
test: /\.jpe?g$|\.gif$|\.png$|\.svg$|\.woff$|\.ttf$|\.wav$|\.mp3$/,
loader: “file-loader?name=images/[name].[ext]”
},
{
test: /\.scss$/,
loader: ExtractTextPlugin.extract(‘css-loader!sass-loader’),
},
]
},
plugins: [
new ExtractTextPlugin({ filename: ‘[name].css’, allChunks: true }),
],
resolve: {
extensions: [‘.js’, ‘.jsx’]
},
devServer: {
inline: true,
hot: true
}
}

[/bash]

ES6、SCSSコンパイル

[bash]
$ ./node_modules/.bin/webpack
[/bash]

distフォルダ配下に main.bundle.jsとmain.cssが出来ていれば成功です。

wp-1

package.jsonの調整

scriptsのところに startとbuildを追加
package.json
[bash]

{
“name”: “sass_react”,
“version”: “1.0.0”,
“description”: “”,
“main”: “index.js”,
“scripts”: {
“test”: “echo \”Error: no test specified\” && exit 1″,
“start”: “webpack-dev-server –content-base dist/ –hot –inline –progress –colors”,
“build”: “webpack –progress –colors”
},

[/bash]

動作検証

[bash]
$ npm start
[/bash]

ブラウザーで “http://localhost:8080”

で、以下のようなページが表示されれば、ES6のコンパイルとSCSSのコンパイルは成功です。
wp-2

About the author:

Related Posts

Leave a comment

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

Back to Top