release v0.6.6 replace queryParse with getOptions.
diff --git a/package-lock.json b/package-lock.json
index 399b195..8889938 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
 {
   "name": "weex-loader",
-  "version": "0.6.5",
+  "version": "0.6.6",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
diff --git a/package.json b/package.json
index 5bb0a0f..32abc1f 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "weex-loader",
-  "version": "0.6.5",
+  "version": "0.6.6",
   "description": "a webpack loader for weex",
   "main": "index.js",
   "author": "terrykingcha <terrykingcha@gmail.com>",
diff --git a/src/element.js b/src/element.js
index 378a261..46ed9b7 100644
--- a/src/element.js
+++ b/src/element.js
@@ -8,8 +8,8 @@
   this.cacheable && this.cacheable()
 
   const callback = this.async()
-  const loaderQuery = loaderUtils.parseQuery(this.query)
-  const resourceQuery = loaderUtils.parseQuery(this.resourceQuery)
+  const loaderQuery = loaderUtils.getOptions(this) || {}
+  const resourceQuery = loaderUtils.parseQuery(this.resourceQuery) || {}
   const name = resourceQuery.name
 
   let contentPromise
diff --git a/src/extract.js b/src/extract.js
index 244fea4..2e4515b 100644
--- a/src/extract.js
+++ b/src/extract.js
@@ -14,7 +14,7 @@
   this.cacheable && this.cacheable()
 
   const callback = this.async()
-  const loaderQuery = loaderUtils.parseQuery(this.query)
+  const loaderQuery = loaderUtils.getOptions(this)
   const type = loaderQuery.type
   let index = loaderQuery.index
 
diff --git a/src/loader.js b/src/loader.js
index 4f49781..9700541 100644
--- a/src/loader.js
+++ b/src/loader.js
@@ -2,21 +2,19 @@
 import path from 'path'
 import fs from 'fs'
 import md5 from 'md5'
-
 import * as config from './config'
 import * as legacy from './legacy'
-
 import {
   parseFragment
-} from './parser'
+}
+from './parser'
 import {
   getNameByPath,
   getRequireString,
   stringifyLoaders
-} from './util'
-
+}
+from './util'
 import vueLoader from 'weex-vue-loader'
-
 const loaderPath = __dirname
 const defaultLoaders = {
   none: '',
@@ -29,7 +27,7 @@
   babel: loadBabelModule('babel-loader')
 }
 
