从零搭建一个VueCLI (2)

栏目: CSS · 发布时间: 5年前

内容简介:接着上一篇接着说,babel7 引入了按需加载,他的值根据上面的意思是说,大于 1%,浏览器的两个版本,具体范围可以查阅文档1.字体

接着上一篇接着说,babel7 引入了按需加载,他的值根据 .browserslistrc 范围来决定,同时 autoprefixer 插件也是一样,定义的方法有两种,一种是在 package.json 文件内,另外一种作为单独的文件,为了方便管理,下面的所有配置都是单独的文件

> 1%
last 2 versions
复制代码

上面的意思是说,大于 1%,浏览器的两个版本,具体范围可以查阅文档

处理其他资源

1.字体

yarn add file-loader -D
复制代码
{
        test: /\.(woff|woff2|eot|ttf|otf)$/,
        exclude: /node_modules/,
        use: [
          {
            loader: 'file-loader',
            options: {
              name: 'font/[name].[ext]'
            },
          },
        ],
      },
复制代码
  1. 图片 对于小于 10KB 的图片将其转化 base64
yarn add url-loader -D
复制代码
{
          test: /\.(png|jp?g|gif)$/,
          exclude: /node_modules/,
          use: [
            {
              loader: 'url-loader',
              options: {
                limit: 10 * 1024,
              name: 'img/[name].[ext]'
              },
            },
          ],
        },
复制代码

可以根据项目需求决定是否添加图片压缩功能。

热重载

const webpack = require('webpack');
{
 devtool: 'inline-source-map',
  devServer: {
    // ...其他代码
    hot: true,
  },
  plugins: [
    new webpack.NamedModulesPlugin(),
    new webpack.HotModuleReplacementPlugin()
  ],
}
复制代码

devtool 是方便开发模式调试错误信息,生产环境为了速度可以关闭。

静态资源

yarn add copy-webpack-plugi -D
复制代码

因为开发环境是写入内存中,所有我们要修改 webpack.dev.jsdevServer.writeToDisk 选项,之后将 publicindex.html 文件过滤掉。

因为开发环境的 dist 文件夹已经存在,所以我们需要找一个临时文件夹,在每次运行的时候将将文件写入,同时 CleanWebpackPlugin 插件也要调整到 webpack.common.js 文件下。

webpack.dev.js

output: {
    path: path.resolve(__dirname, "../node_modules/@temporary")
  },
复制代码

webpack.common.js

plugins: [
    // 清理文件夹
    new CleanWebpackPlugin(),
    new CopyPlugin([
      {
        from: path.resolve(__dirname, "../public"),
        to: path.resolve(__dirname, "../dist"),
        // 忽略文件
        ignore: ['index.html'],
      },
    ]),
  ],
复制代码

这样实现复制之后,我们将 icon 通过 <link rel="shortcut icon" href="./favicon.ico" type="image/x-icon"> 导入

css 代码压缩

css 代码压缩可以通过 postcss 的插件 cssnano 来实现

yarn add cssnano -D
复制代码
module.exports = {
  plugins: {
    // ...其他代码
    ...(process.env.NODE_ENV !== "production" ? {} : { cssnano: {} })
  }
};
复制代码

其他优化

resolve: {
    alias: {
      '@': path.resolve(__dirname, "../src"),
    },
  },
复制代码
  • 美化输出信息
// 控制输出信息
    stats: {
      modules: false,
      children: false,
      chunks: false,
      chunkModules: false,
      entrypoints: false,
    },

复制代码
  • 去除 debugger 和注释
plugins: [
   // ...其他
    new UglifyJSPlugin({
      exclude: /node_modules/,
      cache: true,
      parallel: true,
      sourceMap: true,
      // 多嵌套了一层
      uglifyOptions: {
        warnings: false,
        compress: {
          drop_console: true,
          // 内嵌定义了但是只用到一次的变量
          collapse_vars: true,
          // 提取出出现多次但是没有定义成变量去引用的静态值
          reduce_vars: true,
          drop_debugger: true,
        },
        output: {
          // 是否最紧凑的输出
          beautify: false,
          // 是否删除所有的注释
          comments: false,
        },
      },
    }),
  ],
复制代码
  • 代码分割 具体根据需求调整
splitChunks: {
      chunks: 'async',
      cacheGroups: {
        vendor: {
          name: 'vendor',
          chunks: 'initial',
          priority: 10, // 优先级
          reuseExistingChunk: false, // 允许复用已经存在的代码块
          test: /node_modules\/(.*)\.js/, // 只打包初始时依赖的第三方
        },
        common: {
          name: 'common',
          chunks: 'initial',
          minChunks: 2,
          priority: 5,
          reuseExistingChunk: true
        }
      }
    }
  },
复制代码

最后

做到这里,基本脚手架 工具 可以使用了,还有一篇文章,主要介绍可配置性和界面优化。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算机算法

计算机算法

霍罗威茨 / 机械工业 / 2006-1 / 55.00元

本书是计算机算法在设计与分析方面的一本经典著作。书中介绍了算法和算法性能的基本知识,基本的数据结构知识,重点讨论了不同的算法设计策略,研究了下界理论等,提供了计算机算法的设计技术和有效的算法分析,以及大量的详细实例和实际应用。同时,对NP难和NP完全问题能否有效求解进行了分析。本书还汇聚了各种随机算法与并行算法的充分比较。   本书为读者提供了当前流行的对象设计语言C++的实现版本,适合作为......一起来看看 《计算机算法》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

SHA 加密
SHA 加密

SHA 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具