跳转到主要内容

Django的资产打包器。

项目描述

DPack

DPack是一个静态资产打包器,主要用于Django应用程序。

安装

pip install dpack

DPack包含多个可选处理器,用于处理如压缩和编译等任务

  • pip install dpack[cssmin]
  • pip install dpack[jsmin]
  • pip install dpack[sass]

或者使用pip install dpack[all]来获取所有内容。

配置

DPack可以通过dpack.yaml文件或使用Django时通过DPACK设置进行配置。以下选项可用

  • assets - 一个字典,其键是要创建的文件的路径(相对于output),其值是处理并合并到该文件的文件列表。列表中的每个输入文件都可以通过指定处理器名称后跟冒号来由一个或多个处理器前缀。例如,cssmin:sass:somefile.scss告诉DPack首先使用SASS编译somefile.scss(通过在search目录中搜索找到),然后使用cssmin处理器对其进行压缩。
  • defaults - 一个字典,其键是文件扩展名(不带.),其值是默认用于该类型输入文件的处理器列表。
  • output - 存储打包资产的路径。如果没有指定,这将是使用tempfile.mkdtemp(prefix="dpack-")创建的临时目录。
  • prefix - 最终从URL前缀编译的资产将被服务,当通过rewrite处理器重写CSS文件中的url@import声明时使用。如果使用DPackFinder,则默认为STATIC_URL
  • register - 一个字典,其键是要注册(或覆盖)的处理器名称,其值是解析到可调用的点分路径字符串。请参阅以下处理器。
  • search - 要搜索输入文件的目录列表。如果使用 DPackFinder,输入文件将通过除自身以外的任何 STATICFILES_FINDERS 进行搜索。

示例 dpack.yaml

assets:
  compiled/site.css:
    - app1/first.css
    - app2/second.css
    - cssmin:sass:app3/third.scss
  compiled/site.js:
    - app1/first.js
    - app2/second.js
defaults:
  css:
    - rewrite
    - cssmin
  js:
    - jsmin
output: ./build
prefix: /static/
register:
  custom: myapp.processors.custom
search:
  - ./app1/static
  - ./app2/static

示例 DPACK 设置

DPACK = {
    "assets": {
        "compiled/site.css": [
            "app1/first.css",
            "app2/second.css",
            "cssmin:sass:app3/third.scss",
        ],
        "compiled/site.js": [
            "app1/first.js",
            "app2/second.js",
        ],
    },
    "defaults": {
        "css": ["rewrite", "cssmin"],
        "js": ["jsmin"]
    },
    "output": "./build",
    "register": {
        "custom": "myapp.processors.custom"
    },
}

在 Django 中使用 DPackFinder

只需将 dpack.finders.DPackFinder 添加到您的 STATICFILES_FINDERS 设置中,DPack 将使用 Django 的 staticfiles 应用程序搜索输入,当调用 collectstatic 时输出编译后的资源,并在通过 runserverDEBUG=True) 或通过 django.contrib.staticfiles.views.serve 视图提供时即时生成资源。

STATICFILES_FINDERS = (
    "django.contrib.staticfiles.finders.FileSystemFinder",
    "django.contrib.staticfiles.finders.AppDirectoriesFinder",
    "dpack.finders.DPackFinder",
)

如果您将资源编译到 compiled/css/site.css,您可以通过在模板中使用 {% static "compiled/css/site.css" %} 来引用它,就像引用任何其他静态资源一样。这些资源随后也会通过您的 STATICFILES_STORAGE 进行后处理,因此您可以在无需额外配置的情况下使用如 WhitenoiseCompressedManifestStaticFilesStorage

命令行界面

DPack 附带一个名为 dpack 的命令行实用程序。单独运行时,它将查找 dpack.yaml 配置文件,并根据配置打包找到的任何资源。您可以使用 -c 指定配置文件或使用 -s 指定 Django 设置模块,并使用 dpack -y 输出加载的配置。运行 dpack -h 以获取选项的完整列表。

处理器

处理器是简单的 Python 可调用函数,它接受三个参数:text(到目前为止已处理的文本),input(包含如相对 name 和绝对 path 等内容的 dpack.base.Input 对象),以及 packer(包含如 prefix 等内容的 dpack.DPack 实例)。例如,cssmin 处理器实现如下:

def process(text, input, packer):
    return rcssmin.cssmin(text)

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

此版本没有可用的源分发文件。请参阅有关 生成分发存档 的教程。

构建分发

dpack-0.4.2-py3-none-any.whl (11.5 kB 查看散列)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面