Angular2开发基础之Webpack
本文首发简书http://www.jianshu.com/p/4b4264f045b7,欢迎转载,但请注明转载链接,谢谢! 目标上篇文章Angular2开发基础之TSC编译 解决如何使用TSC来编译ng2项目,以及如何解决出现的error。这些点是新手容易忽视的内容, 要熟悉ng开发的工具链,还是需要掌握其中的重点。 环境需要说明,本教程仅是Windows的实操,Linux,Mac环境,会有不同。 效果展示实操在实操之前,请先仔细阅读 Angular2开发基础之TSC编译 每次都敲上述命令,肯定不是聪明的选择,需要加入到 step 1 : scripts@package.json 中添加如下脚本, 注意, 你可以取 "scripts": {
"build": "tsc --rootDir src --outDir dist"
},
然后再终端执行: npm run build
Look, 为了让其他小伙伴download代码后,能直接使用 "postinstall": "typings install",
删除dist,node_moudles,typings 后,使用 step 2: 添加WebpackWebpack 简单的说,就是可以混合src中所有的ts源文件,并且仅仅生成一个bundle.js文件, 还可以进行对生成的js文件混淆。 建议安装全局 -g,这里仅仅安装在根目录 npm install --save-dev webpack
同时,还需要安装 相关loader, 参看 webpack文档,知道,webpack原本仅支持js, 如果需要支持其他如ts,json格式的文件,就需要使用相关的 loader。 npm install --save-dev ts-loader
step 3: webpack.config.js为了更好的使用 var webpack = require('webpack');
module.exports = {
entry: './src/main.ts',output: {
path: './dist',filename: 'app.bundle.js'
},module: {
loaders: [
{
test: /.ts$/,loader: 'ts-loader'
}
]
},resolve: {
extensions: ['','.js','.ts']
},};
以上内容表达2个意思: * 1. 从哪里来, 到哪里去 ? 2. 跟你一起,有谁? 3.如何处理扩展名 * 完成以上,执行 $(npm bin)/webpack --progress
查看 dist目录,只有一个文件app.bundle.js 而且文件很大, 1.53M step4: 运行测试以上配置好了webpack, 需要进行测试了,等这一刻好久了。 <title>Angular 2 starter webpack</title>
<script src="../dist/app.bundle.js"></script>
然后执行,调试发现,出现error: Uncaught reflect-metadata shim is required when using class decorators
这是因为webpack不包含任何 import 'core-js';
import 'reflect-metadata';
import 'zone.js/dist/zone';
... ...
再次运行, 这个是因为 加载script位置有问题,应该刚在底部标签的上面。 ... ...
<my-app>Loading...</my-app>
<script src="../dist/app.bundle.js"></script>
运行浏览器,OK, 完美~ step 5: 再修改scripts注意,刚才编译使用的是长命令: "build": "tsc --rootDir src --outDir dist",
"build": "webpack --progress",
step 6: html-webpack-plugindist目录生成index.html npm install --save-dev html-webpack-plugin
@完整 webpack.config.js var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: './src/main.ts',plugins: [
new HtmlWebpackPlugin({
template: './src/index.html'
})
]
};
同时,可以删除掉src/index.html 中的 script导入语句 <script src="../dist/app.bundle.js"></script>
再次运行 <script type="text/javascript" src="app.bundle.js"></script></body>
step 7 : app.bundle.js 瘦身要实现app.bundle.js瘦身,需要在package中添加某些Magic。 "build:prod": "webpack -p --progress",
npm run build:prod
大小减半了,只有651KB step 8: webpack-dev-server在开发中,如何不用每次修改代码后,重复执行编译,运行,刷新页面呢? 推荐使用 npm install --save-dev webpack-dev-server
@package.json -> scripts "server": "webpack-dev-server --line --progress"
npm run server
在浏览器输入 小结: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |