背景
在使用weex init
初始化一個工程之后,會自動創建對應的基本配置文件,按順序執行以下步驟,就可以看到效果
-
npm install
: 安裝配置文件 -
npm run build
: 編譯we文件,會生成一個dist
文件夾,里面是編譯生成的main.js文件 -
npm run serve
: 開啟服務,然后訪問http://localhost:8080/
,即可看到效果
發現問題
使用npm run build
可以編譯main.we文件,但是如過我增加一個新的we文件,再去執行build的時候, 發現還是只能編譯main.we文件,無法build我新建的文件。去gitter上問了一下,說需要配置文件,但是我把官方的demo中的bin
、build
、test
、start
文件拷貝到當前項目中,發現還是無法編譯成js文件,由于對前端配置的不了解,這個問題還在繼續探討,希望可以盡快有個答案。。。。。。
解決
在gitter,提出這個問題后,有人告訴我需要配置webpack.js,需要遍歷所有的入口文件,后來查了一下資料,這是node.js的配置文件,原諒我一個iOS開發者,一下子無法實現,但是收到了另一個同學的配置代碼
require('webpack');
require('weex-loader');
var path = require('path');
var fs=require('fs')
var entry={};
function walk(dir, root) {
var directory = path.join(__dirname, root, dir)
fs.readdirSync(directory)
.forEach(function (file) {
var fullpath = path.join(directory, file)
var stat = fs.statSync(fullpath)
if (stat.isFile() &&
path.extname(fullpath) === '.we') {
var name = path.join( dir, path.basename(file, '.we'))
entry[name] = fullpath + '?entry=true'
} else if (stat.isDirectory()) {
var subdir = path.join(dir, file)
walk(subdir, root)
}
})
}
walk('./', 'src')
module.exports = {
entry: entry,
output: {
path: 'dist',
filename: '[name].js'
},
module: {
loaders: [
{
test: /\.we(\?[^?]+)?$/,
loaders: ['weex-loader']
}
]
}
};
將這一份代碼放到webpack.js中,即可實現將src下所有的we文件,編譯到dist下對應的js文件。
更新
這個問題在weextoolkit 0.6.2
版本中,在init一個項目時,webpack.config.js就已經配置好了。 因此這串代碼也成為留念了。