웹팩의 중요한 기능인 Plugins에 대해 간단히 이야기하다
4945 단어 webpack
플러그인(Plugins)은 웹 패키지 기능을 확장하는 데 사용되며 전체 구축 과정에서 효력이 발생하여 관련 작업을 수행합니다.Loaders와 Plugins는 자주 헷갈리지만, 그들은 완전히 다른 것이다. Loaders는 패키지 구축 과정에서 원본 파일을 처리하는 데 사용된다. (JSX, Scss, Less.)한 번에 하나씩 처리하기;플러그인은 하나의 파일을 직접 조작하지 않으며, 전체 구축 과정에 직접적으로 작용한다.
웹 패키지에는 내장된 플러그인도 많고 제3자 플러그인도 많아서 우리가 더욱 풍부한 기능을 완성할 수 있다.
1. 플러그인을 사용하는 방법
어떤 플러그인을 사용하려면 npm를 통해 설치한 다음 웹 패키지에 설치해야 합니다.config.js의plugins 키워드 부분에 이 플러그인을 추가하는 실례 (plugins는 하나의 그룹이고 new는 하나의 플러그인입니다.)
저작권 공지를 위한 플러그인을 추가하는 경우:
module.exports = {
devtool: 'eval-source-map',
entry: __dirname + "/app/main.js",
output: {...},
module: {
loaders: [
{ test: /\.json$/, loader: "json" },
{ test: /\.js$/, exclude: /node_modules/, loader: 'babel' },
{ test: /\.css$/, loader: 'style!css?modules!postcss' }// PostCSS
]
},
postcss: [
require('autoprefixer')
],
plugins: [
new webpack.BannerPlugin("Copyright Flying Unicorns inc.")
],
devServer: {...}
}
2. 자주 사용하는 플러그인 몇 개
1) HtmlWebpackPlugin
이 플러그인의 역할은 간단한 템플릿에 따라 최종 Html5 파일을 생성하는 데 도움을 줍니다. 이 파일은 포장된 JS 파일을 자동으로 인용합니다.매번 컴파일할 때마다 파일 이름에 다른 해시 값을 삽입합니다.
설치 명령: npm install --save-dev html-webpack-plugin
이 플러그 인은 이전에 수동으로 수행한 작업을 자동화하여 정식으로 사용하기 전에 프로젝트 구조를 변경해야 합니다.
①public 폴더를 제거하고 이 플러그인을 사용하면 HTML5 파일이 자동으로 생성되며 CSS는 앞의 조작을 통해 JS로 압축됩니다.
② app 디렉토리에서 HTML 파일 템플릿 index를 만듭니다.tmpl.html, 이 템플릿은 title 등 기타 필요한 요소를 포함하고 컴파일 과정에서 이 플러그인은 이 템플릿에 따라 최종 HTML 페이지를 생성하고 의존하는 css, js,favicon 등 파일을 자동으로 추가합니다. 템플릿 소스 코드는 다음과 같습니다.
③ 웹 패키지의 프로필을 업데이트합니다. 방법은 마지막 출력 파일을 저장하기 위해build 폴더를 새로 만듭니다.
var webpack = require('webpack');var HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
devtool: 'eval-source-map',
entry: __dirname + "/app/main.js",
output: {
path: __dirname + "/build",
filename: "bundle.js"
},
module: {
loaders: [
{ test: /\.json$/, loader: "json" },
{ test: /\.js$/, exclude: /node_modules/, loader: 'babel' },
{ test: /\.css$/, loader: 'style!css?modules!postcss' }
]
},
postcss: [
require('autoprefixer')
],
plugins: [
new HtmlWebpackPlugin({
template: __dirname + "/app/index.tmpl.html"//new ,
})
],
devServer: {
colors: true,
historyApiFallback: true,
inline: true
}
}
2) Hot Module Replacement
HMR(Hot Module Replacement)도 웹 패키지에서 유용한 플러그인으로 구성 요소 코드를 수정한 후 수정된 효과를 실시간으로 미리 볼 수 있도록 한다.웹팩에서 HMR을 구현하는 것도 간단합니다. 두 가지 구성만 하면 됩니다.
① 웹팩 프로필에 HMR 플러그인을 추가합니다.
② Webpack Dev Server에 "hot"매개 변수를 추가합니다.
그러나 이것들을 설정한 후에 JS 모듈은 자동으로 핫로드를 할 수 없다. JS 모듈에서 Webpack이 제공하는 API를 실행해야만 핫로드를 실현할 수 있다. 비록 이 API는 사용하기 어렵지 않지만React 모듈이라면 이미 익숙한 Babel을 사용하면 기능 핫로드를 더욱 편리하게 실현할 수 있다.
구체적인 실현 방법은 다음과 같다.
① Babel과 webpack은 독립된 도구입니다.
② 양자가 함께 일할 수 있다.
③ 둘 다 플러그인을 통해 기능을 확장할 수 있다.
④ HMR은 웹 패키지 플러그인으로 브라우저에서 모듈이 수정된 효과를 실시간으로 관찰할 수 있지만, 작업시키려면 모듈에 추가 할당액이 필요합니다.
⑤ Babel에는 React-transform-hrm이라는 플러그인이 있는데 React 모듈에 추가 설정을 하지 않는 전제에서 HMR을 정상적으로 작동시킬 수 있다.
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
devtool: 'eval-source-map',
entry: __dirname + "/app/main.js",
output: {
path: __dirname + "/build",
filename: "bundle.js"
},
module: {
loaders: [
{ test: /\.json$/, loader: "json" },
{ test: /\.js$/, exclude: /node_modules/, loader: 'babel' },
{ test: /\.css$/, loader: 'style!css?modules!postcss' }
]
},
postcss: [
require('autoprefixer')
],
plugins: [
new HtmlWebpackPlugin({
template: __dirname + "/app/index.tmpl.html"
}),
new webpack.HotModuleReplacementPlugin()//
],
devServer: {
colors: true,
historyApiFallback: true,
inline: true,
hot: true
}
}
react-transform-hmr 설치:npm install --save-dev babel-plugin-react-transform react-transform-hmr
Babel 구성
{
"presets": ["react", "es2015"],
"env": {
"development": {
"plugins": [["react-transform", {
"transforms": [{
"transform": "react-transform-hmr",
"imports": ["react"],
"locals": ["module"]
}]
}]]
}
}
}
React를 사용할 때 모듈을 핫 로드할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Qiita API v2를 Ajax에서 사용하기위한 webpack 설정 (로컬 개발 환경 전용)에서는 Qiita의 기사 목록, 사용자 세부 정보, 기사를 '좋아요'한 사람 목록 및 재고가 있는 사람 목록을 검색할 수 있습니다. Qiita 화면에서 기사를 재고한 사람을 볼 수 없기 때문에 API를 통해 기사를 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.