插件

通过 WePY 2 的插件机制,开发发可以定制编译流程,完成一些个性化扩展。

目前可使用的插件有:

compiler-babel


compiler-babel 插件:让代码进行 Babel 编译的插件,也是 WePY 2 当中 <script>的默认编译方式。

安装

  1. npm install @wepy/compiler-babel --save-dev

使用

  1. module.exports = {
  2. compilers: {
  3. babel: {
  4. presets: [
  5. 'es2015',
  6. 'stage-1'
  7. ],
  8. plugins: [
  9. 'transform-export-extensions',
  10. 'syntax-export-extensions',
  11. 'transform-runtime'
  12. ]
  13. }
  14. }
  15. };

参数说明

babel官方文档

compiler-typescript


compiler-typescript 插件:让代码支持 Typescript

安装

  1. npm install @wepy/compiler-typescript typescript --save-dev

使用

  1. const TypeScriptCompiler = require('@wepy/compiler-typescript');
  2. module.exports = {
  3. "plugins": [
  4. TypeScriptCompiler()
  5. ]
  6. };

参数说明

Typescript官方文档

compiler-less


安装

  1. npm install @wepy/compiler-less less --save-dev

使用

  1. module.exports = {
  2. compilers: {
  3. less: {
  4. compress: true
  5. }
  6. }
  7. };

参数说明

less 官方文档

compiler-sass


安装

  1. npm install @wepy/compiler-sass --save-dev

使用

  1. module.exports = {
  2. compilers: {
  3. sass: {
  4. outputStyle: 'compressed'
  5. }
  6. }
  7. };

参数说明

node sass

compiler-stylus


安装

  1. npm install @wepy/compiler-stylus --save-dev

使用

  1. module.exports = {
  2. compilers: {
  3. stylus: {
  4. compress: true
  5. }
  6. }
  7. };

参数说明

Stylus 官方文档

compiler-postcss


安装

  1. npm install @wepy/compiler-postcss --save-dev

说明

配置 wepy.config.js ,以使用 cssnext 为例

  1. const cssnext = require('cssnext);
  2. module.exports = {
  3. compilers: {
  4. postcss: {
  5. plugins: [
  6. cssnext({
  7. browsers:['iOS 9', 'Android 4.4']
  8. })
  9. ],
  10. map: {
  11. inline: true
  12. }
  13. },
  14. }
  15. };

参数说明

配置参数为 processOptionsplugins

plugin-define


plugin-define插件:可以在运行时的代码中定义一些常量,然后在编译阶段,这些常量会控预定的配置进行值被替换。

使用

  1. const DefinePlugin = require('@wepy/plugin-define');
  2. module.exports = {
  3. ...
  4. plugins: [
  5. DefinePlugin({
  6. key: value
  7. })
  8. ]
  9. };

其中,key 可以一个字符串,也可以是一个用 . 连接的对象,也可以是 typeof something

  • 当 value 不为字符串时,会先尝试把 value 转化为字符串。
  • 当 value 为字符串时,它会被当前一个代码片段被替换。如果配置是:
  1. DefinePlugin({
  2. URL: "http://www.foo.com"
  3. })

在以下代码中:

  1. var url = URL;

URL 的值会被当作代码片段替换进来,得到如下编译结果:

  1. var url = http://www.foo.com

因为我们需要使用 "'http://www.foo.com'" 或者 JSON.stringify('http://www.foo.com&#39;)

plugin-uglify


plugin-uglify插件:使用 UglifyJS 对编译后的代码进行打混淆压缩。

使用

  1. const UglifyPlugin = require('@wepy/plugin-uglify');
  2. module.exports = {
  3. ...
  4. plugins: [
  5. UglifyPlugin({
  6. // options
  7. })
  8. ]
  9. };

提供的配置选项 options 传传递给 UglifyJS。更多 options 信息可直接查看UglifyJS 官方文档

plugin-eslint

plugin-eslint插件:在编译过程当中开启 ESLint