Pug 支持 Angular 2 / Angular 4 / Angular 6 / Angular cli / Angular cli 6(没有自定义 WebPack 配置)
Pug support for Angular 2 / Angular 4 / Angular 6 / Angular cli / Angular cli 6 (without custom WebPack config)
如何正确安装PUG/JADE到Angular2或以上
所以在工作的同时还有 AOT 和 JiT
工作单元和集成测试
并且在创建每个新组件时不会受到太大影响
我看到了很多解决方案,其中一些是:
在每个组件中添加了类似 "require!pug-loader()some.component.pug"
的内容
远离使用 angular-cli 并围绕 webpack 创造魔法
使用其他服务器(知道如何使用 Pug/Jade)
在运行构建之前,将所有哈巴狗文件转换为html
我认为他们会拒绝为 angular 辩护的服务器 - 这不是真的,运行 一些 pre-compilers (创建文件并在将来将它们发送到 gee) ,一旦您拒绝 angular-cli 并使用 webpack - 就会出现错误(因为 angular 编译的不是有效的 webpack 文件)
我是这样决定的:
npm install pug pug-loader --save-dev
第一步后添加行到 package.json
"scripts": {
"afterInstall": "node pug-rule-insert.js",
...
}
然后创建文件pug-rule-insert.js,内容如下:
const fs = require('fs');
const commonCliConfig = 'node_modules/@angular/cli/models/webpack-configs/common.js';
const pug_rule = `\n\t\t\t\t\t\t\t\t{ test: /.(pug|jade)$/, loader: 'apply-loader!pug-loader?self' },`;
fs.readFile(commonCliConfig, (err, data) => {
if (err) { throw err; }
const configText = data.toString();
if (configText.indexOf(pug_rule) > -1) { return; }
const position = configText.indexOf('rules: [') + 8;
const output = [configText.slice(0, position), pug_rule, configText.slice(position)].join('');
let file = fs.openSync(commonCliConfig, 'r+');
fs.writeFile(file, output, () => {});
fs.close(file, () => {});
});
修复 Angular 6:
const commonCliConfig = 'node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs/common.js';
现在只需在终端中输入:
npm run afterInstall
该脚本放入您的主 WebPack 文件(位于 node_modules/angular/cli/models/webpack-config/common.js)行,告诉 angular 支持 pug
Angular团队默认不支持,因为有必要:
所有指令、事件(如点击)应该分开 ","
示例:p((点击)='someFunction()', [标题]='myTitle')
这也很神奇,但是 angular-cli 工作正常,所有测试工作,AoT 和 JiT - 工作
正如Anton Pegov所说:
For Angular 6+ you can simply run ng add ng-cli-pug-loader
...
查看原回答:
如何正确安装PUG/JADE到Angular2或以上
所以在工作的同时还有 AOT 和 JiT
工作单元和集成测试
并且在创建每个新组件时不会受到太大影响
我看到了很多解决方案,其中一些是:
在每个组件中添加了类似 "require!pug-loader()some.component.pug"
的内容
远离使用 angular-cli 并围绕 webpack 创造魔法
使用其他服务器(知道如何使用 Pug/Jade)
在运行构建之前,将所有哈巴狗文件转换为html
我认为他们会拒绝为 angular 辩护的服务器 - 这不是真的,运行 一些 pre-compilers (创建文件并在将来将它们发送到 gee) ,一旦您拒绝 angular-cli 并使用 webpack - 就会出现错误(因为 angular 编译的不是有效的 webpack 文件)
我是这样决定的:
npm install pug pug-loader --save-dev
第一步后添加行到 package.json
"scripts": {
"afterInstall": "node pug-rule-insert.js",
...
}
然后创建文件pug-rule-insert.js,内容如下:
const fs = require('fs');
const commonCliConfig = 'node_modules/@angular/cli/models/webpack-configs/common.js';
const pug_rule = `\n\t\t\t\t\t\t\t\t{ test: /.(pug|jade)$/, loader: 'apply-loader!pug-loader?self' },`;
fs.readFile(commonCliConfig, (err, data) => {
if (err) { throw err; }
const configText = data.toString();
if (configText.indexOf(pug_rule) > -1) { return; }
const position = configText.indexOf('rules: [') + 8;
const output = [configText.slice(0, position), pug_rule, configText.slice(position)].join('');
let file = fs.openSync(commonCliConfig, 'r+');
fs.writeFile(file, output, () => {});
fs.close(file, () => {});
});
修复 Angular 6:
const commonCliConfig = 'node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs/common.js';
现在只需在终端中输入:
npm run afterInstall
该脚本放入您的主 WebPack 文件(位于 node_modules/angular/cli/models/webpack-config/common.js)行,告诉 angular 支持 pug
Angular团队默认不支持,因为有必要:
所有指令、事件(如点击)应该分开 ","
示例:p((点击)='someFunction()', [标题]='myTitle')
这也很神奇,但是 angular-cli 工作正常,所有测试工作,AoT 和 JiT - 工作
正如Anton Pegov所说:
For Angular 6+ you can simply run
ng add ng-cli-pug-loader
...
查看原回答: