mkdir webpack-demo && cd webpack-demo npm init -y npm install --save-dev webpack
建立相应的子目录以下:css
src目录用于存放项目源代码,dist目录存放打包压缩后生成的文件,最终会被用于加载到浏览器中。html
运行下面命令,安装依赖库node
npm install --save lodash
index.js中内容以下:react
import _ from "Lodash"; function component() { var element = document.createElement('div'); element.innerHTML = _.join(['Hello','webpack'],' '); return element; } document.body.appendChild(component());
去命令行执行webpack
./node_modules/.bin/webpack src/index.js dist/bundle.js
能够会在dist中找到bundle.js生成。web
//webpack.config.js var path = require('path'); module.exports = { entry: './src/index.js', output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist') } };
//package.json "scripts": { "start": "webpack --config webpack.config.js", "build": "webpack" },
运行下面命令,生成bundle.jsnpm
npm run build
webpack动态打包依赖,除了js文件还能够打包css,图片,字体等。不过须要用到loader。json
要在js模块中引入css文件须要安装如下依赖:浏览器
npm install --save-dev style-loader css-loader
在src下加入main.css样式文件:app
.hello { color: red; }
index.js修改以下:
import _ from "Lodash"; import './main.css'; function component() { var element = document.createElement('div'); element.innerHTML = _.join(['Hello','webpack'],' '); element.classList.add('hello'); return element; } document.body.appendChild(component());
webpack.config.js修改以下:
var path = require('path'); module.exports = { entry: './src/index.js', output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist') }, module: { rules: [ { test: /\.css$/, use: ['style-loader','css-loader'] } ] } };
运行npm run build,在浏览器中打开index.html,发现helloworld已经变成红色。
首先安装依赖
npm install --save-dev file-loader
修改webpack.config.js
var path = require('path'); module.exports = { entry: './src/index.js', output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist') }, module: { rules: [ { test: /\.css$/, use: ['style-loader','css-loader'] }, { test: /\.(png|svg|jpg|gif)$/, use: [ 'file-loader' ] } ] } };
在index.js中引入import Icon from './icon.png';
var myIcon = new Image(); myIcon.src = Icon; element.appendChild(myIcon);
在main.css中引入import Icon from './icon.png';
同时搞一张名为icon.png的图片到src下,运行npm run build,图片已被插入文档。
这么随意的加载须要的文件,很是适用于组件化的开发方式,如react,能够把一个组件须要的资源都放在一块儿
- |- /assets + |– /components + | |– /my-component + | | |– index.jsx + | | |– index.css + | | |– icon.svg + | | |– img.png