用不同语言语法编写webpack配置文件

更新日期: 2019-03-02 阅读: 3.2k 标签: webpack

写在前面

webpack配置文件默认情况下为webpack.config.js,即用原生js语法书写的配置文件。

然而,在我们的项目中,有时候是使用的是其他语言语法进行编程,例如:es6、coffeeScript、typeScript等语言语法。

为此,webpack为我们提供了可以采用不同语言语法类型书写配置文件的功能。

具体可以支持的文件拓展可以看这里:https://github.com/gulpjs/int...

可以看到,webpack为我们提供了丰富多样可供选择的文件拓展。
下面介绍一下最常见的webpack配置文件类型:


TypeScript

1、安装依赖

如果想要使用TypeScript来书写webpack配置文件,首先要先安装依赖:

npm install --save-dev typescript ts-node @types/node @types/webpack

如果需要用到webpack-dev-server,还需要安装:

npm install --save-dev @types/webpack-dev-server

2、编写webpack配置文件

(1)把webpack配置文件的文件名改为:webpack.config.ts

TypeScript的文件拓展名为.ts,所以我们需要同时把webpack配置文件的文件名改为.ts拓展名(原来默认为webpack.config.js)

当我们把webpack配置文件名拓展改为.ts时,webpack也会自动读取该拓展名下的文件。即不需要这样设置:

>> webpack --config webpack.config.ts

webpack会自动帮我们读取webpack.config.ts文件,不需要我们再去设置了

(2)编写webpack.config.ts配置文件

利用TypeScript编写webpack配置文件时,webpack配置文件的结构同以前一样,只不过语言变为Typescript而已。

//webpack.config.ts

import path from 'path'
import webpack from 'webpack'
?
const config: webpack.Configuration = {
  entry: './src/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist'),
    publicPath: path.resolve(__dirname, 'dist'),
  },
}
export default config

在本webpack配置文件webpack.config.ts中,我们把require语法改为ts中的import、export静态模块引入导出的语法,以便我们测试。

3、编写TypeScript配置文件

通常来说,大多情况下,我们使用某种语法、插件等,它都会有自己一份默认的配置,在比较简单的项目中,毋需我们编写配置文件。

但是,在利用TypeScript书写webpack配置文件时,我们还需要额外编写TypeScript配置文件tsconfig.json:

{
  "compilerOptions": {
    /* ts-node只支持commonjs规范 */
    "module": "commonjs",
    "target": "es5",
    "esModuleInterop": true,
  }
}

这是因为我们在前面安装的依赖ts-node不支持commonjs之外的模块语法,所以我们必须在TypeScript的配置文件tsconfig.json配置compilerOptions中module字段为:commonjs,

否则,webpack会报错。

ps:在安装依赖的时候,我们也需要考虑依赖的局限性。比如某些依赖依赖于其他的依赖,在项目开发的时候,我们需要把其涉及到的其他依赖一同安装。另外,依赖不是万能的,在确定安装依赖的时候,需要额外去学习该依赖相关知识。


coffeeScript

1、安装依赖

与上面的内容相似,首先我们需要安装相关依赖:

npm install --save-dev coffee-script

2、编写webpack配置文件

(1)把webpack配置文件的文件名改为:webpack.config.coffee

CoffeeScript的文件拓展名为.coffee,所以我们需要同时把webpack配置文件的文件名改为.coffee拓展名(原来默认为webpack.config.js)

当我们把webpack配置文件名拓展改为.coffee时,webpack也会自动读取该拓展名下的文件。即不需要这样设置:

webpack --config webpack.config.coffee

webpack会自动帮我们读取webpack.config.coffee文件,不需要我们再去设置

(2)利用coffeeScript重新编写webpack.config.coffee文件

//webpack.config.coffee

webpack = require('webpack')
path = require('path')

config =
  mode: 'production'
  entry: './src/index.js'
  output:
    path: path.resolve(__dirname, 'dist')
    filename: 'bundle.js'

module.exports = config

用coffeeScript编写webpack配置文件时,毋需向TypeScript一样编写ts配置文件,因为coffeeScript安装的依赖没有其他的兼容性问题出现。


ES6

利用es6写webpack配置文件的原理同上面一样,都是把其他类型的语言语法编译成原生js。把es6编译成原生js可以使用babel进行编译(也有其他选择)。

1、安装依赖

npm install --save-dev babel-core babel-loader babel-preset-es2015 babel-preset-stage-3

其中,要使用babel编译器,我们需要安装的依赖有babel-core。babel-core包中囊括了babel的核心方法。

