使用webpack搭建完整的前端工作流1

注:我用的是webpack 2.4.1的版本;

基本环境

  • git
  • nodejs 全局环境
  • atom 编辑器
  • chrome 浏览器

搭建webpack的基本项目目录结构

  • git init
  • npm init -y
  • touch .gitignore README.md
  • touch index.html
  • mkdir src && cd src && touch index.js component.js


    使用webpack搭建完整的前端工作流1_第1张图片

.gitignore

node_modules/

README.md

# 项目开发指导
## 基本环境
## 依赖技术栈
- webpack
- babel 语法解析
- es6/7 基本语法
- eslint 语法检查
- npm scripts 统一任务的构建
- react 组件化的基础类库
- mocha
- karma
## 如何开发
- npm install 安装所有依赖
- npm run build 跑项目

搭建webpack开发环境

  • npm install webpack --save-dev
  • touch webpack.config.js 创建webapck配置文件
var path=require('path');
var webpack=require('webpack');
var config={
    //入口文件
    entry:path.resolve(__dirname,'./src/index.js'),
    //出口文件
    output:{
        path:path.resolve(__dirname,'./dist'),//出口文件路径
        filename:'bundle.js'//出口文件名
    }
};
module.exports=config;
  • 配置package.json中的scripts
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build":"webpack --progress"  //这句是新加的,progress可以显示加载进度,如果想了解更多,可以通过 webpack --help
  }
  • 创建测试模块 component.js
//通过module.exports导出模块
module.exports=function () {
    document.body.innerHTML='搭建开发环境';
};
  • 在index.js引入新建的测试模块component.js
//此时是es5的引入方式
var components=require('./component');
components();
  • 运行跑通基本流程:npm run build; 就是scripts中的build;
    运行之后,就会在当前项目下看到dist目录及里面的已经打包好的bundle.js文件

支持es6语法:webpack+babel

  • 下载babel依赖的插件
    npm install babel-loader babel-core babel-preset-es2015 --save-dev
  • 创建.babelrc文件,用来配置babel
{
  "presets": ["es2015"],
  "plugins":[]
}
  • 配置webpack的模块
var path=require('path');
var webpack=require('webpack');
var config={
    //入口文件
    entry:path.resolve(__dirname,'./src/index.js'),
    //出口文件
    output:{
        path:path.resolve(__dirname,'./dist'),//出口文件路径
        filename:'bundle.js'//出口文件名
    },
    module:{
        loaders:[
            {
                test:/\.js$/,
                loader:'babel-loader',
                exclude:/node_modules/,//哪些文件不需要使用babel-loader做处理

            }
        ]
    }
};
module.exports=config;
  • 用es6重写测试文件
//component.js
export default function () {
    document.body.innerHTML='搭建开发环境';
};
//index.js
import components from './component';
components();
  • npm run build跑通流程,继续测试

自动产出html文件

  • 安装插件 npm install html-webpack-plugin
  • 移动html文件到src目录下,作为模版文件mv index.html src
  • 配置webpack.config.js,实例化插件html-webpack-plugin
//webpack中的新增设置
plugins:[
        new htmlWebpackPlugin({
            title:'搭建前端工作流', //标题
            template:'./src/index.html'//模版文件的路径
        })
    ]
  • 更改模版文件,删掉引入的bundle.js(因为打包后,会自动引入),并添加变量;


    使用webpack搭建完整的前端工作流1_第2张图片
  • 运行npm run build之后的index.html文件

    
    
    搭建前端工作流




以后就不要手动的去维护模版引入哪些文件;

在本地启动服务 webpack-dev-server

  • 下载 npm i webpack-dev-server --save-dev
  • package.json中进行配置
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack --progress",
    "start":"webpack-dev-server --progress"
  }
  • webpack-dev-server的设置选项很多,我们以简单的在package.json中设置,也可以在webpack中设置
//package.json中设置
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack --progress",
    "start":"webpack-dev-server --progress --port 8080 --content-base dist --hot" //新增设置
  }
//webpack中设置
devServer:{
 contentBase:'dist',
      inline:true,
      port:8080,
      stats:{
          colors:true
      }
}
    

  • npm start 起服务;在localhost:8080;
  • 端口号被占用的解决方案
    • sudo lsof -i :8080 查看哪些占用端口;
    • sudo kill -9 xxxx;

你可能感兴趣的:(使用webpack搭建完整的前端工作流1)