相关文章推荐
儒雅的菠萝  ·  Vue-router常见错误_vue ...·  5 月前    · 
气势凌人的稀饭  ·  Vue.js - 路由 ...·  6 月前    · 
热心的楼梯  ·  vue-router源码阅读(一) ...·  8 月前    · 
健壮的饭盒  ·  python - ...·  1 年前    · 

1-1 安装

我们安装的时候把webpack安装到开发依赖(–save-dev)中,因为 webpack 只是一个打包工具,项目上线不需要,上线的是打包结果,而不是工具,所以为了区分核心包依赖和开发工具依赖,这里通过 --save 和 --save-dev 来区分

npm install --global webpack
npm install --global webpack-cli
1
2
本地安装(推荐)

npm install --save-dev webpack
npm install --save-dev webpack-cli
//–save-dev 简写 -D
npm i -D xxx
1
2
3
4
1-2 打包

webpack 模块入口文件路径 模块出口文件路径
1
1-3 划分目录

源码存储在 src 目录
打包后存放在 dist 目录
1-4 打包配置文件 (在node环境运行)

// 实际在node环境中运行
const path = require(‘path’)

module.exports = {
entry: ‘./src/main.js’, //入口文件模块路径
output:{
path:path.join(__dirname,’./dist’),//__dirname node内置变量
filename:‘bundle.js’//打包后的文件名
}
}
1
2
3
4
5
6
7
8
9
10
1-5 安装到项目中的需要配置 Npm scripts (package.json 的 scripts)

“build”:“webpack”

npm run a

##Strat比特殊

npm start

“name”: “webpack”,
“version”: “1.0.0”,
“description”: “My webpack project”,
“main”: “index.js”,
“dependencies”: {
“webpack-cli”: “^3.3.5”,
“webpack”: “^4.35.0”
},
“devDependencies”: {},
“scripts”: {
// “a”:“a.js”

  • “build”: “webpack”,
  • “dev”: “webpack-dev-server”
    },
    “keywords”: [],
    “author”: “”,
    “license”: “ISC”
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    1-6 ES6规范

导入 import (require)
导出 export (module.exports)
2.HtmlWebpackplugin

解决资源打包 根目录下的index.html无法访问资源的问题

解决打包文件改了 index 的引入文件也要进行修改

实际上还是把你的index.html打包到 dist (和bundle放一块) 自动引用 scripts

安装
npm i -D html-webpack-plugin
1
配置

  • const HtmlWebpackPlugin = require(‘html-webpack-plugin’)

plugins: [

  • new HtmlWebpackPlugin({
  •   template:'./index.html'
    
  • })
    ]
    1
    2
    3
    4
    5
    6
    7
    8
    3.Develoment

3-1 hot-module-replacement 热更新

webpack.config.js

const webpack = require(‘webpack’);

devServer: {
	contentBase: './',
  •   hot: true
    

    }

    plugins: [
    new HtmlWebpackPlugin({
    template:’./index.html’
    }),
    new VueLoaderPlugin(),

  • new webpack.HotModuleReplacementPlugin()
    ]
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    package.json 如果是安装 webpack-cli

“dev”: “webpack-dev-server --hotOnly”
1
3-2 webpack-dev-server

解决每次打包都麻烦,而且即使有-save也不方便,还需要自己手动刷新浏览器。webpack-dev-server这个工具可以实现监视代码改变,自动打包,打包完毕自动刷新浏览器的功能

安装
npm i -D webpack-dev-server
1
配置
//webpack.config.js
mode: ‘development’,
entry: ‘./src/main.js’, //入口文件模块路径

  • devtool: ‘inline-source-map’,
    //这里模拟dist目录。缓存在内存中不会显示 一般为 ./
  • devServer: {
  • contentBase: './dist'
    
  • }
    1
    2
    3
    4
    5
    6
    7
    8
    //package.json
    “test”: “echo “Error: no test specified” && exit 1”,
    “build”: “webpack”,
    “watch”: “webpack --watch”,
  • “start”: “webpack-dev-server --hotOnly” //这里是start 所以使用npm start 否则 npm run xxx 建议dev
    1
    2
    3
    4
    5
    3-2-1 启动开发模式

npm start//取决于"start": “webpack-dev-server --open”
1
4. 对于Es6语法处理 babel(默认只转换语法)

