从零搭建一个VueCLI (2)

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

内容简介:接着上一篇接着说,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
        }
      }
    }
  },
复制代码

最后

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


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

查看所有标签

猜你喜欢:

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

删除

删除

[英] 维克托•迈尔-舍恩伯格(Viktor Mayer-Schönberger)著 / 袁杰 译 / 浙江人民出版社 / 2013-1 / 49.90元

《删除》讲述了遗忘的美德,为读者展现了大数据时代的取舍之道。 《删除》从大数据时代信息取舍的目的和方法分别诠释了“被遗忘的权利”。维克托首先回溯了人类追寻记忆的过程,之后提出数字技术与全球网络正在瓦解我们天生的遗忘能力。对此,他考察了促进遗忘终止4大驱动力——数字化,廉价的存储器,易于提取,全球性访问。之后,他提出了当前数字化记忆的两大威胁——信息权力与时间,并给出了应对威胁的6大对策——数......一起来看看 《删除》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换