最近打算重构一下Wikiplus(虽然应该会在高考后进行),又一直对ES6的某些语法……比如Class这种甜甜的语法糖……垂涎已久,于是今天就构建了一下环境。
首先,必须准备Node.js环境,Grunt也是基于Node.js的。Babel也需要通过Node.js的包管理器npm来安装。
如何安装Node.js不讲了,这里有个小点,如果在墙内使用npm有困难,可以用淘宝提供的cnpm镜像。
首先在项目目录建立npm用的package.json,我的大概是这样的
{ "name": "Wikiplus", "version": "0.1.0", "description": "A front-end jQuery-based Mediawiki plugin.", "license": "Apache", "devDependencies": { "grunt": "~0.4.1", //grunt本体 "grunt-babel": "^5.0.3", "grunt-contrib-uglify": "~0.2.1", //js压缩用的 "grunt-contrib-watch": "^0.6.1", //grunt监视文件变动的 "load-grunt-tasks": "^3.3.0" //grunt任务载入用的 } }
然后在这个目录执行npm install,npm就会帮你装好所有需要的包。
然后在这个目录建立Gruntfile.js,来定义grunt的行为。
我的大概长这样
module.exports = function (grunt) { require('load-grunt-tasks')(grunt); grunt.initConfig({ uglify: { options: { }, app_task: { files: { './Main.min.js': './Main.js' } } }, babel: { options: { sourceMap: true }, dist: { files: { './Main.js': './Main.new.js' } } }, watch: { another: { files: ['./Main.new.js'], tasks: ['babel','uglify'], // 先babel翻译,再压缩 options: { // Start another live reload server on port 1337 livereload: 1337 } } } }); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.registerTask('default', ['watch']); //定义默认执行的任务 }
然后执行grunt就行了……grunt就可以监视你的文件变动,每当我保存Main.new.js的时候,会把它用Babel转译存到Main.js,再用uglifyJS压缩存到Main.min.js。工作量一下子就小了好多!再也不用手工执行这个那个了……好棒>.<
顺便我最近已经抛弃了Sublime改用Visual Studio Code。感觉VSC更厉害也更好用一些。不过VSC对ES6默认是会划红线的,需要在文件夹下建立一个jsconfig.json,内容如下
{ "compilerOptions": { "target": "ES6" }, "files": [ "Main.new.js" ] }
来避免对ES6的报错。
屌屌屌
菊苣不要黑
我哪有黑你
有 我说有就有