babel安装
npm install -D babel-loader @babel/core @babel/preset-env
1
配置
module: {
rules: [

test: /\.m?js$/, exclude: /(node_modules|bower_components)/, use: { loader: 'babel-loader', options: { presets: ['@babel/preset-env']

]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
4-1 Polyfill(转换API)

npm install -D @babel/polyfill
1
配置

//原来
//entry: ‘./src/app.js’, //入口文件模块路径

module.exports = {
entry: ["@babel/polyfill", “./src/main.js”]
}
1
2
3
4
5
6
4-2 配置transform-runtime 来解决代码重复

在打包过程中,babel 会给某些包提供一些工具函数,而这些工具函数可能会重复出现在多个模块。这样会导致打包体积过大,所以babel提供了一个babel-transform-runtime来解决这个打包体积过大的问题。

npm install -D @babel/plugin-transform-runtime
npm install --save @babel/runtime
1
2
配置(cacheDirectory 解决webpack打包慢的问题)

rules: [
// the ‘transform-runtime’ plugin tells Babel to
// require the runtime instead of inlining it.
{
test: /.m?js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: ‘babel-loader’,
options: {
cacheDirectory:true,
presets: [’@babel/preset-env’],
//配置此行
https://www.ximalaya.com/yinyue/25371165/
https://www.ximalaya.com/yinyue/25371160/
https://www.ximalaya.com/yinyue/25371154/
https://www.ximalaya.com/yinyue/25371139/
https://www.ximalaya.com/yinyue/25371144/
https://www.ximalaya.com/yinyue/25371134/
https://www.ximalaya.com/yinyue/25371129/
https://www.ximalaya.com/yinyue/25371103/
https://www.ximalaya.com/yinyue/25371093/
https://www.ximalaya.com/yinyue/25371073/
https://www.ximalaya.com/yinyue/25371080/
https://www.ximalaya.com/yinyue/25371065/
https://www.ximalaya.com/yinyue/25371060/
https://www.ximalaya.com/yinyue/25371052/
https://www.ximalaya.com/yinyue/25371048/
https://www.ximalaya.com/yinyue/25371038/
https://www.ximalaya.com/yinyue/25371024/
https://www.ximalaya.com/yinyue/25370987/
https://www.ximalaya.com/yinyue/25370978/
https://www.ximalaya.com/yinyue/25370970/
https://www.ximalaya.com/yinyue/25370965/
https://www.ximalaya.com/youshengshu/25246065/
https://www.ximalaya.com/youshengshu/25246058/
https://www.ximalaya.com/youshengshu/25246053/
https://www.ximalaya.com/youshengshu/25246050/
plugins: [’@babel/plugin-transform-runtime’]
}
}
}
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
5.Loader

5-1.loading css

安转
npm i -D style-loader css-loader
1
引入
//举例
import ‘./app.css’
1
2
配置webpack

顺序 不可逆

style-loader => css-loader

module:{
rules: [
{
test: /.css$/,
use: [
// style-loader
//{ loader: ‘style-loader’ },
// css-loader
// {
//loader: ‘css-loader’,
//此处是一个坑 设置modules可能会导致打包组件css选择器乱码 导致无法使用
// options: {
// modules: true
// }
//}
use: [‘style-loader’, ‘css-loader’]
]
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2.Loading image

安装
npm i -D file-loader
1
配置
module: {
rules: [{
test: /.cssKaTeX parse error: Expected 'EOF', got '}' at position 182: …} } ] }̲, { test: /\…/,
use: [
‘file-loader’
]
}]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
3.loading less

安装
npm i -D style-loader css-loader less-loader less
1
配置
{
test: /.less$/,
use: [
‘style-loader’,
‘css-loader’,
‘less-loader’
]
}
1
2
3
4
5
6
7
8
4.loading Vue

npm install -D vue-loader vue-template-compiler
1
配置

// webpack.config.js
const VueLoaderPlugin = require(‘vue-loader/lib/plugin’)

module.exports = {
module: {
rules: [
// … 其它规则
{
test: /.vue$/,
loader: ‘vue-loader’
}
]
},
plugins: [
// 请确保引入这个插件!
new VueLoaderPlugin()
]
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
加载使用第三方包的问题

import $ from ‘jquery’
1
这样打包也会同时打包 jquery 到 bundle.js

解决办法: (key为包名 value为接口 )

module.exports = {
//…
externals: {
jquery: ‘jQuery’,
vue:‘Vue’,
‘vue-router’:‘VueRouter’
}
}
1
2
3
4
5
6
7
8
6.模块环境中使用vue-router

npm i vue-router
1
引用资源

1
配置externals

module.exports = {
//…
externals: {
vue:‘Vue’,
‘vue-router’:‘VueRouter’
}
}
1
2
3
4
5
6
7
在 router.js加载使用

import VueRouter from ‘vue-router’
import Foo from ‘./components/Foo.vue’
import Bar from ‘./components/Bar.vue’

export default new VueRouter({
routes:[
{
path:’/foo’,
component:Foo
},
{
path:’/bar’,
component:Bar
}
]
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
在 main.js文件中配置使用路由对象

import Vue from ‘vue’
import App from ‘./App.vue’
import router from ‘./router’

new Vue({
components:{App},
router,
template:’’
}).$mount(’#app’)
1
2
3
4
5
6
7
8
9
在 App.vue中设置路由出口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
SP:附加

只安装 package 里面 dependencies 依赖内容

npm i --production
1
–save和 --save-dev的区别

我们把开发工具相关的依赖信息保存到devDependencies选项中。把核心依赖(例如 vue )的依赖信息保存到 dependencies选项中。

这样做的话,就是把开发依赖和核心依赖分开了,因为开发依赖在打包结束之后上线的话就不需要。

最后项目上线,我们真正需要安装发布得的是 dependencies依赖中的包也就是 npm i --production

作者:是吗乔治
来源:CSDN
原文:
https://blog.csdn.net/qq_34361235/article/details/94736584
版权声明:本文为博主原创文章,转载请附上博文链接!

允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)写文章不容易,点个赞呗兄弟专注 Vue 源码分享,文章分为白话版和 源码版,白话版助于理解工作原理,源码版助于了解内部详情,让我们一起学习吧研究基于 Vue版本 【2.5.17】如果你觉得排版难看,请点击 下面链接 或者 拉到 下面关注公众号也可以吧【Vue原理】Computed... 对MacOS FSEvents的本地访问 MacOS中的FSEvents API允许应用程序注册以获取对给定目录树的更改的通知。 它是kqueue的非常快速和轻巧的替代品。 这是一个低级库。 对于使用fsevents的跨平台文件监视模块,请查看 。 仅支持Node.js v8.16和更高版本。 npm install fsevents const fsevents = require ( 'fsevents' ) ; const stop = fsevents . watch ( __dirname , ( path , flags , id ) => { const info = fsevents . getInfo ( path , flags , id ) ; } ) ; // To start observation stop ( ) ; // To e
本文实例讲述了node.js中path路径模块的使用方法。分享给大家供大家参考,具体如下: path模块是node.js中处理路径的核心模块。可以很方便的处理关于文件路径的问题。 join() 将多个参数值合并成一个路径 const path = require('path'); console.log(path.join('./a', 'b', 'c')); basename() 获取路径中的文件名 const path = require('path'); //获取文件名,包含扩展名 console.log(path.basename('./a/b/c/1.txt')); //获取文
const path=require("path"); var filepath='/node/base/path/test.js'; console.log( path.dirname(filepath) 第一章 NPM包管理工具 1.1 认识一下什么是NPM npm(Node Package Manager node包管理器) 是Node.js默认的以JavaScript编写的软件包管理系统 npm来分享和使用代码已经成了前端的标配 官网:http://www.npmjs.com npm是Node.js默认的软件包管理系统包系统 安装完毕node后会默认安装好npm npm本身也是基于Node.js开发的软件 下载Node:http://nodejs.cn 1.2 安装NPM工具 npm的常
Node.js----path路径模块什么是path路径模块导入path路径模块路径的拼接 ```path.join()```获取路径中的文件名 ```path.basename()```获取文件中的路径拓展名 ```path.extname()```其他更多方法可以参考官方文档 什么是path路径模块 path路径模块是Node.js官方提供的、用来处理路径的模块。 导入path路径模块 const path = require('path') 路径的拼接 path.join() path路径
接触过requirejs的童鞋可能都知道,无论是通过define来定义模块,还是通过require来加载模块,模块依赖声明都是很重要的一步。而其中涉及到的模块路径解析,对于新手来说,有的时候会让人觉得很困惑。 start up 假设我们的目录结构如下: demo.htmljs/main.jsjs/lib.jsjs/util.jsjs/common/lib.jsjs/...
参考文章zerobrane studio有用过的大大吗 - 知乎 下载这个软件后,发现如果不在软件的安装目录下写lua文件没办法require其他lua文件,所以搜索了下,可以通过这个方式: 在编辑preference中选择setting里的system和user来打开2个user.lua文件,然后加上地址代码即可。比如: LuaPath = "E:/LuaProject" ,然后就可以在这个文件夹下创建任意文件夹作为lua工程,require其他lua文件了。 介绍:webpack的配置文件都是写在 webpack.config.js  文件下,这个文件位于 项目的跟目录下面,在 终端中运行  "webpack"命令,webpack就会自动执行这个文件中的配置,打包文件,并输出。(他可以打包  css,less,图片等所有静态文件到js中) 前提: 利用  npm 全局安装了 webpack ,并且在项目下
### 回答1: const path = require('path') 是 Node.js 中的一个模块,用于处理文件路径。它提供了一些方法,如 path.join() 和 path.resolve(),可以帮助我们创建和操作文件路径。在使用 Node.js 进行文件操作时,经常会用到这个模块。 ### 回答2: const path = require('path')是Node.js中的一个模块,用来处理文件路径。在Node.js中,文件路径通常使用斜杠(/)作为分隔符。但是不同的操作系统中,分隔符可能不同,比如在Windows中,文件路径使用反斜杠(\)作为分隔符。 path模块提供了一些方法,可以让我们不用担心不同操作系统的分隔符问题,也可以方便地处理文件路径。 path模块的主要方法包括: 1. path.join():将多个路径拼接成一个完整的路径。例如,path.join('/foo', 'bar', 'baz/asdf', 'quux', '..')返回'/foo/bar/baz/asdf'。 2. path.resolve():将相对路径解析为绝对路径。例如,path.resolve('/foo/bar', './baz')返回'/foo/bar/baz'。 3. path.dirname():返回路径中的目录名。例如,path.dirname('/foo/bar/baz/asdf/quux.txt')返回'/foo/bar/baz/asdf'。 4. path.basename():返回路径中的文件名。例如,path.basename('/foo/bar/baz/asdf/quux.txt')返回'quux.txt'。 5. path.extname():返回路径中的扩展名。例如,path.extname('/foo/bar/baz/asdf/quux.txt')返回'.txt'。 除了这些基本方法,path模块还提供了一些其他方法,例如:path.parse()将路径解析为对象的形式,path.format()将路径对象还原为字符串的形式等。 总之,const path = require('path')是Node.js中的一个核心模块,用来处理文件路径,可以让我们更方便地操作文件。如果我们需要在Node.js应用程序中处理文件路径,使用path模块是一个很好的选择。 ### 回答3: const path = require('path')是Node.js中常用的模块之一,它的主要作用是简化操作文件路径的过程,方便开发者在处理文件路径时避免出错。 当我们在使用Node.js编写代码时,常常需要操作文件路径,这时候就可以引入path模块。这个模块中提供了很多有用的方法,比如join()、resolve()、dirname()、basename()和extname()等,这些方法可以帮助我们在不同操作系统环境下操作文件路径。 例如,在Windows环境下,路径需要使用反斜杠(\)作为分隔符,而在Linux和Mac OS X环境下则需要使用斜杠(/)作为分隔符。使用path模块提供的join()方法,我们可以通过代码自动根据不同操作系统的规则生成正确的文件路径。这对于在开发过程中避免出现问题,提高代码的可移植性和可读性都十分重要。 除了提供了一些实用方法外,path模块还具有一些特殊的属性。比如,path.sep表示当前操作系统的路径分隔符,path.delimiter表示当前操作系统的环境变量分隔符,path.basename()方法可以获取文件名等等。这些属性和方法的使用能够在开发过程中提高效率和准确性,避免出现因操作系统不同而导致的问题。 总之,const path = require('path')是一个十分实用的Node.js模块,它能够帮助开发者简化处理文件路径的过程,提高代码的可移植性和可读性,同时也避免出现因操作系统不同而导致的问题。