Webpack配置

建立项目目录安装依赖项

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的配置

//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管理项目图片字体CSS管理

webpack动态打包依赖,除了js文件还能够打包css,图片,字体等。不过须要用到loader。json

打包css

要在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
相关文章
相关标签/搜索