我试图将Browserify集成到Cordova中。我做了以下工作:
- 已安装的浏览器:
npm install -g browserify
- 已将索引.js移动到根:
mv www/js/index.js .
- 创建了一个名为 appBeforeBuild.sh 的钩子脚本,它将 index.js 转换为 bundle.js:
browserify index.js -o www/js/bundle.js
编辑 - 请在下面查看我的答案 - 更新了配置.xml运行钩子:
<hook src="appBeforeBuild.sh" type="before_build" />
- 更新了索引.html以包含捆绑包.js而不是索引.js:
<script type="text/javascript" src="js/bundle.js"></script>
这可能是将 Browserify 集成到 Cordova 中的一个很好的指南,但不幸的是它不起作用,因为编辑"index.js"不会触发重新编译。
任何人都可以解释如何将 index.js 设置为一个文件 检查构建依赖项并触发before_build钩子?
我问题中的检查列表对于将 Browserify 集成到 Cordova 中很好,但应该更正 [before_build] 脚本。以下是适用于 Mac OSX 的脚本:
文件: appBeforeBuild.sh
echo "[before_build] Start"
b=$(stat -f "%Sm" -t "%Y%m%dT%H%M%S" index.js)
if [ -f timestamp_indexjs.txt ]; then
a=$(cat timestamp_indexjs.txt)
if [ $a == $b ]; then
echo "- No change in index.js"
else
echo "- Calling Browserify (timestamp was changed)"
echo $b>timestamp_indexjs.txt
browserify index.js -o www/js/bundle.js
fi
else
echo "- Calling Browserify (First run, no timestamp)"
echo $b>timestamp_indexjs.txt
browserify index.js -o www/js/bundle.js
fi
echo "[before_build] End"
必须授予此文件的执行权限:
chmod +x appBeforeBuild.sh
此脚本中的想法是确保仅在 index.js 被更改时才调用 Browserify。
技巧:
- 将timestamp_indexjs.txt放入您的 .gitignore 文件中。
- 调查 Cordova 问题时,请使用
-d
选项运行它,如cordova -d build android