如果您使用 npm要在 CakePHP 中安装一个包,目录结构将如下所示:
bin/
composer.json
composer.lock
config/
favicon.ico
.gitignore
.htaccess
index.php
logs/
node_modules/
.npmrc
package-lock.json
phpunit.xml.dist
plugins
README.md
src/
tests/
tmp/
vendor/
webroot/
所以我安装了一个像这样的 npm 包,它创建了 .npmrc
:
npm install --save-dev @fortawesome/fontawesome-pro
这会将文件复制到 node_modules/
但在 Cake 中这是不可访问的,因为它需要在 webroot/
例如,如果您链接到 node_modules/@fortawesome/fontawesome-pro/css/all.css
,您将收到 404,因为 node_modules/
不可访问到 CakePHP 它在文件系统中的位置。
所以除了手动移动文件之外 - 每次使用 npm 时都非常乏味:
mv node_modules webroot/node_modules
人们在这种情况下使用什么策略?
Cake 版本是 3.7,但我认为在这种情况下这并不重要。
最佳答案
我个人使用 AssetCompress插件来处理这些事情。
在文件 config/asset_compress.ini
中,您定义您的 Assets 及其位置,并控制您希望放置编译/压缩 Assets 的位置(在 webroot 内)。
按照插件安装说明将以下内容添加到 default/sample config/asset_compress.ini`:
...
[css]
paths[] = ROOT/node_modules/@fortawesome/fontawesome-pro/css/*
cachePath = WEBROOT/cache_css
...
[awesome.css]
files[] = all.css
filters[] = CssMinFilter
...
您的模板将像这样使用它:
<?= $this->AssetCompress->css('awesome.css') ?>
关于node.js - 使用 npm 和 CakePHP 3 - 文件位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57464202/