这是我的目录结构(这只是一个测试项目):
- stan@mypc:/generate_assets$sudo tree -L 3 -p
- .
- ├── [drwxr-xr-x] assets
- │ └── [drwxr-xr-x] css
- │ ├── [-rw-r--r--] test1.css
- │ └── [-rw-r--r--] test2.css
- ├── [-rw-r--r--] composer.json
- ├── [-rw-r--r--] composer.lock
- ├── [drwxrwxrwx] public
- ├── [-rwxr-xr-x] run
- └── [drwxr-xr-x] vendor
- ....skipping...
- #!/usr/bin/env PHP
- <?PHP
- //loading composer's autoload
- chdir(__DIR__);
- if (file_exists('vendor/autoload.PHP')) {
- include 'vendor/autoload.PHP';
- }
- use Assetic\Asset\AssetCollection;
- use Assetic\Factory\AssetFactory;
- use Assetic\Asset\FileAsset;
- use Assetic\Asset\GlobAsset;
- use Assetic\Filter\LessFilter;
- use Assetic\Filter\CssMinFilter;
- use Assetic\AssetWriter;
- use Assetic\AssetManager;
- //Asset manager
- $am = new AssetManager();
- //Add all css files
- $css = new GlobAsset('assets/css/*.css',array(new CssMinFilter()));
- $am->set('basecss',$css);
- // Dumping assets into public
- $writer = new AssetWriter('public');
- $writer->writeManagerAssets($am);
所以 – 我预计来自资产/ css的css文件将被组合,被细分并转储到名为“basecss.css”的公共目录中.这是我得到的例外:
- PHP Fatal error: Uncaught exception 'RuntimeException' with message 'Unable to write file public/' in /generate_assets/vendor/kriswallsmith/assetic/src/Assetic/AssetWriter.PHP:106
- Stack trace:
- #0 /generate_assets/vendor/kriswallsmith/assetic/src/Assetic/AssetWriter.PHP(65): Assetic\AssetWriter::write('public/','*{color:green}?...')
- #1 /generate_assets/vendor/kriswallsmith/assetic/src/Assetic/AssetWriter.PHP(54): Assetic\AssetWriter->writeAsset(Object(Assetic\Asset\GlobAsset))
- #2 /generate_assets/run(31): Assetic\AssetWriter->writeManagerAssets(Object(Assetic\AssetManager))
- #3 {main}
- thrown in /generate_assets/vendor/kriswallsmith/assetic/src/Assetic/AssetWriter.PHP on line 106
所以 – 似乎assetic试图转储名为’public’而不是’public / basecss.css’的文件?任何帮助?
附:解析度:
好.洙.显然我必须跑
- $css->setTargetPath('css_file_name.css');
然后它工作…
从文档中不完全清楚,但在
Dumping Assets to static files部分中提到
- $writer->writeManagerAssets($am);
“将利用资产的目标路径”.所以是的,你建议在编写资产之前设置目标路径可以解决问题:
- $css->setTargetPath('css_file_name.css');