Angular Cli Webpack,如何添加或捆绑外部js文件?
在将Angular Cli从SystemJs切换到Webpack之后,我不确定如何包含JS文件(供应商)。
例如
选项A
我有一些通过npm安装的js文件。 像这样将脚本标记添加到头标记不起作用。 也不是最好的方式。
<head> <script src="node_modules/some_package/somejs.js"> </head> //With systemJs I could do this <head> <script src="vendor/some_package/somejs.js"> </head>
选项B
包含这些js文件作为webpack包的一部分。 这似乎是可能应该完成的方式。 然而,我不知道如何做到这一点,因为所有的webpack conig似乎都隐藏在angular-cli-webpack软件包的后面。 我想也许有另一个webpackconfiguration,我们可能有权访问。 但是我不确定,因为在创build一个新的angular-cli-webpack项目时我没有看到它。
更多信息:
我想包含的js文件需要包含在Angular项目之前。 例如jQuery和第三方js库,这不是真的为模块加载或打字机设置。
参考资料 https://github.com/angular/angular-cli/blob/master/WEBPACK_UPDATE.md https://github.com/angular/angular-cli/tree/webpack
最后使用angular-cli 1.0.0和Angular 4.0.0进行testing
这可以在.angular-cli.json
使用scripts:[]
来完成。
{ "project": { "version": "1.0.0", "name": "my-project" }, "apps": [ { "root": "src", "outDir": "dist", "assets": ["assets"], "index": "index.html", "main": "main.ts", "polyfills": "polyfills.ts", "test": "test.ts", "tsconfig": "tsconfig.json", "prefix": "app", "mobile": false, "styles": [ "styles.css" ], "scripts": [ "../node_modules/jquery/dist/jquery.js" ], "environments": { "source": "environments/environment.ts", "dev": "environments/environment.ts", "prod": "environments/environment.prod.ts" } } ], "addons": [], "packages": [], "e2e": { "protractor": { "config": "./protractor.conf.js" } }, "test": { "karma": { "config": "./karma.conf.js" } }, "defaults": { "styleExt": "css", "prefixInterfaces": false } }
请注意,正如文档在全局库安装中所build议的那样 :如果更改styles
(或scripts
!)属性的值,则:
重新启动服务,如果你正在运行它,
..通过scripts.bundle.js
文件查看在** globalcontext中执行的脚本。
使用Typescript 2.0似乎有一些按惯例的configuration,它会自动将jQuery与Angular2版本捆绑在一起,而不会明确地告诉您是否npm install @types/jquery
和jquery
,它是导入时的参考。
ng new testapp cd testapp npm install --save-dev angular-cli@webpack npm install --save @types/jquery npm install --save jquery
然后将下面的代码添加到app.component.ts
import { Component } from '@angular/core'; import * as jQuery from 'jquery'; @Component({ selector: 'app-root', templateUrl: 'app.component.html', styleUrls: ['app.component.css'] }) export class AppComponent { title = 'app works!'; public test(){ jQuery('h1').text('Magic'); } }
将下面的html添加到app.component.html
<h1 (click)="test()"> {{title}} </h1>
然后运行它
ng serve
编辑:
正确的方法是编辑angular-cli.json
如其他文章中提到的。 这篇文章是从那些configuration选项被添加到angular-cli的webpack版本之前的
你可能想看看这个网页: https : //github.com/angular/angular-cli#global-library-installation
它显示了如何包含.js和.css文件的基础知识
一些JavaScript库需要添加到全局范围,并加载,如果他们在脚本标记。 我们可以使用angular-cli.json的apps [0] .scripts和apps [0] .styles属性来做到这一点。
我没有使用angular-cli,但是我目前正在使用Angular / Webpack构build。 为了向我的应用程序提供jQuery和其他供应商,我使用webpack的插件ProvidePlugin ProvidePlugin()
。 这通常会坐在你的webpack.config.js
:这里是一个jQuery的,lodash和matrix库的例子。 这是一个链接到文档 (这是最好含糊不清)
plugins: [ new webpack.ProvidePlugin({ $: 'jquery', _: 'lodash', moment: 'moment', }) ]
令人难以置信的是,它实际上允许您立即使用它,提供所有其他webpack安装程序已正确完成,并已与npm
安装。
- 如何将URL参数(查询string)传递给Angular 2上的HTTP请求
- 如何将一个parameter passing给URL中的某个地方的routerLink?
- Angular 2.1.0dynamic创build子组件
- 如何在angular2打字稿应用程序中使用moment.js库?
- Angular2 – 错误如果不检查是否存在{{object.field}}
- 属性'catch'在types'Observable <any>'上不存在
- 如何创build一个类似于Angular 2中的http的静态数据的Observable?
- 如何使指令和组件在全球范围内可用
- AngularJS:用asynchronous数据初始化服务