美文网首页
3 开发时自动编译代码工具总结

3 开发时自动编译代码工具总结

作者: 辣瓜瓜 | 来源:发表于2019-12-22 22:34 被阅读0次

开发时自动编译工具

每次要编译代码时,手动运行 npm run build 就很麻烦

webpack 中有几个不同的选项,可以在代码发生变化后自动编译代码:

  1. webpack's Watch Mode
  2. webpack-dev-server
  3. webpack-dev-middleware

多数场景中,可能需要使用 webpack-dev-server

watch

webpack指令后面加上--watch参数即可

主要的作用就是监视本地项目文件的变化, 发现有修改的代码会自动编译打包, 生成输出文件

  1. 配置package.json的scripts"watch": "webpack --watch"

  2. 运行npm run watch

以上是cli的方式设置watch的参数

还可以通过配置文件对watch的参数进行修改:

const path = require('path')

// webpack的配置文件遵循着CommonJS规范
module.exports = {
  entry: './src/main.js',
  output: {
    // path.resolve() : 解析当前相对路径的绝对路径
    // path: path.resolve('./dist/'),
    // path: path.resolve(__dirname, './dist/'),
    path: path.join(__dirname, './dist/'),
    filename: 'bundle.js'
  },
  mode: 'development',
  watch: true
}

运行npm run build

webpack-dev-server (推荐)

  1. 安装devServer

    devServer需要依赖webpack,必须在项目依赖中安装webpack

    npm i webpack-dev-server webpack -D

  2. index.html中修改 <script src="/bundle.js"></script>

  3. 运行:npx webpack-dev-server

  4. 运行:npx webpack-dev-server --hot --open --port 8090

  5. 配置package.json的scripts:"dev": "webpack-dev-server --hot --open --port 8090"

  6. 运行npm run dev

原理:devServer会在内存中生成一个打包好的bundle.js,它存在于项目的根目录下,专供开发时使用,打包效率高,修改代码后会自动重新打包以及刷新浏览器,用户体验非常好

以上是cli的方式设置devServer的参数

还可以通过配置文件对devServer的参数进行修改:

  1. 修改webpack.config.js
const path = require('path')

module.exports = {
  // 入口文件配置
  entry: './src/index.js',
  // 出口文件配置项
  output: {
    // 输出的路径,webpack2起就规定必须是绝对路径
    path: path.join(__dirname, 'dist'),
    // 输出文件名字
    filename: 'bundle.js'
  },
  devServer: {
    port: 8090,
    open: true,
    hot: true
  },
  mode: 'development'
}
  1. 修改package.json的scripts: "dev": "webpack-dev-server"
  2. 运行npm run dev

html-webpack-plugin的使用(html插件)

打包时候npm run build,生成的文件在dist目录下,但是使用webpack-dev-serv时,devServer会在内存中生成一个打包好的bundle.js,并没有生成内容更新到dist/bundle.js,为了使用webpack-dev-serv实现自动编译,修改了index.html中boundle.js的引入 <script src="/bundle.js"></script>,打包后的正确引用应该是<script src="./dist/bundle.js"></script>,为了避免每次打包手动修改,引入html-webpack-plugin

  1. 安装html-webpack-plugin插件npm i html-webpack-plugin -D
  2. webpack.config.js中的plugins节点下配置
const HtmlWebpackPlugin = require('html-webpack-plugin')

plugins: [
    new HtmlWebpackPlugin({
        filename: 'index.html',
        template: './src/index.html'//假设index在src目录下,src为项目的根目录
    })
]
  1. devServer时根据模板在express项目根目录下生成html文件(类似于devServer生成内存中的bundle.js)
  2. devServer时自动引入bundle.js
  3. 打包时在dist目录下会自动生成index.html

webpack-dev-middleware

