将 Browserify 集成到 Cordova 的最佳方式



我试图将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

最新更新