Webpack4 で React環境を整える(sassも)
2018年3月25日Webpack3で、開発するのに慣れていたんだが、知らぬ間にVer4のwebpackが出ている。 webpack4からは、コンフィグレスを目指しているみたいだけど、コンフィグも多少いるし、Ver3とは書き方がずいぶん替わっているので、軽くまとめておく。 開発フォルダ作成 [bash] cd ~/ mkdir workspace mkdir wp4react cd workspace/wp4react npm init -y mkdir dist src mkdir src/components [/bash] 開発用パッケージの導入 [bash] npm i -D babel-core babel-loader babel-preset-env babel-preset-react npm i -D webpack webpack-cli webpack-dev-server [/bash] 必要パッケージの導入 [bash] npm i -S react react-dom [/bash] package.jsonの調整 testだけになっているところに、buildとstart を追加。 これで、 npm run build/ npm run start が使えるようになる。 [bash] “scripts”: { “test”: “echo \”Error: no test specified\” && exit 1″, “build”: “webpack”, “start”: “webpack-dev-server –history-api-fallback” }, [/bash] webpack.config.jsの調整 ルートフォルダにwebpack.config.jsファイルを作成します。 ここで、reactが動作するための最低限の設定を書きます。 (結局、設定ファイルいるじゃん、、、というのはさておき。) CSSやSCSSを読みこんだり、画像ファイルを読み込むところはまだ、調べていないのであしからず。 [bash] module.exports = { mode: ‘development’, entry: ‘./src/main.js’, output: { path: `${__dirname}/dist`, filename: ‘main.js’ }, module: { rules: [ { test: /\.js$/, use: [ { loader: ‘babel-loader’, options: { presets: [ [‘env’, {‘modules’: false}], ‘react’ ] } } ], exclude: /node_modules/, } ] }, devServer: { contentBase: “dist”, open: true } }; [/bash] Reactの極小アプリを作る wp4react/src/main.js [bash] import React from “react” import ReactDOM from “react-dom” import HelloComp from “./components/HelloComp” document.write(“ “) ReactDOM.render ( , document.getElementById(“root”) ) [/bash] wp4react/src/components/HelloComp.js [bash] import React from “react” class HelloComp extends React.Component { render () { return ( Hello world!! ) } } export default HelloComp [/bash] wp4react/dist/index.html [bash] react wp4 test [/bash] 動作検証 http://localhost:8080がブラウザーで起動します。 [bash] npm run start [/bash] Sassファイルもインクルード sassも一緒に開発するのが普通なので、そのために必要な処理を列記しておきます。 開発用パッケージの導入 [bash] npm i -D sass-loader node-sass style-loader css-loader [/bash] [bash] cd ~/workspace/wp4react/src mkdir sass [/bash] Sassのサンプルコード挿入 wp4react/src/sass/common.scss [bash] @import ‘./modules/first.scss’; [/bash] wp4react/src/sass/modules/first.scss [bash] .hello_sass { font-size: 20px; color: #8372ff; } [/bash] webpack.config.jsで sassを読み込めるように [bash] const MODE = ‘development’ const enableSourceMap = (MODE === ‘development’) module.exports = { mode: MODE, entry: ‘./src/main.js’, output: { path: `${__dirname}/dist`, filename: ‘main.js’ }, module: { rules: [ { test: /\.js$/, use: [ { loader: ‘babel-loader’, options: { presets: [ [‘env’, {‘modules’: false}], ‘react’ ] } } ], exclude: /node_modules/, }, { test: /\.scss/, use: [ ‘style-loader’, { loader: ‘css-loader’, options: { url: false, sourceMap: enableSourceMap, importLoaders: 2 }…
Leave a comment