webpack-dev-middleware 是一个容器(wrapper),它可以把 webpack 处理后的文件传递给一个服务器(server)。 webpack-dev-server 在内部使用了它,同时,它也可以作为一个单独的包来使用,以便进行更多自定义设置来实现更多的需求。

  1. 安装 expresswebpack-dev-middleware

    npm i express webpack-dev-middleware -D

  2. 新建server.js

    const express = require('express');
    const webpack = require('webpack');
    const webpackDevMiddleware = require('webpack-dev-middleware');
    const config = require('./webpack.config.js');
    
    const app = express();
    const compiler = webpack(config);
    
    app.use(webpackDevMiddleware(compiler, {
      publicPath: '/'
    }));
    
    app.listen(3000, function () {
      console.log('http://localhost:3000');
    });
    
  3. 配置package.json中的scripts:"server": "node server.js"

  4. 运行: npm run server

注意: 如果要使用webpack-dev-middleware, 必须使用html-webpack-plugin插件, 否则html文件无法正确的输出到express服务器的根目录

小结

只有在开发时才需要使用自动编译工具, 例如: webpack-dev-server

项目上线时都会直接使用webpack进行打包构建, 不需要使用这些自动编译工具

自动编译工具只是为了提高开发体验### 开发时自动编译工具

每次要编译代码时,手动运行 npm run build 就很麻烦

webpack 中有几个不同的选项,可以在代码发生变化后自动编译代码:

  1. webpack's Watch Mode
  2. webpack-dev-server
  3. webpack-dev-middleware

多数场景中,可能需要使用 webpack-dev-server

watch

webpack指令后面加上--watch参数即可

主要的作用就是监视本地项目文件的变化, 发现有修改的代码会自动编译打包, 生成输出文件

  1. 配置package.json的scripts"watch": "webpack --watch"

  2. 运行npm run watch

以上是cli的方式设置watch的参数

还可以通过配置文件对watch的参数进行修改:

const path = require('path')

// webpack的配置文件遵循着CommonJS规范
module.exports = {
  entry: './src/main.js',
  output: {
    // path.resolve() : 解析当前相对路径的绝对路径
    // path: path.resolve('./dist/'),
    // path: path.resolve(__dirname, './dist/'),
    path: path.join(__dirname, './dist/'),
    filename: 'bundle.js'
  },
  mode: 'development',
  watch: true
}

运行npm run build

webpack-dev-server (推荐)

  1. 安装devServer

    devServer需要依赖webpack,必须在项目依赖中安装webpack

    npm i webpack-dev-server webpack -D

  2. index.html中修改 <script src="/bundle.js"></script>

  3. 运行:npx webpack-dev-server

  4. 运行:npx webpack-dev-server --hot --open --port 8090

  5. 配置package.json的scripts:"dev": "webpack-dev-server --hot --open --port 8090"

  6. 运行npm run dev

原理:devServer会在内存中生成一个打包好的bundle.js,它存在于项目的根目录下,专供开发时使用,打包效率高,修改代码后会自动重新打包以及刷新浏览器,用户体验非常好

以上是cli的方式设置devServer的参数

还可以通过配置文件对devServer的参数进行修改:

  1. 修改webpack.config.js
const path = require('path')

module.exports = {
  // 入口文件配置
  entry: './src/index.js',
  // 出口文件配置项
  output: {
    // 输出的路径,webpack2起就规定必须是绝对路径
    path: path.join(__dirname, 'dist'),
    // 输出文件名字
    filename: 'bundle.js'
  },
  devServer: {
    port: 8090,
    open: true,
    hot: true
  },
  mode: 'development'
}
  1. 修改package.json的scripts: "dev": "webpack-dev-server"
  2. 运行npm run dev

html-webpack-plugin的使用(html插件)

