node.js - 使用 npm 和 CakePHP 3 - 文件位置

标签 node.js cakephp npm cakephp-3.0

如果您使用 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/

相关文章:

node.js - 为什么 Travis CI 无法在 npm 安装期间创建目录?

javascript - 如何读取终端控制台中的最后一行?

node.js - 如何仅获取给定用户 Express.js 的文章

php - CakePHP 使用 LEFT JOIN 和 generate_series 查找

php - 如何在 CakePHP 2 中保存 3 棵树(如连接表)的数据

javascript - 找不到模块 : Error: Can't resolve '@cycle/run' webpack 2. 2.1

javascript - 如何在ejs页面设置JSON值

node.js - Express.js hbs 模块 - 从 .hbs 文件注册部分

php - 页面过期 - PHP/CakePHP 和 Internet Explorer

node.js - 使用 app.js 或 'npm start' 启动 Express.js?