将Browserify集成到Cordova的最佳方式

时间:2018-01-07 05:40:30

标签: cordova browserify cordova-hooks

我试图将Browserify整合到Cordova中。我做了以下事情:

  • 已安装Browserify:
    npm install -g browserify
  • 将index.js移至根:
    mv www/js/index.js .
  • 创建了一个名为 appBeforeBuild.sh 的钩子脚本,它将 index.js 转换为 bundle.js
    {{1} }
    编辑 - 请参阅下面的答案
  • 更新 config.xml 以运行挂钩:
    browserify index.js -o www/js/bundle.js
  • 更新 index.html 以包含 bundle.js 而不是 index.js
    <hook src="appBeforeBuild.sh" type="before_build" />

这个可能是将Browserify集成到Cordova的好指南,但遗憾的是它无法正常工作,因为编辑'index.js'不会触发重新编译。

  

请有人解释如何将index.js设置为文件   检查构建依赖项并触发 before_build 挂钩?

1 个答案:

答案 0 :(得分:0)

我的问题中的检查清单适合将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。

TIPS:

  • timestamp_indexjs.txt 添加到 .gitignore 文件中。
  • 调查Cordova问题时,请使用-d选项运行,如cordova -d build android