フロントエンドエンジニアリング--webpack 4.xの基本構成:基本リソースのパッケージング、ES 6変換、ホット・アップデート
6124 ワード
Webpackはwebフロントエンドで現在最も流行している造化構築ツールである.フロントエンドの各種資源を自動的にパッケージ構築することができ、詳細は公式サイトに見ることができる.https://doc.webpack-china.org/
この記事では、フロントエンドのエンジニアリングの過程で、必要なwebpack構成について基本的な紹介を行い、html、css、sass、js(ES 6対応)、imagesを自動化し、ホットアップデートを実現する独自の構成を示します.
一.基本取付
1.nodeをインストールする.js
公式サイトのダウンロードアドレス:https://nodejs.org/en/.ダウンロードが完了したら、バカなインストールを行います.
2.プロジェクトルートディレクトリ新規package.jsonファイルは、添付2の内容をコピーする.(プログラムをD:/projectに入れると、プロジェクトルートディレクトリはD:/projectになります)
3.プロジェクトのルートディレクトリの下にwebpackがない場合.config.jsファイル、空の同名ファイルを新規作成し、ルートディレクトリに配置します.添付1の内容をコピー
4.プロジェクトルートの下に新規作成する.babelrc、添付3の内容をコピーします.
5.コマンドラインに入り、Windowsの下で同時にWindows+Rを押し、cmdを入力し、車に戻る
D:/projectの下に入るなど、プロジェクトディレクトリ(以下、ローカル、つまりプロジェクトディレクトリに入る)に入ります.
コマンドライン入力D:リターン
コマンドライン入力cd projectリターン
6.コマンドライングローバルインストールwebpack:コマンドライン入力、リターン
npm i webpack -g
7.node-sassをローカルにインストールします.このパッケージはnpmインストールを実現できません.インストール方法は以下の通りです.
(1)node-sassのgithubホームページへのダウンロード:https://github.com/sass/node-sass/releases
自分のオペレーティングシステムのnode接尾辞のバージョンを選んで、例えばwindows 32ビットオペレーティングシステムで、ダウンロードします
win32-ia32-57.Node、プロジェクトルートディレクトリにファイルを配置
(2)コマンドライン実行
npm i node-sass--save-dev --sass_binary_path=./win32-ia32-57.node,
このインストールが完了すると、npm i-–save-dev node-sass方式でインストールできます.
8.現在のディレクトリ、コマンドライン実行npm i
二.実行、リアルタイム更新方法
コマンドラインが現在のディレクトリに入る、npm startを実行する、などのコマンド実行が終了し、プロンプトに従ってブラウザで該当アドレスを開く.ブラウザに該当するページが表示され、コードでhtmlまたはcssまたはjsを変更し、保存した後、ブラウザで直接結果を表示できます.
三.パッケージ化、オンラインパブリッシュ
コマンドラインは、現在のディレクトリに入る、npm runbuildを実行する、すなわち、現在のディレクトリの下でdistディレクトリを生成する.中のファイルが公開されます
四.注意事項:
1.入口jsはsrc/js/indexである.js
2.元のhtmlファイルからの削除とラベル
3.cssファイルの導入方法
src/js/index.jsに導入
例:
import ‘../css/normalize.css’
import ‘../css/default.css’
導入順序は最終cssがhtmlに導入する順序に影響する
4.エントリjsに他のjsファイルを導入する方法
ここではES 6のimportとexportの詳細を参照することをお勧めします.
http://es6.ruanyifeng.com/#docs/module
五.最終的な効果:
元のディレクトリはsrcで、以下に大量のcssとjsファイルが含まれています.
パッケージ化後はdistディレクトリで、パッケージ化後のcssとjsファイルが含まれています.
付1:webpack.config.js内容:
附2:package.jsonコンテンツ
付3:
--ByPY
この記事では、フロントエンドのエンジニアリングの過程で、必要なwebpack構成について基本的な紹介を行い、html、css、sass、js(ES 6対応)、imagesを自動化し、ホットアップデートを実現する独自の構成を示します.
一.基本取付
1.nodeをインストールする.js
公式サイトのダウンロードアドレス:https://nodejs.org/en/.ダウンロードが完了したら、バカなインストールを行います.
2.プロジェクトルートディレクトリ新規package.jsonファイルは、添付2の内容をコピーする.(プログラムをD:/projectに入れると、プロジェクトルートディレクトリはD:/projectになります)
3.プロジェクトのルートディレクトリの下にwebpackがない場合.config.jsファイル、空の同名ファイルを新規作成し、ルートディレクトリに配置します.添付1の内容をコピー
4.プロジェクトルートの下に新規作成する.babelrc、添付3の内容をコピーします.
5.コマンドラインに入り、Windowsの下で同時にWindows+Rを押し、cmdを入力し、車に戻る
D:/projectの下に入るなど、プロジェクトディレクトリ(以下、ローカル、つまりプロジェクトディレクトリに入る)に入ります.
コマンドライン入力D:リターン
コマンドライン入力cd projectリターン
6.コマンドライングローバルインストールwebpack:コマンドライン入力、リターン
npm i webpack -g
7.node-sassをローカルにインストールします.このパッケージはnpmインストールを実現できません.インストール方法は以下の通りです.
(1)node-sassのgithubホームページへのダウンロード:https://github.com/sass/node-sass/releases
自分のオペレーティングシステムのnode接尾辞のバージョンを選んで、例えばwindows 32ビットオペレーティングシステムで、ダウンロードします
win32-ia32-57.Node、プロジェクトルートディレクトリにファイルを配置
(2)コマンドライン実行
npm i node-sass--save-dev --sass_binary_path=./win32-ia32-57.node,
このインストールが完了すると、npm i-–save-dev node-sass方式でインストールできます.
8.現在のディレクトリ、コマンドライン実行npm i
二.実行、リアルタイム更新方法
コマンドラインが現在のディレクトリに入る、npm startを実行する、などのコマンド実行が終了し、プロンプトに従ってブラウザで該当アドレスを開く.ブラウザに該当するページが表示され、コードでhtmlまたはcssまたはjsを変更し、保存した後、ブラウザで直接結果を表示できます.
三.パッケージ化、オンラインパブリッシュ
コマンドラインは、現在のディレクトリに入る、npm runbuildを実行する、すなわち、現在のディレクトリの下でdistディレクトリを生成する.中のファイルが公開されます
四.注意事項:
1.入口jsはsrc/js/indexである.js
2.元のhtmlファイルからの削除とラベル
3.cssファイルの導入方法
src/js/index.jsに導入
例:
import ‘../css/normalize.css’
import ‘../css/default.css’
導入順序は最終cssがhtmlに導入する順序に影響する
4.エントリjsに他のjsファイルを導入する方法
ここではES 6のimportとexportの詳細を参照することをお勧めします.
http://es6.ruanyifeng.com/#docs/module
五.最終的な効果:
元のディレクトリはsrcで、以下に大量のcssとjsファイルが含まれています.
パッケージ化後はdistディレクトリで、パッケージ化後のcssとjsファイルが含まれています.
付1:webpack.config.js内容:
const path =require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const extractCSS = new ExtractTextPlugin('css/[name]-css.css');
const extractSASS = new ExtractTextPlugin('css/[name]-sass.css');
// dist
const CleanWebpackPlugin = require('clean-webpack-plugin');
module.exports={
entry:'./src/js/index.js',// JS
output:{
filename:'bundle.js',
path:path.resolve(__dirname,'./dist')
},
module:{
rules:[
{
test:/\.css$/,
use: extractCSS.extract({
use: "css-loader",
fallback: "style-loader"
})
},
{
test:/\.scss$/,
use: extractSASS.extract({
use: [
{loader: "css-loader"},
{loader: "sass-loader"}
],
fallback: "style-loader"
})
},
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options:{
cacheDirectory:true//
}
}
},
{ // css
test: /\.(png|jpg|gif|jpeg)$/,
use: [
{
loader: 'url-loader',
options: {
limit: 8192, // 8KB, base64
name:'img/[name].[ext]', //
publicPath:'../' // ,
}
}
]
}
]
},
plugins: [
new HtmlWebpackPlugin(
{
template: './src/index.html',//
filename: 'index.html'
}
),
new CopyWebpackPlugin([
{from:'./src/img',to:'./img'}
]),
extractCSS,
extractSASS,
new CleanWebpackPlugin(['dist','build'],{
verbose:false,
exclude:['img']// img
})
]
}
附2:package.jsonコンテンツ
{
"name": "webpack-test",
"version": "1.0.0",
"description": "null",
"keywords": [],
"author": "py",
"scripts": {
"dev": "webpack-dev-server --mode development",
"start": "npm run dev",
"build": "webpack --mode production"
},
"devDependencies": {
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-preset-env": "^1.6.1",
"clean-webpack-plugin": "^0.1.17",
"copy-webpack-plugin": "^4.5.1",
"css-loader": "^0.28.8",
"extract-text-webpack-plugin": "^4.0.0-beta.0",
"file-loader": "^1.1.11",
"html-webpack-plugin": "^3.0.6",
"node-sass": "^4.8.3",
"sass-loader": "^6.0.6",
"style-loader": "^0.20.3",
"url-loader": "^1.0.1",
"webpack": "^4.2.0",
"webpack-cli": "^2.0.12",
"webpack-dev-server": "^3.1.1"
},
"dependencies": {}
}
付3:
{
"presets": [
["env", {
"targets": {
"browsers": ["last 2 versions", "not ie <= 8"]
}
}]
]
}
--ByPY