我刚搬到angular-cli 1.0.0-beta.11-webpack.2
有太多烦人的事情,但我面临的最大问题是外部 css 文件(可能我也会遇到 js 文件的问题)。
在我的项目中使用Angular2 material而menu component
需要overlay.css
。当我将其包含在index.html
中时:
<link href="vendor/@angular2-material/core/overlay/overlay.css" rel="stylesheet">
在ng serve
或ng build
之后, dist 文件夹中缺少重叠css文件。
angular-cli github
上有issue。我完全按照提到的方式做了一切,但仍然无法正常工作。
我在
中创建了一个assets
文件夹和styles.css
文件
和我的angular-cli.json
文件看起来像:
{
"project": {
"version": "1.0.0-beta.11-webpack.2",
"name": "cli-webstorm"
},
"apps": [
{
"root":"src",
"assets":"assets",
"main": "src/main.ts",
"tsconfig": "src/tsconfig.json",
"mobile": false,
"styles": "styles.css",
"environments": {
"source": "environments/environment.ts",
"prod": "environments/environment.prod.ts",
"dev": "environments/environment.dev.ts"
}
}
],
"addons": [],
"packages": [],
"e2e": {
"protractor": {
"config": "config/protractor.conf.js"
}
},
"test": {
"karma": {
"config": "config/karma.conf.js"
}
},
"defaults": {
"prefix": "app",
"sourceDir": "src",
"styleExt": "css",
"prefixInterfaces": false,
"lazyRoutePrefix": "+"
}
}
我想问一下如何在我的项目中包含一个库css文件(第三部分css),以便我可以使用angular-cli webpack
的好处?
答案 0 :(得分:19)
您的答案位于styles
中提供的新scripts
和angular-cli.json
配置设置中。解决css注入有两种选择:
直接在styles
数组中包含css文件的路径,如下所示:
// - angular-cli.json - //
{
//...
“apps”: [
{
//...
“styles”: [
“styles.css”,
“../node_modules/@angular2-material/core/overlay/overlay.css”
],
“scripts”: [],
// ...
}
}
],
您可以将overlay.css
导入由cli生成的src/styles.css
文件中:
/* scr/styles.css */
@import "../node_modules/@angular2-material/core/overlay/overlay.css";
如果您使用选项2,请务必删除对选项1中所示的overlay.css
的引用。
注意:angular-cli.json
是一个配置文件,因此您需要在更改服务器时重新启动服务器。
您可以找到更多angular-cli 1.0.0-beta.11-webpack.2
details here。
与注入外部样式类似,您可以使用angular-cli.json中的scripts:[]
数组注入外部脚本。此处添加的任何脚本都将加载到window
对象。对于需要从window
对象访问jQuery的插件,这尤其方便。有关here的更多信息。
"scripts": [
"../node_modules/jquery/dist/jquery.js"
],
答案 1 :(得分:2)
如果升级到1.0.0-beta.11-webpack.3
或更高版本,则可以使用apps[0].styles
的{{1}}属性列出要导入的外部样式表。
要从angular-cli.json
升级,请运行:
1.0.0-beta.11-webpack.2
注意:如果您在运行npm uninstall -g angular-cli
npm cache clean
npm install -g angular-cli@1.0.0-beta.11-webpack.3
时出现angular-cli@1.0.0-beta.11-webpack.3
错误,则可能需要Node.js 6才能使SyntaxError: Unexpected token ...
正常工作。有关详细信息,请参阅https://github.com/angular/angular-cli/issues/1883。
如果您生成了一个新项目,那么ng version
应该看起来像这样(请注意angular-cli.json
属性):
styles
答案 2 :(得分:1)
Angular CLI Wiki Stories页面有一个"Thirdparty Installation"部分:
ng new my-todo-app
ng install sass
另请参阅自述文件的Global Library Installation部分:
npm install bootstrap@next
然后将所需的脚本文件添加到
angular-cli.json
的{{1}}:
apps[0].scripts
最后将Bootstrap CSS添加到
"scripts": [ "../node_modules/jquery/dist/jquery.js", "../node_modules/tether/dist/js/tether.js", "../node_modules/bootstrap/dist/js/bootstrap.js" ],
数组:
apps[0].styles
如果您正在运行它,请重新启动
"styles": [ "../node_modules/bootstrap/dist/css/bootstrap.css", "styles.css" ],
,并且Bootstrap 4应该在您的应用上运行。
答案 3 :(得分:0)
我认为您不需要将您的css文件包含在index.html中而不是ts文件中。您可以像这样
简单地导入css文件import "yourcssfile.css"
如果您只想在组件中使用它们,那么您可以使用styleUrl
styleUrls: ['yourfile.css']
答案 4 :(得分:0)
最终,它适用于我
angular-cli@1.0.0-beta.14
和
webpack@2.1.0-beta.22
...都在本地安装
npm install --save-dev
正确版本的组合是使其发挥作用的关键。
答案 5 :(得分:0)
当我想从primefaces导入PrimeNG时遇到同样的问题但我在我的文件夹中找到了styles.scss ...
@import './../your_file_path/your_file_name';
应该做的伎俩