2、编写webpack配置文件

由于es6语法写的文件名拓展也是.js,那么webpack如何识别该js文件,并把它交予babel进行编译呢?

(1)webpack.config.[loader].js

把webpack配置文件的文件名改为webpack.config.babel.js,其中babel字段表示需要优先使用babel-loader对该webpack配置文件进行编译。同样地,我们可以把webpack.config.[loader].js中的[loader]替换成我们需要的loader名。

这也是我们需要安装babel-loader的原因。

(2)编写webpack.config.babel.js

为了体现es6语法,我们把webpack配置文件改写成:

import path from 'path'
// example of an imported plugin
const CustomPlugin = config => ({
  ...config,
  name: 'custom-plugin'
});
?
export default {
  entry: './src/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  },
}

其中,import、export、... 语法为es6语法

3、编写babel配置文件.babelrc

babel实质是一个支持众多语法编译转化的编译器,为了保证babel的可拓展性,作者把babel设计成可以灵活配置,支持安装插件的模式。因此,我们需要自行配置babel,使之支持es6编译。

{
  "presets": [ "es2015", "stage-3"],
}

其中,我们需要安装babel-preset-es2015的包,使得babel支持es6编译。

另外,使用...config语法需要安装babel-preset-stage-3包,否则会编译错误。

总之,我们可以使用各种各样的语言语法来编写webpack配置文件,它们的原理都是使用对应的编译器编译成原生的js。所以我们在编程的时候,都需要安装编译器的相关依赖,并且在必要的时候,还需要对编译器进行配置。

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/2685

相关推荐

WebPack中Plugins的使用和整理,以及常用的Plugins插件

Plugins是webpack的基础,我们都知道webpage的plugin是基于事件机制工作的,这样最大的好处是易于扩展。讲解如果扩展内置插件和其他插件,以及我们常用的Plugins插件

Webpack 4正式发布了!

新版 Webpack 中我们所做的每一个更新目的都在于此,为了当大家在使用 Webpack 的时候敏捷连续毫无顿挫感。 webpack 4 进行构建性能测试,得出的结果非常有趣。结果很惊人,构建时间降低了 60%-98%!

大多数项目中会用到的webpack小技巧

webpack技巧的总结:进度汇报、压缩、复数文件打包、分离app文件与第三方库文件、资源映射、输出css文件、开发模式、分析包的大小、更小的react项目、更小的Lodash、引入文件夹中所有文件、清除extract-text-webpack-plugin日志。

什么是webpack?Webpack的核心概念

Webpack已经流行好久了,但很多同学使用webpack时还是一头雾水,一下看到那么多文档、各种配置、各种loader、plugin立马就晕头转向了。我也不例外,以至于很长一段时间对webpack都是一知半解的状态

如何写 Webpack 配置文件

本文从一个小Demo开始,通过不断增加功能来说明webpack的基本配置,只针对新手。webpack基本的配置就可以熟悉了,会引入loader,配置loader选项,会设置alias,会用plugins差不多。

webpack项目轻松混用css module

本文讲述css-loader开启css模块功能之后,如何与引用的npm包中样式文件不产生冲突。比如antd-mobilenpm包的引入。在不做特殊处理的前提下,样式文件将会被转译成css module。

Vue -- webpack 项目自动打包压缩成zip文件

这段时间用 Vue2.0 开发项目,每次打包都会用到 npm run build 命令,但是每次部署时给后端发包都要手动zip压缩,这样一两次还行,但遇到项目板块测试和临时加急功能测试的时候,一天可能就要打包好多次,这就很烦了。

webpack3 升级 webpack4踩坑记录

安装webpack4最新版本;这个在webpack3中,webpack本身和它的CLI是在同一个包中,webpack4中将两个分开管理。记得添加mode用来告知 webpack 使用相应环境的内置优化

Vue中使用webpack别名的方法

Vue中使用webpack别名的方法,需要引入公共文件,但是公共文件的文件路径里当前文件很远,那么就会形成上面示例中的那种路径很长的情况。而因为文件目录是约定俗成的,不可轻易更改,无法修改相对路径。那么该怎么办呢?

通用、封装、简化 webpack 配置

现在,基本上前端的项目打包都会用上 webpack,因为 webpack 提供了无与伦比强大的功能和生态。但在创建一个项目的时候,总是免不了要配置 webpack,很是麻烦。简化 webpack 配置的一种方式是使用社区封装好的库,比如 roadhog。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!