前端工程化常见工具
- 
    
    
- 代码拆分(Code Splitting) 使你可以将应用程序分解成可管理的代码块,可以按需加载,这意味着你的用户可以快速获取交互性的网站,而不必等到整个应用程序下载和解析完成。当然你可以手动来完成这项工作,那么祝你好运。
 - 静态资源(Static assets) 如图像和 CSS 可以导入到你的应用程序中,而且还能够被作为依赖图中的另一个节点。再也不用关心你的文件是否放在正确的文件夹中,再也不用为文件 URL 增添 hash 而使用 hack 脚本,因为 webpack 会帮我们处理这些事情。
 
 
const path = require('path');
module.exports = {
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js'
  }
};
- 
    
    
- 对于应用使用 webpack,对于类库使用 Rollup
 - tree-shaking: 除了使用 ES6 模块之外,Rollup 还静态分析代码中的 import,并将排除任何未实际使用的代码。这允许您架构于现有工具和模块之上,而不会增加额外的依赖或使项目的大小膨胀。
 
 
// rollup.config.js
import json from 'rollup-plugin-json';
export default {
  input: 'src/main.js',
  output: {
    file: 'bundle.js',
    format: 'cjs'
  },
  plugins: [ json() ]
};
- 
    
    
- 基于流的自动化构建工具
 - gulpfile.js
 - 管道 pipe
 - task
 
 
var gulp = require('gulp');
gulp.task('default', function() {
  // 将你的默认的任务代码放在这
});
- 
    
    
- 自动化构建工具
 - gruntfile.js
 
 
<!-- Project configuration. -->
grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    uglify: {
        options: {
        banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
        },
        build: {
        src: 'src/<%= pkg.name %>.js',
        dest: 'build/<%= pkg.name %>.min.js'
        }
    }
});
- bower - A package manager for the web (包管理器)
 - 
    
yeoman - THE WEB’S SCAFFOLDING TOOL FOR MODERN WEBAPPS
- 脚手架工具
 
 - browserify - 浏览器加载 Node.js 模块
 - parcel - 快速,零配置的 Web 应用程序打包器
    
- 从你的应用程序的入口 HTML 文件开始。Parcel 将从入口文件开始分析依赖关系来为你构建整个应用程序。