웹팩은 현대적인 자바 스크립트 응용 프로그램입니다 정적 포장 모듈 (모듈 Bundler를) . 웹팩 응용 프로그램을 처리 할 때, 재귀 구성 종속성 그래프 (종속성 그래프) 각 모듈은 원하는 애플리케이션이 모든 모듈이 다음 중 하나 이상으로 패키지화 포함하고, 번들 .
1. 웹팩 설치
초기화 package.json을 생성하는 초기화 1.1 프로젝트 NPM에있을 필요가
1.2 NPM 설치 웹팩 웹팩 -D-CLI
2.webpack 구성
웹팩의 일부를 구성하는 webpack.config.js 파일의 루트 디렉토리에 생성 된 모든 구성 항목은 웹팩으로 구성됩니다. src 디렉토리 및 디렉토리를 생성합니다. 다음 src 디렉토리와는하는 index.js 파일과 HTML 파일을 만듭니다.
index.html 파일에서 div 태그를 쓰기
<! DOCTYPE HTML> <HTML LANG = " EN " > <head> <메타 캐릭터 = " UTF-8 " > <메타 NAME = " 뷰포트 " 함량 = " 폭 = 기기 폭 초기 스케일 = 1.0 " > < 메타 HTTP-당량 = " X-UA-지원 " 내용 = " 즉 = 엣지 " > <제목> 웹팩配置学习</ 제목> </ head> <body> <DIV ID = " 루트 " > </ DIV> </ BODY> </ HTML>
웹팩 구성 디렉토리
CONST 경로 = 제 (필요 ' 경로 ' ) module.exports = { : MODE ' 개발 ' , 항목 : ' ./src/index.js ' // 입력 파일 출력 : { // 출구 경로 : path.resolve (__ dirname은, ' DIST ' ), // 패키지 디렉토리를 생성
하는 index.js'// : 파일 이름 ' 하나의 js를 사용하여 파일 이름 디렉토리 생성, 파일을 } }
멀티 팩 구성 파일, 두 개의 JS 파일 인 경우
항목 : { 주 : ' ./src/index.js ' , // 입력 파일 하위 : ' ./src/index.js ' }
이번에는 당신은 파일 이름에 출력을 구성해야
파일 이름 : ' [이름] 된 .js ' // 디렉토리 파일의 js의 복수를 생성 할 때 패키지를
2.1webpack 구성 사진
하는 index.js에 쓰기, 내 src 디렉토리에 사진을 준비
수입 아바타 에서 ' ./item.png ' var에 IMG = 새 이미지 () img.src = 아바타 var에 루트 = document.getElementById를 ( ' 루트 ' ) root.append (IMG)
구성 모듈 (Module1의) 제 설치된 웹팩, 선택 장착 실
원사 추가 URL 로더 --save-DEV
모듈 1 : { 규칙 : [ { 테스트 : /\.(png|jpg|gif)$/ , 사용 : { 로더 : ' URL-로더 ' , 옵션 : { 이름 : ' [이름] _ [해시] [EXT]. ' , // 사진 이름과 해시 값 OutputPath : ' ImagesRF 로열티 무료 /가 ' , // 압축 된 사진 후 내부에 저장된 디렉토리 제한 : 10240 //를 보다 10,240 바이트, 포장 카탈로그와 사진을 생성 할 경우 크기가 설정되어 사진을 제한, 크기가 설정 이하인 경우, 기본은 JS의 압축 base64로 포장됩니다 } } } ] },
package.json 구성 파일에서 각 실행 NPM 실행 디바이스는 포장됩니다, 루트 디렉토리에 DIST 디렉토리를 생성합니다
" 스크립트 " : { " DEV " : " 웹팩 " },
CSS의 2.2webapck ( SCSS ) 전처리
다음 플러그인을 설치하기 위해 먼저 필요
원사 CSS 로더 --save- 추가 dev에 노드를 추가 원사를 -sass --save- dev에 실을 추가 말대꾸 -loader --save- dev에 실을 추가하는 SCS -loader --save- dev에 실을 스타일을 추가 --save-DEV -loader
webapck로 작성된
모듈 1 : { 규칙 : [ { 테스트 : /\.scss$/ , // CSS 로더 프로세싱 문서 스타일 로더 CSS를 CSS-로더하는 SCS를 전처리하는 라벨에 장착 된 파일 헤더, 말대꾸 로더를 취급 구성, postcss 로더 처리 CSS의 접두어 를 사용 : [ ' 스타일 로더 ' , { 로더 : ' CSS-로더 ' , 옵션 : {
모듈 : 참으로, // 모듈 패키징
importLoaders : 2 // 각 하중 수행 사스 로더 로더 postcss한다 } } ' 사스 로더 ' , ' postcss 로더 ' 브라우저 프리픽스 ] } ] },
당신은 모듈 형 프로세스를 CSS하려면 구성해야
옵션 : { 모듈 : true로 , // 모듈 형 패키지, importLoaders : 2 // 각로드가 수행 말대꾸 로더 로더됩니다 postcss }
SCSS, 디렉토리에 파일을 생성 간단한 CSS 파일을 작성
본체 { .avatar { 폭 : 50 %; 국경 : 1 픽셀의 빨간색으로; 변환 : 변환 (100 픽셀을 100 픽셀); } }
필기하는 index.js 파일
수입 아바타 에서 ' ./item.png '
수입 스타일 에서 ' ./index.scss ' var에 IMG = 새 이미지 () img.src = 아바타 img.classList.add (style.avatar) var에 루트 = document.getElementById를 ( ' 루트 ' ) root.append (IMG)
다음의 js 파일을 만들고는,하는 index.js 파일을 도입
'./item.png'에서 수입 아바타 기능 createdAvatar () { var에 IMG = 새 이미지 () img.src = 아바타; img.classList.add ( '아바타') VAR 루트 = document.getElementById를 ( '루트'); root.append (IMG) } 수출 기본 createdAvatar;
패키지가 브라우저에서 볼 수 후에는 스타일이없는
위의 CSS에서, 우리는 CSS3를 사용하지만 브라우저가 자동으로 나에게 접두사를 추가하지 않습니다,이 시간, 우리는 수동으로 일부를 구성해야합니다.
安装
실 추가 postcss -loader --save-DEV
Postcss.config.js, 당신의 루트 디렉토리에 파일을 작성해야합니다
安装
실 추가 autoprefixer의 --save-DEV
사용,
= {module.exports의 플러그인 [ 는 ( 'autoprefixer')를 요구 ] } // 접두어 처리 자동 다른 브라우저 문제 CSS
그런 다음 postcss 로더를 사용하여 CSS를 구성, 패키지를 실행, 그것은 일부 CSS3 브라우저 자동 접두사, 브라우저에서 다시 볼 수 있습니다
2.3webpack对字体进行处理
先行iconfont下载一些字体,放入自己的src目录里面,需要在index.js文件引入并使用
import './iconfont.scss' var root = document.getElementById('root') root.innerHTML = "<div class='iconfont iconchangjingguanli'></div>"
然后需要在webpack进行一些配置,首先安装一个插件
yarn add file-loader --save-dev
使用
module: { rules: [{ test: /\.(eot|ttf|svg)$/, use: { loader: 'file-loader' } } ] },
再次运行npm run dev打包之后,可以在浏览器看到我们的字体图标了
2.4webpack配置html打包文件处理
如果想每次打包之后,dist目录都会给我们生成一个html文件,这时候需要安装一个插件
yarn add html-webpack-plugin --save-dev
然后在webapck.config.js文件中引入
const HtmlWebpackPlugin = require('html-webpack-plugin')
使用 HtmlWebpackPlugin打包之后自动生成html文件,
plugins: [ new HtmlWebpackPlugin({ template: 'src/index.html' }) ],
每次打包需要重新更新一下dist目录,删除里面的文件,重新生成一个新的,这时候需要安装另一个插件
yarn add clean-webpack-plugin --save-dev
也是需要在webpack.config.js引入
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
使用和HtmlWebpackPlugin一样
plugins: [ // HtmlWebpackPlugin打包之后自动生成html文件, new HtmlWebpackPlugin({ template: 'src/index.html' }), // CleanWebpackPlugin打包之前先自动清除dist目录里面所有的文件, new CleanWebpackPlugin() ],
2.5SourceMap配置,用于检测在代码打包之后,检测问题,定位到那个行
module.exports = { devtool: 'cheap-inline-source-map', }
配置选项如下
//source-map 打包之后会生成map文件,性能比较慢,用于检测代码打包之后错误信息提示 //eval 打包最快,不会生成.map文件, //inline-source-map 打包不会生成.map文件,在打包的js文件生成base64 //如果是在development 开发环境 使用cheak-module-eval-source-map,不会生成.map文件,但是集成在打包之后main.js中eval中 //cheap-inline-source-map 打包不会生成.map文件,在打包的js文件生成base64 //如果是在production 线上环境 使用cheak-module-source-map,会打包生成.map文件
webpack配置插件特别多,需要慢慢的来,理解常用的场景配置就可以了。剩下的需要单独查阅资料就可以了解其中配置以及原理