Webpack4 구성 Loader
38611 단어 빌드 도구
1.Module
module
모듈을 어떻게 처리하는지 설정합니다. 모듈의 값은 하나의 대상이고 자주 사용하는 값은 noParse rules
입니다.그 중에서 noParse
는 어떤 자원을 해석할 필요가 없는지 지정하고 컴파일 성능을 향상시키는 데 쓰인다.rules
는 여러 개의 규칙을 정의하는 데 사용되며, 이 규칙들은 대응하는 모듈에 일치하는 다음에 대응하는 모듈에 지정한loader를 적용한다. rules
는 하나의 수조를 수신하고, 수조는 rule
대상을 저장한다.rule 대상에서 자주 사용하는 속성:test,use,include,exclude,loader,loaders,options,enforce...
간단한 활용 사례:
const path = require('path');
module.exports = {
entry: './src/main.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, './dist'), // node path
},
// 1.Webpack modules
module: {
// 2. ,
noParse: () => {
return /jquery|chartjs/.test(content);
},
// 3. , loader
rules: [
{
// 4.
test: '/\.js$/',
// 5.use loader, loaders
use: [
]
//....
//....
}
]
}
};
2. Loader 구성
rules
구성 모듈의 읽기 및 해석 규칙은 일반적으로 Loader를 구성하는 데 사용됩니다.유형은 각 Rule에서 파일 일부를 처리하는 방법을 설명하는 배열입니다.한 항목rules
을 구성할 때는 다음과 같은 방법을 사용합니다.test
, include
, exclude
세 가지 설정 항목을 통해 Loader가 규칙을 적용할 파일을 명중시킨다.use
설정 항목을 통해 Loader를 적용합니다. 하나의 Loader만 적용하거나 뒤에서 앞으로 이동하는 순서대로 Loader 그룹을 적용하고 각각 Loader에 매개 변수를 전달할 수 있습니다.enforce
옵션을 통해 로더의 실행 순서를 맨 앞이나 맨 뒤로 할 수 있습니다.const path = require('path');
module.exports = {
entry: './src/main.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, './dist'), // node path
},
// 1.Webpack modules
module: {
// 2. , loader
rules: [
{
// 3.
test: '/\.css$/',
// 4. loader, loader, css-loader
use: [
'style-loader',
'css-loader'
]
//....
//....
}
]
}
};
use: ['style-loader','css-loader']의 전체 쓰기는use: [{loader:'style-loader'}, {loader:'css-loader'}]
3. css Loader 구성
새 항목
|-- package.json
|-- src
| | `-- common.js
| | `-- index.html
| | `-- main.css
| `-- main.js
`-- webpack.config.js
package.json
{
"name": "testcssloader",
"version": "1.0.0",
"description": "",
"main": "main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "webpack --mode development",
"build": "webpack --mode production"
},
"author": "liujun",
"license": "ISC",
"devDependencies": {
"css-loader": "^3.0.0",
"style-loader": "^0.23.1",
"webpack": "^4.35.3",
"webpack-cli": "^3.3.6"
}
}
1.scripts 속성에 3개의 스크립트가 작성되었습니다. 그 중에서 dev에 대응하는 스크립트는 테스트 버전을 구축하는 것입니다.그중build에 대응하는 스크립트는 게시판을 구축하는 것입니다.사용 중인 개발 의존도는 스타일-loader css-loader 웹팩 웹팩-cli
webpack.config.js
const path = require('path');
module.exports = {
entry: './src/main.js',
output: {
// 1. bundle.js ( main.js )
filename: 'bundle.js',
// 2. ( dist )
path: path.resolve(__dirname, './dist'), // node path
},
module: {
rules: [
{
test: /\.css$/, // .css , test ,
use: ['style-loader', 'css-loader'],
}
]
}
};
use
는 하나
를 받아서
에 저장할 수 있고
use의 별명은loaders이다.예를 들면 다음과 같습니다.
use: ['style-loader', 'css-loader']
use: [{ loader:'style-loader',options:{} }, 'css-loader']
use: [ { loader:'style-loader',options:{} }, {loader:'css-loader', options: {} } ]
use: ['style-loader', 'css-loader']
loaders: ['style-loader', 'css-loader']
loaders: ['style-loader', { loader:'css-loader', options: {} }]
main.css
body {
background-color: pink;
}
main.js
// 1. CommonJS showHelloWorld
const showHelloWorld = require('./common.js');
// 2. showHelloWorld
showHelloWorld('Webpack ');
// 3. CommonJS CSS
require('./main.css');
index.html
<html>
<head>
<meta charset="UTF-8">
head>
<body>
<div id="app">div>
<script src="../dist/bundle.js">script>
body>
html>
로컬로 웹 패키지 설치 및 사용할loader
npm install [email protected] --save-dev
npm install [email protected] --save-dev
npm install [email protected] --save-dev
npm install [email protected] --save-dev
프로젝트의 루트 디렉터리에서 스크립트 구축 프로젝트를 실행합니다
npm run dev
패키지 결과
|-- dist
| |-- bundle.js
|-- node_modules
|-- package-lock.json
|-- package.json
|-- src
| |-- common.js
| |-- index.html
| |-- main.css
| `-- main.js
`-- webpack.config.js
패키지 이후
bundle.js
파일의 일부: (function(modules) { // webpackBootstrap
// The module cache
var installedModules = {};
// The require function
function __webpack_require__(moduleId) {
// Execute the module function
modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
// Flag the module as loaded
module.l = true;
// Return the exports of the module
return module.exports;
}
// Load entry module and return exports
return __webpack_require__(__webpack_require__.s = "./src/main.js");
})
({
// main.css
"./node_modules/css-loader/dist/cjs.js!./src/main.css":(function(module, exports, __webpack_require__) {
eval("exports = module.exports = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\")(false);
// Module
exports.push([module.i, \"body {\\r\
background-color: pink;\\r\
}\", \"\"]);
//# sourceURL=webpack:///./src/main.css?./node_modules/css-loader/dist/cjs.js");
}),
"./node_modules/css-loader/dist/runtime/api.js":(function(module, exports, __webpack_require__) {
......
}),
"./node_modules/style-loader/lib/addStyles.js":(function(module, exports, __webpack_require__) {
.....
}),
// style-loader
"./node_modules/style-loader/lib/urls.js":(function(module, exports) {
........
}),
// 2.
"./src/common.js":(function(module, exports) {
.....
}),
// 3.css-loader
"./src/main.css":(function(module, exports, __webpack_require__) {
.....
}),
// 1.
"./src/main.js":(function(module, exports, __webpack_require__) {
eval("// 1. CommonJS showHelloWorld \r
const showHelloWorld = __webpack_require__(/*! ./common.js */ \"./src/common.js\");\r
// 2. showHelloWorld \r
showHelloWorld('Webpack ');\r
// 3. CommonJS CSS \r
__webpack_require__(/*! ./main.css */ \"./src/main.css\");
//# sourceURL=webpack:///./src/main.js?");
})
});
index.html
<html><head>
<meta charset="UTF-8">
<style type="text/css">body {
background-color: pink;
}style>head>
<body>
<div id="app">div>
<script src="../dist/bundle.js">script>
body>html>
요약:
Loader는 파일 변환 기능의 통역사로 볼 수 있다. 설정에 있는
module.rules
그룹은 하나의 규칙을 설정하여 Webpack이 어떤 파일을 만났을 때 어떤 Loader를 사용하여 불러오고 변환하는지 알려준다.위와 같은 설정은 Webpack이
.css
로 끝나는 파일을 만났을 때 css-loader
로 CSS 파일을 읽고 style-loader
에 건네주고 CSS 내용을 자바스크립트에 주입하는 것을 알려준다.Loader를 구성할 때 주의해야 할 사항은 다음과 같습니다.use
속성의 값은 Loader 이름으로 구성된 그룹이어야 하며 Loader의 실행 순서는 뒤에서 앞까지이다.원본 다운로드
4. css Loader 매개변수 구성
css Loader Options에서 수신할 수 있는 매개변수:
Name
Type
Default
Description
url
{Boolean\|Function}
true
Enable/Disable
url()
handling import
{Boolean\|Function}
true
Enable/Disable @import handling
modules
{Boolean\|String\|Object}
false
Enable/Disable CSS Modules and setup their options
sourceMap
{Boolean}
false
Enable/Disable Sourcemaps
importLoaders
{Number}
0
Number of loaders applied before CSS loader
localsConvention
{String}
asIs
Setup style of exported classnames
onlyLocals
{Boolean}
webpack.config.js
const path = require('path');
module.exports = {
entry: './src/main.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, './dist'),
},
module: {
rules: [
{
test: /\.css$/,
// :loaders use , loaders use
loaders: [
{
loader: 'style-loader',
options: {
}
},
{
loader: 'css-loader',
// loader
options: {
url: true,
import: true
}
}
]
}
]
}
};
원본 다운로드 주소
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Webpack4 구성 Loader모듈의 값은 하나의 대상이고 자주 사용하는 값은 noParse 和 rules입니다.그 중에서 noParse는 어떤 자원을 해석할 필요가 없는지 지정하고 컴파일 성능을 향상시키는 데 쓰인다.rules는 여러 개의 규칙...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.