1.0.0 • Published 5 years ago

@omtty/webpack v1.0.0

Weekly downloads
1
License
ISC
Repository
-
Last release
5 years ago

项目背景

由于 webpack 的配置比较繁琐,并且不同的项目之间 90%左右的配置都是一样的,omt-webpack 简化了 webpack 的配置,只要简单的几个配置就可以直接使用,同时又不失去灵活性

安装

yarn install @omtty/webpack

omt-webpack cli

omt-webpack --cmd [build | dev] [--debug]
  • build: 编译模式,该模式下可以和debug配合使用来决定编译的代码为dev还是prod版本
  • dev: 开发模式,会启动devServer

配置

.omt.webpack.js 是 omt-webpack 的配置文件,需要放在项目的根目录下面

常用配置项

名称描述类型默认值
entry项目入口string | array必填
outputPath项目输出目录stringdist
appSrc项目存放代码的目录stringsrc
appPublic项目的公共资源目录stringpublic
disableCssModules是否禁用css modules功能booleanfalse, 默认开启css modules
publicPath获取chunk资源的根目录,必须以/结尾,这里可以为URL地址,如果指定了一个错误的值,则在加载这些资源时会收到 404 错误string/
externals防止将某些 import 的包(package)打包到 bundle 中,而是在运行时(runtime)再去从外部获取这些扩展依赖,点击这里查看更多string array object function regex选填
resolveAlias创建 import 或 require 的别名,来确保模块引入变得更简单具体查看这里object选填
extraResolveExtensions自动解析确定的扩展array选填
extraBabelPresetsbabel-loader的options.presets具体查看这里array选填
extraBabelPluginsbabel-loader的options.plugins具体查看这里array选填
extraModuleRules创建模块时,匹配请求的规则数组。这些规则能够修改模块的创建方式,具体查看这里array选填
extraJsLoaders额外的js和jsx loaderstring object选填
extraTsLoaders额外的ts和tsx loaderstring object选填
lessModifyVarsless modify varsobject选填

.omt.webpack.js 配置样例

module.exports = {
  // entry支持模糊匹配,如:"src/**/*.js"
  entry: "src/index.js"
};

一般情况下只要指定了entry就可以正常编译代码了

.omt.webpack.js 复杂配置样例

const path = require("path");
const CleanWebpackPlugin = require("clean-webpack-plugin");

module.exports = {
  entry: "./src/index.js",
  appSrc: "src",
  appPublic: "public",
  outputPath: "./dist",
  resolveAlias: {
    zord: path.resolve(__dirname, "./components/index")
  },
  extraTsLoaders: [
    {
      loader: require.resolve("react-docgen-typescript-loader"),
      options: {
        docgenCollectionName: "DJ_REACT_CLASSES"
      }
    }
  ],
  extraBabelPlugins: [
    "transform-runtime",
    [
      "import",
      [
        {
          libraryName: "antd",
          style: true
        }
      ]
    ],
    "transform-decorators-legacy"
  ],
  devServer: {
    port: 8000,
    before: app => {
    }
  },
  disableCssModules: true,
  lessModifyVars: {
    "font-size-base": "12px",
    "font-size-lg": "14px"
  },
  extraPlugins: [new CleanWebpackPlugin()]
};

Node API

import applyOmtWebpack from "@omt/webpack";
applyOmtWebpack(config, options);

applyOmtWebpack(config, options)

config的配置参考.omt.webpack.js的配置

options

名称描述类型默认值
cwd项目的运行目录,根目录string必填
watch是否启动监听模式booleanfalse
debugproduction or developmentbooleanfalse, production
cmdbuild \/ devstringbuild