打包时候npm run build,生成的文件在dist目录下,但是使用webpack-dev-serv时,devServer会在内存中生成一个打包好的bundle.js,并没有生成内容更新到dist/bundle.js,为了使用webpack-dev-serv实现自动编译,修改了index.html中boundle.js的引入 <script src="/bundle.js"></script>,打包后的正确引用应该是<script src="./dist/bundle.js"></script>,为了避免每次打包手动修改,引入html-webpack-plugin

  1. 安装html-webpack-plugin插件npm i html-webpack-plugin -D
  2. webpack.config.js中的plugins节点下配置
const HtmlWebpackPlugin = require('html-webpack-plugin')

plugins: [
    new HtmlWebpackPlugin({
        filename: 'index.html',
        template: './src/index.html'//假设index在src目录下,src为项目的根目录
    })
]
  1. devServer时根据模板在express项目根目录下生成html文件(类似于devServer生成内存中的bundle.js)
  2. devServer时自动引入bundle.js
  3. 打包时在dist目录下会自动生成index.html

webpack-dev-middleware

webpack-dev-middleware 是一个容器(wrapper),它可以把 webpack 处理后的文件传递给一个服务器(server)。 webpack-dev-server 在内部使用了它,同时,它也可以作为一个单独的包来使用,以便进行更多自定义设置来实现更多的需求。

  1. 安装 expresswebpack-dev-middleware

    npm i express webpack-dev-middleware -D

  2. 新建server.js

    const express = require('express');
    const webpack = require('webpack');
    const webpackDevMiddleware = require('webpack-dev-middleware');
    const config = require('./webpack.config.js');
    
    const app = express();
    const compiler = webpack(config);
    
    app.use(webpackDevMiddleware(compiler, {
      publicPath: '/'
    }));
    
    app.listen(3000, function () {
      console.log('http://localhost:3000');
    });
    
  3. 配置package.json中的scripts:"server": "node server.js"

  4. 运行: npm run server

注意: 如果要使用webpack-dev-middleware, 必须使用html-webpack-plugin插件, 否则html文件无法正确的输出到express服务器的根目录

小结

只有在开发时才需要使用自动编译工具, 例如: webpack-dev-server

项目上线时都会直接使用webpack进行打包构建, 不需要使用这些自动编译工具

自动编译工具只是为了提高开发体验

相关文章

  • 3 开发时自动编译代码工具总结

    开发时自动编译工具 每次要编译代码时,手动运行 npm run build 就很麻烦 webpack 中有几个不同...

  • 前端开发工具(mac),持续更新

    1、CodeKit是incident57开发的一套前端开发助理工具,能够自动编译Less, Sass等前端代码,可...

  • gulp---基于流的自动化构建工具

    Gulp 介绍:自动化构建工具,可以通过gulp对我们的代码进行全自动的编译。可以实现代码的自动压缩、编译、实时监...

  • ES6项目构建

    基础架构 任务自动化(gulp) 编译工具(babel、webpack) 代码实现

  • webpack进阶+调试

    一、开发服务器 devServer 功能:自动化工具(自动编译,自动打开并刷新浏览器)特点:只会在内存中编译打包,...

  • NS3模拟基础(转)

    1.NS3目录结构 Waf是基于Python开发的编译工具,ns-3系统本身和将要写的仿真代码都由waf负责编译运...

  • TS开发环境准备

    本文目录: 1.TS介绍 2.TS的编译 3.开发环境加入代码检查工具eslint和prettier 4.开发环境...

  • Linux开发工具-sparse

    Linux开发工具-sparse 简介 sparse是Linux内核开发者早期开发的静态代码检查工具,用于在编译阶...

  • Android app安全性能测试

    1.安装包测试 (1)能否反编译代码(源代码泄露问题): 开发:对代码进行混淆;测试:使用反编译工具进行查看源代码...

  • H45-初识webpack

    工程化 自动化(使用sass、babel等工具编译代码) 模块化 性能优化自动化工具将scss/sass转为ie也...

网友评论

      本文标题:3 开发时自动编译代码工具总结

      本文链接:https://www.haomeiwen.com/subject/bpdkdctx.html