-function loadBabelModule (moduleName) {
+function loadBabelModule(moduleName) {
   try {
     const filePath = require.resolve(moduleName)
     return filePath.slice(0, filePath.lastIndexOf(moduleName) + moduleName.length)
@@ -39,22 +37,19 @@
   }
 }
 
-function getLoaderString (type, config) {
+function getLoaderString(type, config) {
   config = config || {}
   let customLoader
   let loaders
-
   if (config.lang && config.customLang[config.lang]) {
     customLoader = config.customLang[config.lang]
   }
-
   if (type === 'main') {
     loaders = [{
       name: defaultLoaders.main
     }]
     return stringifyLoaders(loaders)
   }
-
   if (type === 'element') {
     loaders = [{
       name: defaultLoaders.main,
@@ -73,7 +68,6 @@
     }
     return stringifyLoaders(loaders)
   }
-
   if (type === 'template') {
     loaders = [{
       name: defaultLoaders.json
@@ -102,7 +96,6 @@
     }
     return stringifyLoaders(loaders)
   }
-
   if (type === 'style') {
     loaders = [{
       name: defaultLoaders.json
@@ -132,7 +125,6 @@
     }
     return stringifyLoaders(loaders)
   }
-
   if (type === 'script') {
     loaders = [{
       name: defaultLoaders.script
@@ -170,7 +162,6 @@
     }
     return stringifyLoaders(loaders)
   }
-
   if (type === 'config') {
     loaders = [{
       name: defaultLoaders.json
@@ -185,7 +176,6 @@
     }
     return stringifyLoaders(loaders)
   }
-
   if (type === 'data') {
     loaders = [{
       name: defaultLoaders.json
@@ -202,32 +192,24 @@
   }
 }
 
-function loader (source) {
+function loader(source) {
   this.cacheable && this.cacheable()
-
-  // Support *.vue files.
-  // If file extname is vue then go to `weex-vue-loader`.
+    // Support *.vue files.
+    // If file extname is vue then go to `weex-vue-loader`.
   if (path.extname(this.resourcePath).match(/\.vue/)) {
     return vueLoader.call(this, source)
   }
-
   const options = this.options.weex || {}
   const customLang = options.lang || {}
-
-  const loaderQuery = loaderUtils.parseQuery(this.query)
-  const resourceQuery = loaderUtils.parseQuery(this.resourceQuery)
+  const loaderQuery = loaderUtils.getOptions(this) || {}
+  const resourceQuery = this.resourceQuery && loaderUtils.parseQuery(this.resourceQuery) || {}
   const resourcePath = this.resourcePath
   const isElement = loaderQuery.element
   const isEntry = resourceQuery.entry
   const filename = path.relative('.', resourcePath)
-  const name = isEntry ? md5(fs.readFileSync(filename)) :
-    (resourceQuery.name ||
-                            getNameByPath(resourcePath))
-
+  const name = isEntry ? md5(fs.readFileSync(filename)) : (resourceQuery.name || getNameByPath(resourcePath))
   let output = ''
-
   const frag = parseFragment(source)
-
   const elementNames = []
   if (frag.element.length) {
     for (let i = 0; i < frag.element.length; i++) {
@@ -237,38 +219,25 @@
         return ''
       }
       elementNames.push(element.name)
-
       let src = resourcePath
       if (element.src) {
         src = element.src
       }
-
-      output += getRequireString(
-        this,
-        getLoaderString('element', {
-          customLang,
-          name: element.name,
-          source: element.src
-        }),
-        `${src}?name=${element.name}`
-      )
+      output += getRequireString(this, getLoaderString('element', {
+        customLang,
+        name: element.name,
+        source: element.src
+      }), `${src}?name=${element.name}`)
     }
   }
-
   if (frag.deps.length) {
     for (const dep of frag.deps) {
       const filepath = path.resolve(path.dirname(resourcePath), `${dep}.we`)
-      if (elementNames.indexOf(dep) < 0
-            && fs.existsSync(filepath)) {
-        output += getRequireString(
-          this,
-          getLoaderString('none'),
-          `./${dep}.we`
-        )
+      if (elementNames.indexOf(dep) < 0 && fs.existsSync(filepath)) {
+        output += getRequireString(this, getLoaderString('none'), `./${dep}.we`)
       }
     }
   }
-
   if (!frag.template.length) {
     this.emitError('Template block is required')
     return ''
@@ -279,128 +248,86 @@
     if (template.src) {
       src = template.src
     }
-    output += 'var __weex_template__ = ' +
-                getRequireString(
-                  this,
-                  getLoaderString('template', {
-                    customLang,
-                    lang: template.lang,
-                    element: isElement,
-                    elementName: isElement ? name : undefined,
-                    source: template.src
-                  }),
-                  src
-                )
+    output += 'var __weex_template__ = ' + getRequireString(this, getLoaderString('template', {
+      customLang,
+      lang: template.lang,
+      element: isElement,
+      elementName: isElement ? name : undefined,
+      source: template.src
+    }), src)
   }
-
   if (frag.style.length) {
     const style = frag.style[0]
     let src = resourcePath
     if (style.src) {
       src = style.src
     }
-    output += 'var __weex_style__ = ' +
-                getRequireString(
-                  this,
-                  getLoaderString('style', {
-                    customLang,
-                    lang: style.lang,
-                    element: isElement,
-                    elementName: isElement ? name : undefined,
-                    source: style.src
-                  }),
-                  src
-                )
+    output += 'var __weex_style__ = ' + getRequireString(this, getLoaderString('style', {
+      customLang,
+      lang: style.lang,
+      element: isElement,
+      elementName: isElement ? name : undefined,
+      source: style.src
+    }), src)
   }
-
   if (frag.script.length) {
     const script = frag.script[0]
     let src = resourcePath
     if (script.src) {
       src = script.src
     }
-    output += 'var __weex_script__ = ' +
-                getRequireString(
-                  this,
-                  getLoaderString('script', {
-                    customLang,
-                    lang: script.lang,
-                    element: isElement,
-                    elementName: isElement ? name : undefined,
-                    source: script.src
-                  }),
-                  src
-                )
+    output += 'var __weex_script__ = ' + getRequireString(this, getLoaderString('script', {
+      customLang,
+      lang: script.lang,
+      element: isElement,
+      elementName: isElement ? name : undefined,
+      source: script.src
+    }), src)
   }
-
   if (isEntry && frag.data.length) {
     const data = frag.data[0]
     let src = resourcePath
     if (data.src) {
       src = data.src
     }
-    output += 'var __weex_data__ = ' +
-                getRequireString(
-                  this,
-                  getLoaderString('data', {
-                    source: data.src
-                  }),
-                  src
-                )
+    output += 'var __weex_data__ = ' + getRequireString(this, getLoaderString('data', {
+      source: data.src
+    }), src)
   }
-
   if (isEntry && frag.config.length) {
     const config = frag.config[0]
     let src = resourcePath
     if (config.src) {
       src = config.src
     }
-    output += 'var __weex_config__ = ' +
-                getRequireString(
-                  this,
-                  getLoaderString('config', {
-                    source: config.src
-                  }),
-                  src
-                )
+    output += 'var __weex_config__ = ' + getRequireString(this, getLoaderString('config', {
+      source: config.src
+    }), src)
   }
-
   output += `
 __weex_define__('@weex-component/${name}', [], function(__weex_require__, __weex_exports__, __weex_module__) {
-` + (
-      frag.script.length > 0 ? `
+` + (frag.script.length > 0 ? `
     __weex_script__(__weex_module__, __weex_exports__, __weex_require__)
     if (__weex_exports__.__esModule && __weex_exports__.default) {
       __weex_module__.exports = __weex_exports__.default
     }
-` : ''
-    ) +
-`
+` : '') + `
     __weex_module__.exports.template = __weex_template__
-` + (
-      frag.style.length > 0 ? `
+` + (frag.style.length > 0 ? `
     __weex_module__.exports.style = __weex_style__
-` : ''
-    ) + `
+` : '') + `
 })
 `
   if (isEntry) {
     output += `
-__weex_bootstrap__('@weex-component/${name}'`
-  + (frag.config.length > 0 ? `,__weex_config__` : ',undefined')
-  + (frag.data.length > 0 ? `,__weex_data__` : ',undefined')
-+ `)`
+__weex_bootstrap__('@weex-component/${name}'` + (frag.config.length > 0 ? `,__weex_config__` : ',undefined') + (frag.data.length > 0 ? `,__weex_data__` : ',undefined') + `)`
   }
-
   return output
 }
-
 loader.setLogLevel = level => {
   config.logLevel = level
 }
-
 for (const key in legacy) {
   loader[key] = legacy[key]
 }
-
 module.exports = loader