<!DOCTYPE html>
|
<html lang="en">
|
<head>
|
<meta charset="UTF-8">
|
<meta name="viewport" content="width=device-width">
|
<meta name="theme-color" content="#222"><meta name="generator" content="Hexo 6.3.0">
|
|
<link rel="apple-touch-icon" sizes="180x180" href="/ios-icon.png">
|
<link rel="icon" type="image/png" sizes="32x32" href="/32.ico">
|
<link rel="icon" type="image/png" sizes="16x16" href="/16.ico">
|
|
<link rel="stylesheet" href="/css/main.css">
|
|
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" integrity="sha256-HtsXJanqjKTc8vVQjO4YMhiqFoXkfBsjBWcX91T1jr8=" crossorigin="anonymous">
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.1.1/animate.min.css" integrity="sha256-PR7ttpcvz8qrF57fur/yAx1qXMFJeJFiA6pSzWi0OIE=" crossorigin="anonymous">
|
|
<script class="next-config" data-name="main" type="application/json">{"hostname":"zxq.im","root":"/","images":"/images","scheme":"Pisces","darkmode":false,"version":"8.18.1","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12},"copycode":{"enable":false,"style":null},"fold":{"enable":false,"height":500},"bookmark":{"enable":false,"color":"#222","save":"auto"},"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":true,"async":false,"transition":{"menu_item":"fadeInDown","post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"prism":false,"i18n":{"placeholder":"Searching...","empty":"We didn't find any results for the search: ${query}","hits_time":"${hits} results found in ${time} ms","hits":"${hits} results found"},"path":"/search.xml","localsearch":{"enable":true,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false}}</script><script src="/js/config.js"></script>
|
|
<meta name="description" content="简单就好前端自动化大家常用gulp或grunt,甚至动用webpack,其实npm scripts就完全够用了,咱能用底层的东西就用底层的,对吧? 大概思路此处应该有一张图,我晚点做,需要在package.json文件中进行配置,先祭出文件下载,伸手党到此就行,可以往后面看。样式文件编译→检查→兼容→压缩脚本文件检查→编译→压缩→测试网页文件压缩图片文件压缩备注: 实现步骤以下所有实现步骤其实就两">
|
<meta property="og:type" content="article">
|
<meta property="og:title" content="用npm scripts打造我的前端工作流">
|
<meta property="og:url" content="http://zxq.im/fea48372.html">
|
<meta property="og:site_name" content="ZXQ">
|
<meta property="og:description" content="简单就好前端自动化大家常用gulp或grunt,甚至动用webpack,其实npm scripts就完全够用了,咱能用底层的东西就用底层的,对吧? 大概思路此处应该有一张图,我晚点做,需要在package.json文件中进行配置,先祭出文件下载,伸手党到此就行,可以往后面看。样式文件编译→检查→兼容→压缩脚本文件检查→编译→压缩→测试网页文件压缩图片文件压缩备注: 实现步骤以下所有实现步骤其实就两">
|
<meta property="og:locale" content="en_US">
|
<meta property="article:published_time" content="2019-07-26T16:00:00.000Z">
|
<meta property="article:modified_time" content="2024-07-30T14:49:56.601Z">
|
<meta property="article:author" content="ZXQ">
|
<meta property="article:tag" content="typing">
|
<meta property="article:tag" content="解决方案">
|
<meta name="twitter:card" content="summary">
|
|
|
<link rel="canonical" href="http://zxq.im/fea48372.html">
|
|
|
|
<script class="next-config" data-name="page" type="application/json">{"sidebar":"","isHome":false,"isPost":true,"lang":"en","comments":true,"permalink":"http://zxq.im/fea48372.html","path":"fea48372.html","title":"用npm scripts打造我的前端工作流"}</script>
|
|
<script class="next-config" data-name="calendar" type="application/json">""</script>
|
<title>用npm scripts打造我的前端工作流 | ZXQ</title>
|
|
|
|
|
|
|
|
|
|
<noscript>
|
<link rel="stylesheet" href="/css/noscript.css">
|
</noscript>
|
</head>
|
|
<body itemscope itemtype="http://schema.org/WebPage" class="use-motion">
|
<div class="headband"></div>
|
|
<main class="main">
|
<div class="column">
|
<header class="header" itemscope itemtype="http://schema.org/WPHeader"><div class="site-brand-container">
|
<div class="site-nav-toggle">
|
<div class="toggle" aria-label="Toggle navigation bar" role="button">
|
<span class="toggle-line"></span>
|
<span class="toggle-line"></span>
|
<span class="toggle-line"></span>
|
</div>
|
</div>
|
|
<div class="site-meta">
|
|
<a href="/" class="brand" rel="start">
|
<i class="logo-line"></i>
|
<p class="site-title">ZXQ</p>
|
<i class="logo-line"></i>
|
</a>
|
<p class="site-subtitle" itemprop="description">just a typist</p>
|
</div>
|
|
<div class="site-nav-right">
|
<div class="toggle popup-trigger" aria-label="Search" role="button">
|
<i class="fa fa-search fa-fw fa-lg"></i>
|
</div>
|
</div>
|
</div>
|
|
|
|
<nav class="site-nav">
|
<ul class="main-menu menu"><li class="menu-item menu-item-home"><a href="/" rel="section"><i class="fa fa-heart fa-fw"></i>Home</a></li><li class="menu-item menu-item-archives"><a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>Archives</a></li>
|
<li class="menu-item menu-item-search">
|
<a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>Search
|
</a>
|
</li>
|
</ul>
|
</nav>
|
|
|
|
<div class="search-pop-overlay">
|
<div class="popup search-popup"><div class="search-header">
|
<span class="search-icon">
|
<i class="fa fa-search"></i>
|
</span>
|
<div class="search-input-container">
|
<input autocomplete="off" autocapitalize="off" maxlength="80"
|
placeholder="Searching..." spellcheck="false"
|
type="search" class="search-input">
|
</div>
|
<span class="popup-btn-close" role="button">
|
<i class="fa fa-times-circle"></i>
|
</span>
|
</div>
|
<div class="search-result-container no-result">
|
<div class="search-result-icon">
|
<i class="fa fa-spinner fa-pulse fa-5x"></i>
|
</div>
|
</div>
|
|
</div>
|
</div>
|
|
</header>
|
|
|
<aside class="sidebar">
|
|
<div class="sidebar-inner sidebar-nav-active sidebar-toc-active">
|
<ul class="sidebar-nav">
|
<li class="sidebar-nav-toc">
|
Table of Contents
|
</li>
|
<li class="sidebar-nav-overview">
|
Overview
|
</li>
|
</ul>
|
|
<div class="sidebar-panel-container">
|
<!--noindex-->
|
<div class="post-toc-wrap sidebar-panel">
|
<div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E7%AE%80%E5%8D%95%E5%B0%B1%E5%A5%BD"><span class="nav-number">1.</span> <span class="nav-text">简单就好</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%A4%A7%E6%A6%82%E6%80%9D%E8%B7%AF"><span class="nav-number">2.</span> <span class="nav-text">大概思路</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%AE%9E%E7%8E%B0%E6%AD%A5%E9%AA%A4"><span class="nav-number">3.</span> <span class="nav-text">实现步骤</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#%E6%A0%B7%E5%BC%8F%E6%96%87%E4%BB%B6"><span class="nav-number">3.1.</span> <span class="nav-text">样式文件</span></a><ol class="nav-child"><li class="nav-item nav-level-5"><a class="nav-link" href="#%E7%BC%96%E8%AF%91"><span class="nav-number">3.1.1.</span> <span class="nav-text">编译</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#%E6%A3%80%E6%9F%A5"><span class="nav-number">3.1.2.</span> <span class="nav-text">检查</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#%E5%85%BC%E5%AE%B9"><span class="nav-number">3.1.3.</span> <span class="nav-text">兼容</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#%E5%8E%8B%E7%BC%A9"><span class="nav-number">3.1.4.</span> <span class="nav-text">压缩</span></a></li></ol></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E8%84%9A%E6%9C%AC%E6%96%87%E4%BB%B6"><span class="nav-number">3.2.</span> <span class="nav-text">脚本文件</span></a><ol class="nav-child"><li class="nav-item nav-level-5"><a class="nav-link" href="#%E6%A3%80%E6%9F%A5-1"><span class="nav-number">3.2.1.</span> <span class="nav-text">检查</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#%E7%BC%96%E8%AF%91-1"><span class="nav-number">3.2.2.</span> <span class="nav-text">编译</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#%E5%8E%8B%E7%BC%A9-1"><span class="nav-number">3.2.3.</span> <span class="nav-text">压缩</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#%E6%B5%8B%E8%AF%95"><span class="nav-number">3.2.4.</span> <span class="nav-text">测试</span></a></li></ol></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E7%BD%91%E9%A1%B5%E6%96%87%E4%BB%B6"><span class="nav-number">3.3.</span> <span class="nav-text">网页文件</span></a><ol class="nav-child"><li class="nav-item nav-level-5"><a class="nav-link" href="#%E5%8E%8B%E7%BC%A9-2"><span class="nav-number">3.3.1.</span> <span class="nav-text">压缩</span></a></li></ol></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E5%9B%BE%E7%89%87%E6%96%87%E4%BB%B6"><span class="nav-number">3.4.</span> <span class="nav-text">图片文件</span></a><ol class="nav-child"><li class="nav-item nav-level-5"><a class="nav-link" href="#%E5%8E%8B%E7%BC%A9-3"><span class="nav-number">3.4.1.</span> <span class="nav-text">压缩</span></a></li></ol></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E8%87%AA%E5%8A%A8%E5%8C%96"><span class="nav-number">4.</span> <span class="nav-text">自动化</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#%E7%9B%91%E6%8E%A7"><span class="nav-number">4.1.</span> <span class="nav-text">监控</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E5%90%8C%E6%AD%A5"><span class="nav-number">4.2.</span> <span class="nav-text">同步</span></a></li></ol></li></ol></div>
|
</div>
|
<!--/noindex-->
|
|
<div class="site-overview-wrap sidebar-panel">
|
<div class="site-author animated" itemprop="author" itemscope itemtype="http://schema.org/Person">
|
<img class="site-author-image" itemprop="image" alt="ZXQ"
|
src="/avatar.png">
|
<p class="site-author-name" itemprop="name">ZXQ</p>
|
<div class="site-description" itemprop="description"></div>
|
</div>
|
<div class="site-state-wrap animated">
|
<nav class="site-state">
|
<div class="site-state-item site-state-posts">
|
<a href="/archives/">
|
<span class="site-state-item-count">61</span>
|
<span class="site-state-item-name">posts</span>
|
</a>
|
</div>
|
<div class="site-state-item site-state-categories">
|
<a href="/categories/">
|
<span class="site-state-item-count">3</span>
|
<span class="site-state-item-name">categories</span></a>
|
</div>
|
<div class="site-state-item site-state-tags">
|
<a href="/tags/">
|
<span class="site-state-item-count">13</span>
|
<span class="site-state-item-name">tags</span></a>
|
</div>
|
</nav>
|
</div>
|
|
</div>
|
</div>
|
</div>
|
|
|
</aside>
|
|
|
</div>
|
|
<div class="main-inner post posts-expand">
|
|
|
|
|
|
<div class="post-block">
|
|
|
|
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="en">
|
<link itemprop="mainEntityOfPage" href="http://zxq.im/fea48372.html">
|
|
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
<meta itemprop="image" content="/avatar.png">
|
<meta itemprop="name" content="ZXQ">
|
</span>
|
|
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
<meta itemprop="name" content="ZXQ">
|
<meta itemprop="description" content="">
|
</span>
|
|
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
|
<meta itemprop="name" content="用npm scripts打造我的前端工作流 | ZXQ">
|
<meta itemprop="description" content="">
|
</span>
|
<header class="post-header">
|
<h1 class="post-title" itemprop="name headline">
|
用npm scripts打造我的前端工作流
|
</h1>
|
|
<div class="post-meta-container">
|
|
|
<div class="post-meta">
|
<span class="post-meta-item">
|
<span class="post-meta-item-icon">
|
<i class="far fa-calendar"></i>
|
</span>
|
<span class="post-meta-item-text">Posted on</span>
|
|
<time title="Created: 2019-07-27 00:00:00" itemprop="dateCreated datePublished" datetime="2019-07-27T00:00:00+08:00">2019-07-27</time>
|
</span>
|
<span class="post-meta-item">
|
<span class="post-meta-item-icon">
|
<i class="far fa-folder"></i>
|
</span>
|
<span class="post-meta-item-text">In</span>
|
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
|
<a href="/categories/%E5%89%8D%E7%AB%AF%E6%8A%80%E6%9C%AF/" itemprop="url" rel="index"><span itemprop="name">前端技术</span></a>
|
</span>
|
</span>
|
|
|
</div>
|
|
|
</div>
|
</header>
|
|
|
|
|
|
|
<div class="post-body" itemprop="articleBody"><h3 id="简单就好"><a href="#简单就好" class="headerlink" title="简单就好"></a>简单就好</h3><p>前端自动化大家常用gulp或grunt,甚至动用webpack,其实npm scripts就完全够用了,咱能用底层的东西就用底层的,对吧?</p>
|
<h3 id="大概思路"><a href="#大概思路" class="headerlink" title="大概思路"></a>大概思路</h3><p>此处应该有一张图,我晚点做,需要在package.json文件中进行配置,先祭出文件下载,伸手党到此就行,可以往后面看。<br><strong>样式文件</strong><br>编译→检查→兼容→压缩<br><strong>脚本文件</strong><br>检查→编译→压缩→测试<br><strong>网页文件</strong><br>压缩<br><strong>图片文件</strong><br>压缩<br>备注:</p>
|
<h3 id="实现步骤"><a href="#实现步骤" class="headerlink" title="实现步骤"></a>实现步骤</h3><p>以下所有实现步骤其实就两步:安装npm插件至项目,使用npm scripts配置插件。<br><a target="_blank" rel="noopener" href="http://www.npmjs.com/">www.npmjs.com</a></p>
|
<h4 id="样式文件"><a href="#样式文件" class="headerlink" title="样式文件"></a>样式文件</h4><h5 id="编译"><a href="#编译" class="headerlink" title="编译"></a>编译</h5><p>将css预处理器文件转化成css文件</p>
|
<h5 id="检查"><a href="#检查" class="headerlink" title="检查"></a>检查</h5><p>检查css文件中是否有语法错误</p>
|
<h5 id="兼容"><a href="#兼容" class="headerlink" title="兼容"></a>兼容</h5><p>给css属性增加浏览器前缀</p>
|
<h5 id="压缩"><a href="#压缩" class="headerlink" title="压缩"></a>压缩</h5><p>压缩css文件至最小尺寸</p>
|
<h4 id="脚本文件"><a href="#脚本文件" class="headerlink" title="脚本文件"></a>脚本文件</h4><h5 id="检查-1"><a href="#检查-1" class="headerlink" title="检查"></a>检查</h5><p>js文件中是否有语法错误</p>
|
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ npm install eslint --save-dev</span><br><span class="line">$ ./node_modules/.bin/eslint --init</span><br></pre></td></tr></table></figure>
|
<p>兼容性检查<br>eslint-plugin-compat<br>babel-eslint<br>“linebreak-style”: [0 ,”error”, “windows”]</p>
|
<h5 id="编译-1"><a href="#编译-1" class="headerlink" title="编译"></a>编译</h5><h5 id="压缩-1"><a href="#压缩-1" class="headerlink" title="压缩"></a>压缩</h5><h5 id="测试"><a href="#测试" class="headerlink" title="测试"></a>测试</h5><h4 id="网页文件"><a href="#网页文件" class="headerlink" title="网页文件"></a>网页文件</h4><h5 id="压缩-2"><a href="#压缩-2" class="headerlink" title="压缩"></a>压缩</h5><p>将网页文件压缩至最小尺寸</p>
|
<h4 id="图片文件"><a href="#图片文件" class="headerlink" title="图片文件"></a>图片文件</h4><h5 id="压缩-3"><a href="#压缩-3" class="headerlink" title="压缩"></a>压缩</h5><p>将图片文件压缩至最小尺寸</p>
|
<h3 id="自动化"><a href="#自动化" class="headerlink" title="自动化"></a>自动化</h3><h4 id="监控"><a href="#监控" class="headerlink" title="监控"></a>监控</h4><h4 id="同步"><a href="#同步" class="headerlink" title="同步"></a>同步</h4>
|
</div>
|
|
|
|
|
|
|
|
<footer class="post-footer">
|
<div class="post-tags">
|
<a href="/tags/typing/" rel="tag"># typing</a>
|
<a href="/tags/%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/" rel="tag"># 解决方案</a>
|
</div>
|
|
|
|
<div class="post-nav">
|
<div class="post-nav-item">
|
<a href="/d54bed30.html" rel="prev" title="《疯传》笔记">
|
<i class="fa fa-angle-left"></i> 《疯传》笔记
|
</a>
|
</div>
|
<div class="post-nav-item">
|
<a href="/a7554eac.html" rel="next" title="《幸福的方法》笔记">
|
《幸福的方法》笔记 <i class="fa fa-angle-right"></i>
|
</a>
|
</div>
|
</div>
|
</footer>
|
|
|
</article>
|
</div>
|
|
|
|
|
|
|
</div>
|
</main>
|
|
<footer class="footer">
|
<div class="footer-inner">
|
|
<div class="copyright">
|
©
|
<span itemprop="copyrightYear">2024</span>
|
<span class="with-love">
|
<i class="fa fa-heart"></i>
|
</span>
|
<span class="author" itemprop="copyrightHolder">ZXQ</span>
|
</div>
|
<div class="powered-by">Powered by <a href="https://hexo.io/" rel="noopener" target="_blank">Hexo</a> & <a href="https://theme-next.js.org/pisces/" rel="noopener" target="_blank">NexT.Pisces</a>
|
</div>
|
|
</div>
|
</footer>
|
|
|
<div class="back-to-top" role="button" aria-label="Back to top">
|
<i class="fa fa-arrow-up fa-lg"></i>
|
<span>0%</span>
|
</div>
|
|
<noscript>
|
<div class="noscript-warning">Theme NexT works best with JavaScript enabled</div>
|
</noscript>
|
|
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js" integrity="sha256-XL2inqUJaslATFnHdJOi9GfQ60on8Wx1C2H8DYiN1xY=" crossorigin="anonymous"></script>
|
<script src="/js/comments.js"></script><script src="/js/utils.js"></script><script src="/js/motion.js"></script><script src="/js/next-boot.js"></script>
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-generator-searchdb/1.4.1/search.js" integrity="sha256-1kfA5uHPf65M5cphT2dvymhkuyHPQp5A53EGZOnOLmc=" crossorigin="anonymous"></script>
|
<script src="/js/third-party/search/local-search.js"></script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</body>
|
</html>
|