技术最前端,专注 Web 技术学习与总结。JavaScript, JS, ES6, TypeScript, Vue, PHP, CSS3, Html5, Node, Git, Markdown 等技术文章。
几乎所有前端项目中都有 yarn.lock
/ package-lock.json
文件(以下以 npm 为例)。打开浏览,你会发现它长得类似 package.json
的依赖,但是冗长得多。很多同学可能都不知道他们是干什么用的,甚至部分同学在项目跑不起来的时候还会暴力把 lock 文件给干掉,最后反而导致更严重的错误。
那么,lock 文件到底是干什么用的?为什么我们会需要 lock 文件?
减小文件搜索范围
resolve.modules
:Webpack 的 resolve.modules
配置模块库(即 node_modules)所在的位置,在 js 里出现 import 'vue'
这样不是相对、也不是绝对路径的写法时,会去 node_modules 目录下找。但是默认的配置,会采用向上递归搜索的方式去寻找,但通常项目目录里只有一个 node_modules,且是在项目根目录,为了减少搜索范围,可以直接写明 node_modules
的全路径;同样,对于别名(alias
)的配置,亦当如此:
function resolve (dir) {
return path.join(__dirname, '..', dir)
}
module.exports = {
resolve: {
extensions: ['.js', '.vue', '.json'],
modules: [
resolve('src'),
resolve('node_modules')
],
alias: {
'vue$': 'vue/dist/vue.common.js',
'src': resolve('src'),
'assets': resolve('src/assets'),
'components': resolve('src/components'),
// ...
'store': resolve('src/store')
}
},
...
}
Yeoman 是一个脚手架生成工具,负责生成一个项目的基本解构,能够节省重复劳动,提升开发体验。
Yeoman 为我们提供了 Generator 的基类,于是:
const generators = require("yeoman-generator");
module.exports = generators.Base.extend({
constructor: function () {
generators.Base.apply(this, arguments)
// your logic
}
})
Browserslist 定义了一套浏览器兼容配置标准,使得众多前端开发工具(Autoprefixer, Babel, Stylelint...)之间可以共享同一套配置。
工具将从以下路径查询 browsers 配置:
Autoprefixer
中的 browsers
配置项)BROWSERSLIST
环境变量browserslist
配置文件.browserslistrc
配置文件> 0.5%, last 2 versions, Firefox ESR, not dead