heroku-buildpack-phoenix-static, 用于构建Phoenix资产 static的Heroku buildpack

分享于 

6分钟阅读

GitHub

  繁體 雙語
A Heroku buildpack for building Phoenix's static assets
  • 源代码名称:heroku-buildpack-phoenix-static
  • 源代码网址:http://www.github.com/gjaldon/heroku-buildpack-phoenix-static
  • heroku-buildpack-phoenix-static源代码文档
  • heroku-buildpack-phoenix-static源代码下载
  • Git URL:
    git://www.github.com/gjaldon/heroku-buildpack-phoenix-static.git
    Git Clone代码到本地:
    git clone http://www.github.com/gjaldon/heroku-buildpack-phoenix-static
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/gjaldon/heroku-buildpack-phoenix-static
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    static Buildpack

    命令行目

    这个Buildpack是用来与 Heroku的Buildpack。 在将Phoenix应用部署到Heroku时,static 资产需要编译。 这个buildpack看到 static 资产被编译,并且生成了相应的资产清单。

    特性

    • 使用 compile hook轻松定制你的构建需求 !
    • 这很像的Buildpack。
    • 带有 phoenix_static_buildpack.config 文件的轻松配置
    • 自动设置 DATABASE_URL
    • 如果你的应用程序没有 Procfile,则将运行默认的web任务 mix phoenix.server
    • 可以配置 node 和NPM的版本
    • 如果 bower.json 在应用程序路径的root 中,则自动安装 Bower
    • 缓存 node,NPM模块和 Bower 组件

    用法

    # Create a Heroku instance for your projectheroku apps:create my_heroku_app# Set and add the buildpacks for your Heroku appheroku buildpacks:set https://github.com/HashNuke/heroku-buildpack-elixir
    heroku buildpacks:add https://github.com/gjaldon/heroku-buildpack-phoenix-static# Deploygit push heroku master

    使用Sass资产的前端服务器

    如果项目提供Sass资产,那么你需要通过 ruby buildpack为 sass-brunch 提供Sass二进制。

    创建一个 Gemfile 以包含 sass gem:

    
    source 'https://rubygems.org'
    
    
    ruby '2.3.1'
    
    
    gem 'sass'
    
    
    
    

    然后运行生成 Gemfile.lock:

    bundle install

    最后,添加 ruby buildpack。

    # Add the ruby buildpack to your Heroku appheroku buildpacks:add https://github.com/heroku/heroku-buildpack-ruby

    配置

    如果要覆盖默认值,请在应用程序目录的root 中创建 phoenix_static_buildpack.config 文件。 文件的语法是 bash。

    如果没有指定配置选项,则将使用 buildpack phoenix_static_buildpack.config 文件的中的默认选项。

    这里有一个完整的配置文件,所有可用选项如下:

    # Clean out cache contents from previous deploysclean_cache=false# We can change the filename for the compile script with this optioncompile="compile"# We can set the version of Node to use for the app herenode_version=5.3.0# We can set the version of NPM to use for the app herenpm_version=2.10.1# We can set the path to phoenix app. E.g. apps/phoenix_app when in umbrella.phoenix_relative_path=.# Remove node and node_modules directory to keep slug size down if it is not needed.remove_node=false# We can change path that npm dependencies are in relation to phoenix app. E.g. assets for phoenix 1.3 support.assets_path=.# We can change phoenix mix namespace tasks. E.g. phx for phoenix 1.3 support.phoenix_ex=phoenix

    编译

    默认情况下,Phoenix使用 brunch,并建议你在生产中使用 mix phoenix.digest。 为这里,我们有一个默认的compile shell script,它在构建依赖关系之后运行,并在完成。 compile 文件看起来像这个。

    要定制应用程序钩子的编译,只需向应用程序目录的root 添加一个 compile 文件。 compile 只是一个 shell script,所以你可以使用任何有效的bash 代码。 记住你可以访问你的node_modulesmix。 这意味着如果你使用的是 node 构建工具,而不是 brunch,你可以执行以下操作:

    # app_root/compilecd$phoenix_dirnpm --prefix./assets run build
    mix "${phoenix_ex}.digest"#use the ${phoenix_ex} variable instead of hardcoding phx or phoenix

    上面的compile 覆盖了默认的。 : )

    常见问题解答

    • 什么时候使用?
    • 只有在部署过程中需要编译 static 资产时,才需要使用这里 buildpack。 如果你只使用Phoenix作为 REST API,则不需要这里 buildpack。
    • 我需要 heroku-buildpack-nodejs
    • 否,这里buildpack为你安装 node。 它与 NodeJS buildpack的区别在于它向路径添加 mix,这样你就可以运行 mix 命令,比如 mix phoenix.digest

    STA  构建  STAT  Building  静态  asset  
    相关文章