fix some bugs
diff --git a/.gitignore b/.gitignore
index 074de94..81ee3b6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
node_modules
lib
-test/actual/*.js
\ No newline at end of file
+test/actual/*.js
+*.log
\ No newline at end of file
diff --git a/README.md b/README.md
index afab1e5..d84a10e 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@
## Feature
0. Can load `.we` file.
-1. Can load parted files(`.js/.css/.html`) via a `src` attribute.
+1. Can load parted files(`.js/.css/.html`) via `src` attribute.
2. Can specify a custom language to chain any loader.
3. Can specify name when require `.we` file.
4. Can write es2015 in script.
@@ -45,42 +45,14 @@
### How to write parted files
-#### write .js/.css/.html anywhere
-
-**main.js as script**
-```javascript
-module.exports = {
- data: function () {
- return {
- text: 'Hello World'
- }
- }
-}
-```
-
-**main.css as style**
-```css
-.h1 {
- font-size: 60px;
- color: red;
-}
-```
-
-**main.html as template**
-```html
-<div>
- <text class="h1">{{text}}</text>
-</div>
-```
-
-**main.we**
+**specify `src` attribute**
```html
<template src="./main.html"></template>
<style src="./main.css"></style>
<script src="./main.js"></script>
```
-#### add some custom language for loaders
+### add some custom language for loaders
**append a weex config in webpack config**
```javascript
@@ -131,12 +103,12 @@
<template>
<div>
<fooo></fooo>
- <barr></barr>
+ <baar></baar>
</div>
</template>
<script>
- require('./bar.we?name=barr')
+ require('./bar.we?name=baar')
</script>
```
diff --git a/package.json b/package.json
index 70df19e..93cd7cb 100644
--- a/package.json
+++ b/package.json
@@ -45,6 +45,7 @@
"webpack": "~1.13.0"
},
"dependencies": {
+ "hash-sum": "^1.0.2",
"loader-utils": "~0.2.14",
"md5": "^2.1.0",
"source-map": "^0.5.6",
diff --git a/src/extract.js b/src/extract.js
index 28485b5..df79ddb 100644
--- a/src/extract.js
+++ b/src/extract.js
@@ -19,13 +19,11 @@
extractBlocks(source, type)
.then(result => {
if (index != null) {
- return result[index].content
+ result = result[index]
}
- else {
- return result.content
- }
- }).then(result => {
- callback(null, result)
+ return result.content
+ }).then(content => {
+ callback(null, content)
}).catch(e => {
callback(e, '')
})
diff --git a/src/loader.js b/src/loader.js
index 674cd65..0403140 100644
--- a/src/loader.js
+++ b/src/loader.js
@@ -5,6 +5,7 @@
import * as config from './config'
import * as legacy from './legacy'
+
import {
parseFragment
} from './parser'
@@ -62,6 +63,8 @@
if (type === 'template') {
loaders = [{
+ name: defaultLoaders.json
+ }, {
name: defaultLoaders.template
}]
if (customLoader) {
@@ -89,6 +92,8 @@
if (type === 'style') {
loaders = [{
+ name: defaultLoaders.json
+ }, {
name: defaultLoaders.style
}]
if (customLoader) {
@@ -186,7 +191,6 @@
function loader (source) {
this.cacheable && this.cacheable()
-
const options = this.options.weex || {}
const customLang = options.lang || {}
@@ -345,10 +349,12 @@
` + (
frag.script.length > 0 ? `
__weex_script__(__weex_require__, __weex_exports__, __weex_module__)
+ if (__weex_exports__.__esModule && __weex_exports__.default) {
+ __weex_module__.exports = __weex_exports__.default
+ }
` : ''
) +
`
- __weex_module__.exports = __weex_module__.exports || {}
__weex_module__.exports.template = __weex_template__
` + (
frag.style.length > 0 ? `
diff --git a/src/script.js b/src/script.js
index b0456a5..423bf96 100644
--- a/src/script.js
+++ b/src/script.js
@@ -1,5 +1,5 @@
import {
- parseScript
+ parseScript
} from './parser'
module.exports = function (source) {
@@ -8,27 +8,29 @@
const callback = this.async()
parseScript(source)
- .then(({ parsed }) => {
- let requireList = parsed.match(/require\([^()]+?\)/g)
+ .then(({
+ parsed
+ }) => {
+ let requireList = parsed.match(/require\([^()]+?\)/g)
- if (requireList && requireList.length > 0) {
- requireList = requireList.filter(str => {
- if (str.indexOf('@weex-module') < 0) {
- parsed = parsed.replace(str, '')
- return true
- }
- return false
- }).join('\n')
+ if (requireList && requireList.length > 0) {
+ requireList = requireList.filter(str => {
+ if (str.indexOf('@weex-module') < 0) {
+ parsed = parsed.replace(str, '')
+ return true
}
+ return false
+ }).join('\n')
+ }
- const result = `
+ const result = `
${requireList || ''}
module.exports = function(require, exports, module){
- ${parsed}
+${parsed}
}
`
- callback(null, result)
- }).catch(e => {
- callback(e, '')
- })
+ callback(null, result)
+ }).catch(e => {
+ callback(e, '')
+ })
}
diff --git a/src/style.js b/src/style.js
index 01de0ca..3ddbe0a 100644
--- a/src/style.js
+++ b/src/style.js
@@ -16,9 +16,7 @@
if (log && log.length) {
logWarn(this, log)
}
- return `module.exports = ${parsed}\n`
- }).then(result => {
- callback(null, result)
+ callback(null, parsed)
}).catch(e => {
callback(e, '')
})
diff --git a/src/template.js b/src/template.js
index 12332cf..aec4fb5 100644
--- a/src/template.js
+++ b/src/template.js
@@ -16,9 +16,7 @@
if (log && log.length) {
logWarn(this, log)
}
- return `module.exports = ${parsed}\n`
- }).then(result => {
- callback(null, result)
+ callback(null, parsed)
}).catch(e => {
callback(e, '')
})
diff --git a/test/expect/k.js b/test/expect/k.js
index 2676b37..fda9399 100644
--- a/test/expect/k.js
+++ b/test/expect/k.js
@@ -1,7 +1,7 @@
{
"@weex-component/215a3c96c2c3802f228bf7ceec470c73": {
- "ready": "function ready() {\n\t _modal2.default.toast({ 'message': 'ready' });\n\t}",
- "data": "function data() {\n\t return {\n\t hi: 'Hello',\n\t name: 'Weex'\n\t };\n\t}",
+ "ready": "function ready() {\n\t _modal2.default.toast({ 'message': 'ready' });\n\t }",
+ "data": "function data() {\n\t return {\n\t hi: 'Hello',\n\t name: 'Weex'\n\t };\n\t }",
"template": {
"type": "div",
"classList": [
diff --git a/test/npm-debug.log b/test/npm-debug.log
deleted file mode 100644
index cad643e..0000000
--- a/test/npm-debug.log
+++ /dev/null
@@ -1,158 +0,0 @@
-0 info it worked if it ends with ok
-1 verbose cli [ '/Users/terry 1/versions/node/v4.2.2/bin/node',
-1 verbose cli '/Users/terry/versions/node/v4.2.2/bin/npm',
-1 verbose cli 'install',
-1 verbose cli 'weex-loader',
-1 verbose cli 'babel-loader',
-1 verbose cli ' ' ]
-2 info using npm@3.9.6
-3 info using node@v4.2.2
-4 silly loadCurrentTree Starting
-5 silly install loadCurrentTree
-6 silly install readLocalPackageData
-7 silly fetchPackageMetaData weex-loader
-8 silly fetchPackageMetaData babel-loader@^6.2.4
-9 silly fetchPackageMetaData
-10 silly fetchNamedPackageData babel-loader
-11 silly mapToRegistry name babel-loader
-12 silly mapToRegistry using default registry
-13 silly mapToRegistry registry http://registry.npmjs.org/
-14 silly mapToRegistry data Result {
-14 silly mapToRegistry raw: 'babel-loader',
-14 silly mapToRegistry scope: null,
-14 silly mapToRegistry name: 'babel-loader',
-14 silly mapToRegistry rawSpec: '',
-14 silly mapToRegistry spec: 'latest',
-14 silly mapToRegistry type: 'tag' }
-15 silly mapToRegistry uri http://registry.npmjs.org/babel-loader
-16 silly fetchNamedPackageData weex-loader
-17 silly mapToRegistry name weex-loader
-18 silly mapToRegistry using default registry
-19 silly mapToRegistry registry http://registry.npmjs.org/
-20 silly mapToRegistry data Result {
-20 silly mapToRegistry raw: 'weex-loader',
-20 silly mapToRegistry scope: null,
-20 silly mapToRegistry name: 'weex-loader',
-20 silly mapToRegistry rawSpec: '',
-20 silly mapToRegistry spec: 'latest',
-20 silly mapToRegistry type: 'tag' }
-21 silly mapToRegistry uri http://registry.npmjs.org/weex-loader
-22 silly fetchDirectoryPackageData null
-23 verbose request uri http://registry.npmjs.org/weex-loader
-24 verbose request no auth needed
-25 info attempt registry request try #1 at 03:16:37
-26 verbose request using bearer token for auth
-27 verbose request id b05395499c9e154f
-28 http request GET http://registry.npmjs.org/weex-loader
-29 verbose request uri http://registry.npmjs.org/babel-loader
-30 verbose request no auth needed
-31 info attempt registry request try #1 at 03:16:37
-32 verbose request using bearer token for auth
-33 verbose etag "EW23D9MKRNP2807DDKRUKPXG"
-34 http request GET http://registry.npmjs.org/babel-loader
-35 http 200 http://registry.npmjs.org/weex-loader
-36 verbose headers { server: 'CouchDB/1.5.0 (Erlang OTP/R16B03)',
-36 verbose headers etag: '"84NTPFZCZIPAGB6NSL28IXNOE"',
-36 verbose headers 'content-type': 'application/json',
-36 verbose headers 'content-encoding': 'gzip',
-36 verbose headers 'cache-control': 'max-age=300',
-36 verbose headers 'transfer-encoding': 'chunked',
-36 verbose headers 'accept-ranges': 'bytes',
-36 verbose headers date: 'Sat, 09 Jul 2016 19:13:18 GMT',
-36 verbose headers via: '1.1 varnish',
-36 verbose headers connection: 'keep-alive',
-36 verbose headers 'x-served-by': 'cache-lcy1123-LCY',
-36 verbose headers 'x-cache': 'MISS',
-36 verbose headers 'x-cache-hits': '0',
-36 verbose headers 'x-timer': 'S1468091598.000096,VS0,VE356',
-36 verbose headers vary: 'Accept-Encoding' }
-37 silly get cb [ 200,
-37 silly get { server: 'CouchDB/1.5.0 (Erlang OTP/R16B03)',
-37 silly get etag: '"84NTPFZCZIPAGB6NSL28IXNOE"',
-37 silly get 'content-type': 'application/json',
-37 silly get 'content-encoding': 'gzip',
-37 silly get 'cache-control': 'max-age=300',
-37 silly get 'transfer-encoding': 'chunked',
-37 silly get 'accept-ranges': 'bytes',
-37 silly get date: 'Sat, 09 Jul 2016 19:13:18 GMT',
-37 silly get via: '1.1 varnish',
-37 silly get connection: 'keep-alive',
-37 silly get 'x-served-by': 'cache-lcy1123-LCY',
-37 silly get 'x-cache': 'MISS',
-37 silly get 'x-cache-hits': '0',
-37 silly get 'x-timer': 'S1468091598.000096,VS0,VE356',
-37 silly get vary: 'Accept-Encoding' } ]
-38 verbose get saving weex-loader to /Users/terry/.npm/registry.npmjs.org/weex-loader/.cache.json
-39 verbose correctMkdir /Users/terry/.npm correctMkdir not in flight; initializing
-40 http 200 http://registry.npmjs.org/babel-loader
-41 verbose headers { server: 'CouchDB/1.5.0 (Erlang OTP/R16B03)',
-41 verbose headers etag: '"CN9KCPC8USQ6FOZKEY58UCARS"',
-41 verbose headers 'content-type': 'application/json',
-41 verbose headers 'content-encoding': 'gzip',
-41 verbose headers 'cache-control': 'max-age=300',
-41 verbose headers 'transfer-encoding': 'chunked',
-41 verbose headers 'accept-ranges': 'bytes',
-41 verbose headers date: 'Sat, 09 Jul 2016 19:13:18 GMT',
-41 verbose headers via: '1.1 varnish',
-41 verbose headers connection: 'keep-alive',
-41 verbose headers 'x-served-by': 'cache-lcy1129-LCY',
-41 verbose headers 'x-cache': 'MISS',
-41 verbose headers 'x-cache-hits': '0',
-41 verbose headers 'x-timer': 'S1468091597.995738,VS0,VE698',
-41 verbose headers vary: 'Accept-Encoding' }
-42 silly get cb [ 200,
-42 silly get { server: 'CouchDB/1.5.0 (Erlang OTP/R16B03)',
-42 silly get etag: '"CN9KCPC8USQ6FOZKEY58UCARS"',
-42 silly get 'content-type': 'application/json',
-42 silly get 'content-encoding': 'gzip',
-42 silly get 'cache-control': 'max-age=300',
-42 silly get 'transfer-encoding': 'chunked',
-42 silly get 'accept-ranges': 'bytes',
-42 silly get date: 'Sat, 09 Jul 2016 19:13:18 GMT',
-42 silly get via: '1.1 varnish',
-42 silly get connection: 'keep-alive',
-42 silly get 'x-served-by': 'cache-lcy1129-LCY',
-42 silly get 'x-cache': 'MISS',
-42 silly get 'x-cache-hits': '0',
-42 silly get 'x-timer': 'S1468091597.995738,VS0,VE698',
-42 silly get vary: 'Accept-Encoding' } ]
-43 verbose get saving babel-loader to /Users/terry/.npm/registry.npmjs.org/babel-loader/.cache.json
-44 verbose correctMkdir /Users/terry/.npm correctMkdir not in flight; initializing
-45 silly install normalizeTree
-46 silly loadCurrentTree Finishing
-47 silly loadIdealTree Starting
-48 silly install loadIdealTree
-49 silly cloneCurrentTree Starting
-50 silly install cloneCurrentTreeToIdealTree
-51 silly cloneCurrentTree Finishing
-52 silly loadShrinkwrap Starting
-53 silly install loadShrinkwrap
-54 silly loadShrinkwrap Finishing
-55 silly loadAllDepsIntoIdealTree Starting
-56 silly install loadAllDepsIntoIdealTree
-57 silly rollbackFailedOptional Starting
-58 silly rollbackFailedOptional Finishing
-59 silly runTopLevelLifecycles Starting
-60 silly runTopLevelLifecycles Finishing
-61 silly install printInstalled
-62 verbose stack Error: Refusing to install weex-loader as a dependency of itself
-62 verbose stack at checkSelf (/Users/terry 1/versions/node/v4.2.2/lib/node_modules/npm/lib/install/validate-args.js:53:14)
-62 verbose stack at Array.<anonymous> (/Users/terry 1/versions/node/v4.2.2/lib/node_modules/npm/node_modules/slide/lib/bind-actor.js:15:8)
-62 verbose stack at LOOP (/Users/terry 1/versions/node/v4.2.2/lib/node_modules/npm/node_modules/slide/lib/chain.js:15:14)
-62 verbose stack at chain (/Users/terry 1/versions/node/v4.2.2/lib/node_modules/npm/node_modules/slide/lib/chain.js:20:5)
-62 verbose stack at /Users/terry 1/versions/node/v4.2.2/lib/node_modules/npm/lib/install/validate-args.js:16:5
-62 verbose stack at /Users/terry 1/versions/node/v4.2.2/lib/node_modules/npm/node_modules/slide/lib/async-map.js:52:35
-62 verbose stack at Array.forEach (native)
-62 verbose stack at /Users/terry 1/versions/node/v4.2.2/lib/node_modules/npm/node_modules/slide/lib/async-map.js:52:11
-62 verbose stack at Array.forEach (native)
-62 verbose stack at asyncMap (/Users/terry 1/versions/node/v4.2.2/lib/node_modules/npm/node_modules/slide/lib/async-map.js:51:8)
-63 verbose cwd /Users/terry 1/Develop/taobao/weex/toolchain/weex-loader/test
-64 error Darwin 15.0.0
-65 error argv "/Users/terry 1/versions/node/v4.2.2/bin/node" "/Users/terry/versions/node/v4.2.2/bin/npm" "install" "weex-loader" "babel-loader" " "
-66 error node v4.2.2
-67 error npm v3.9.6
-68 error code ENOSELF
-69 error Refusing to install weex-loader as a dependency of itself
-70 error If you need help, you may report this error at:
-70 error <https://github.com/npm/npm/issues>
-71 verbose exit [ 1, true ]
diff --git a/test/spec/k.we b/test/spec/k.we
index c07c5ba..de0c0ba 100644
--- a/test/spec/k.we
+++ b/test/spec/k.we
@@ -31,14 +31,16 @@
<script>
import modal from '@weex-module/modal'
-export function ready() {
- modal.toast({'message': 'ready'})
-}
+export default {
+ ready() {
+ modal.toast({'message': 'ready'})
+ },
-export function data() {
- return {
- hi: 'Hello',
- name: 'Weex'
+ data() {
+ return {
+ hi: 'Hello',
+ name: 'Weex'
+ }
}
}
</script>
\ No newline at end of file