创建项目
创建文件夹,复制以下文件:
package.json:
{
"name": "03",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "webpack --mode development",
"build": "webpack --mode production",
"start": "webpack serve --open chrome.exe"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"nodemon": "^2.0.12",
"typescript": "^4.3.5"
},
"devDependencies": {
"@babel/core": "^7.15.0",
"@babel/preset-env": "^7.15.0",
"babel-loader": "^8.2.2",
"clean-webpack-plugin": "^4.0.0-alpha.0",
"core-js": "^3.16.4",
"html-webpack-plugin": "^5.3.2",
"ts-loader": "^9.2.5",
"webpack": "^5.49.0",
"webpack-cli": "^4.7.2",
"webpack-dev-server": "^3.11.2"
}
}
tsconfig.json:
{
"compilerOptions": {
"target": "es2015", //用来指定ts被编译为js的版本
"module": "es2015", //指定要使用模块化的规范
"moduleResolution": "node",
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"sourceMap": true,
"strict": true, //检查严格模式总开关
"strictNullChecks": false, //严格检查空值
"noImplicitAny": true, //不允许隐式的any类型
"noImplicitThis": false, //不允许明确类型的this
"alwaysStrict": false, //编译后是否使用严格模式
"allowJs": false, //是否对js文件进行编译 默认是false
"checkJs": false, //检查js代码是否符合语法规范 默认是false
"declaration": true,
"removeComments": false, //编译成js后是否移除注释
"noImplicitReturns": true,
"noEmit": false, //不生成编译后的文件
"noEmitOnError": false, //有错误时不生成编译文件
"importHelpers": true,
"lib": ["es6", "dom"], //指定项目中所用到的库
"typeRoots": ["node_modules/@types"],
"outDir": "./js", //用来指定编译后文件所在路径
"rootDir": "./src",
// "outFile": "./js/main.js" //将代码合并成一个文件,模块化规范需要为amd或者system
},
"include": ["./src/**/*"], //被编译的文件目录
"exclude": ["node_modules", "dist", "**/*.test.ts"] //不希望被编译的文件
}
webpack.config.js:
const path = require("path")
const HTMLWebpackPlugin = require("html-webpack-plugin")
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
// webpack的配置信息都应该写在module.exports里
module.exports = {
//指定入口文件
entry: "./src/index.ts",
//指定打包文件所在路径
output: {
//指定打包文件的目录
path: path.resolve(__dirname, 'dist'),
//打包后的文件
filename: "bundle.js",
//配置打包环境
environment:{
//告诉webpack不使用箭头
arrowFunction: false
}
},
//webpack打包时需要使用的模块
module: {
//指定要加载的规则
rules: [
{
//test指定的是规则生效的文件
test: /\.ts$/,
//要使用的loader
use:[
//配置babel
{
//指定加载器
loader: "babel-loader",
//设置babel
options:{
//设置预定义的环境
presets:[
[
//指定环境的插件
"@babel/preset-env",
//配置信息
{
//要兼容的目标浏览器
targets:{
"chrome": "88"
},
//指定corejs的版本
"corejs":"3",
//使用corejs的方法 "usage"表示按需加载
"useBuiltIns":"usage"
}
]
]
}
},
"ts-loader",
],
//要排除的文件
exclude: /node-module/
},
{
test: /\.less$/,
use:[
"style-loader",
"css-loader",
// 引入postcss
{
loader: "postcss-loader",
options: {
postcssOptions: {
plugins: [
[
"postcss-preset-env",
{
browsers: 'last 2 versions'
}
]
]
}
}
},
"less-loader"
]
}
]
},
//配置webpack插件
plugins:[
new CleanWebpackPlugin(),
new HTMLWebpackPlugin({
template: "./src/index.html"
}),
],
//用来设置引用模块
resolve:{
extensions: ['.ts', '.js']
}
}
使用命令安装依赖:
npm install
创建src文件夹,然后创建index.html与index.ts,运行命令;
npm run build
安装less
npm i -D less less-loader css-loader style-loader
安装postcss可以使浏览器兼容预处理环境
npm i -D postcss postcss-loader postcss-preset-env