bit3/packer

此包已被废弃,不再维护。未建议替代包。

使用Assetic框架支持编译和压缩打包JS和CSS分发的包。

1.0 2014-04-03 07:47 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:33:34 UTC


README

package.yml添加到您的仓库中,并运行pack命令。

配置

有3个配置文件。

default.yml包含默认配置。

package.yml包含包配置,用于您的项目。这个文件应该添加到您的仓库中。

package.local.yml包含系统/环境特定的配置(如二进制文件的路径)。这个文件不应该添加到您的仓库中。

它们将按此顺序加载并合并。这意味着通常package.yml包含包信息,而package.local.yml包含系统上二进制文件的路径。

方便:如果您想要提供一个适用于您团队的package.local.yml,例如所有人使用相同的系统环境,请将包含特定于系统环境的设置的package.local.yml.dist放入您的仓库。您不应该在package.yml中添加特定于系统环境的设置!

监视修改

许多编译器如sass/compass都有“监视”功能。但是,当使用一系列编译器和压缩器时,这并不容易自动化。使用--watch-w)标志将导致packer监视包的修改。

如果您使用导入(如sass的@import规则)或嵌入(如cssembed过滤器),您可能想指定哪些文件必须被监视?只需在package.yml中添加一个watch块,直接在files块之后,并指定要监视的文件或目录。

packages:
	dist/package.css:
		files:
			# remind that all files here will be watched anyway
			- reset.css
		watch:
			# watch a single file
			- src/file_to_watch.css
			# directories are also allowed
			- assets/images/
			# or watch all watches from another package
			- @dist/other_package.css

部署

使用“监视”功能对于本地开发来说很好,但您必须将本地编译并推送到远程主机怎么办?这可能是在您的网站位于没有shell/编译器支持的共享主机上时必要的。

使用部署非常容易,首先您需要定义您的部署命令

deploy:
	- notify-send "Build %file% finished"

然后使用命令的--deploy选项:pack --deploy

在每个包之后,都会执行部署。占位符%file%将被包的路径名替换,%package%被包名替换,%deploy%被部署目标(默认为default)替换。

输出示例

$ pack dist/package.css --deploy
parse configuration
+ load .../bit3/packer/src/default.yml
+ load package.yml
+ load package.local.yml

build package dist/package.css
* build collection from dist/package.css
  ~ filters:
    - cssrewrite [Assetic\Filter\CssRewriteFilter]
  + add local file src/reset.css
* write file dist/package.css

deploy to notify
  * exec notify-send "Build dist/package.css finished"

部署目标

对于简单的设置,有一个部署目标很好,但您需要根据您当前的工作部署到多个地方怎么办?一个可能的用法场景是预览和生产的部署。

当您添加deploy部分时,所有命令都将添加到default部署目标。为了定义多个部署目标,请在deploy部分中分组命令。

deploy:
	preview:
		- scp %file% user@preview.example.com:/var/www/vhosts/preview.example.com/assets/
	production:
		- scp %file% user@example.com:/var/www/vhosts/example.com/assets/

现在您有两个部署目标,可以分别通过pack --deploy previewpack --deploy production使用,或者通过单个pack --deploy preview --deploy production一起使用。

提示 两者之间完全没有区别

deploy:
	- <cmd>

deploy:
	default:
		- <cmd>

提示 同时混合使用分组和非分组命令也是可能的

deploy:
	- <cmd 1>
	production:
		- <cmd 2>

这完全等同于

deploy:
	default:
		- <cmd 1>
	production:
		- <cmd 2>

警告 如果您想部署特定的包(pack dist/only_this_package.css)并将它们部署到default部署目标(pack --deploy),如果仅使用pack --deploy dist/only_this_package.css,则可能会假定包名为部署目标。只需在--deploy后添加defaultpack --deploy default dist/only_this_package.css,或者简单地交换参数:pack dist/only_this_package.css --deploy

package.yml 参考

packages:
	dist/package.css:
		filters: [cssrewrite]
		files:
			# add a string
			- |
				/*
				 * (c) <copyright holders>
				 */

			# add a static file
			- src/reset.css

			# add a file with filters
			- [src/base.scss, [scss]]
		watch:
			# watch a file
			- src/file.css

			# watch a directory
			- assets/images/

			# watch files from another package
			- @dist/other_package.css

	dist/package.min.css:
		# extend another package
		extends: dist/package.css

		# remind that this will overwrite the filters, not extend
		filters: [cssrewrite, yui-css]

	vendors:
		# this is a virtual package, that will not be build
		virtual: true
		files:
			- framework.css

	dist/package.with-vendors.css:
		# this will merge two packages into one
		files:
			# an @<name> will referencing another package,
			# so you can merge and mixin multiple packages
			- @dist/package.css
			- @vendors