从零搭建一个VueCLI (2)

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

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

最后

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


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

查看所有标签

猜你喜欢:

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

用户至上:用户研究方法与实践(原书第2版)

用户至上:用户研究方法与实践(原书第2版)

凯茜·巴克斯特 / 王兰、杨雪、苏寅 / 机械工业出版社 / 2017-5-1 / 99

《UI/UE系列丛书 用户至上:用户研究方法与实践(原书第2版)》是用户研究方法指南,谷歌用户体验研究员十几年工作经验结晶,从理论到实战,包含完整的实操案例,是设计以人为中心产品的实用手册。 《UI/UE系列丛书 用户至上:用户研究方法与实践(原书第2版)》包含五个部分共15章。入门篇包括第1~5章:介绍用户体验入门,如何理解目标用户,道德与法律问题,如何搭建研究设施,如何选择用户体验研究方......一起来看看 《用户至上:用户研究方法与实践(原书第2版)》 这本书的介绍吧!

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

在线图片转Base64编码工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具