[聚合文章] 玩转npmscript自动化构建 支持ES6 支持POSTCSS(3)

CSS 2017-12-14 27 阅读

本次更新大幅度精简了代码,修复了copy文件的bug,去掉了一些没用的npm包
而且新增了浏览器热更新
命令依然是
1 npm install
2 npm run dev
基本架构就是 src是开发文件夹 dist是生产文件夹
package.json

{  "name": "npm",  "version": "1.0.0",  "description": "",  "main": "index.js",  "scripts": {    "predev": "echo '开始创建并初始化'",    "css": "postcss -w ./src/css/*.css -d ./dist/css",    "js": "uglifyjs ./dist/js/*.js -m -c  -o ./dist/js/main.js",    "ES6": "babel ./src/js -d ./dist/js -w",    "html_images_watch": "node html_images_watch.js",    "dev": "node create.js",     "httpserver": "cd dist&&browser-sync start --server --files \"css/*.css, js/*.js, *.html\" "  },  "author": "",  "license": "ISC",  "devDependencies": {    "autoprefixer": "^7.2.1",    "babel-cli": "^6.26.0",    "babel-preset-env": "^1.6.1",    "browser-sync": "^2.18.13",    "chalk": "^2.3.0",    "chokidar": "^1.7.0",    "cp-file": "^5.0.0",    "cross-var": "^1.1.0",    "cssnano": "^3.10.0",    "filedir": "^1.0.1",    "npm-run-all": "^4.1.2",    "postcss-cli": "^4.1.1",    "shelljs": "^0.7.8",    "uglify-js": "^3.2.1"  },  "dependencies": {}}

create.js

var chokidar = require('chokidar');var fs = require("fs");var http = require('http')var filedir=require("filedir");var path = require("path");var shelljs=require("shelljs")var chalk=require("chalk")var http = require("http");var fs = require("fs");var request = require('request');//var Prompt={    dist:{src:"./dist",text:"开始创建dist文件夹"},    dist_css:{src:"./dist/css",text:"开始创建dist/css"},    dist_images:{src:"./dist/images",text:"开始创建dist/images"},    dist_js:{src:"./dist/js",text:"开始创建dist/js"},    dist_lib:{src:"./dist/lib",text:"开始创建dist/lib"},    dist_index_html:{src:"./dist/index.html",text:"开始创建dist/index.html"},    src:{src:"./src",text:"开始创建src文件夹"},    src_css:{src:"./src/css",text:"开始创建src/css"},    src_images:{src:"./src/images",text:"开始创建src/images"},    src_js:{src:"./src/js",text:"开始创建src/js"},    src_lib:{src:"./src/lib",text:"开始创建src/lib"},    src_index_html:{src:"./src/index.html",text:"开始创建src/index.html"}}Object.prototype.hasO=Object.prototype.hasOwnPropertyfunction judge(){   var this_=this   for(var i in this_){       if(this_.hasO(i)){           if(!filedir.isDir(this_[i].src)){             var te_name=this_[i].src.split(".");             te_name=te_name[te_name.length-1];                          var for_css=this_[i].src.split("/")             for_css=for_css[for_css.length-1]             if(te_name=="html"&&filedir.isFile(this_[i].src)  ){                 console.log(chalk.yellow("因为已经有"+this_[i].src+",故不会再创建"))                 continue             }             if(te_name=="html"&&!(filedir.isFile(this_[i].src))  ){                   console.log(chalk.green(this_[i].text));                    fs.writeFileSync(this_[i].src,                    "<!DOCTYPE html>\n"+                    "<html lang=\"en\" style='height:100%;position:relative'>\n"+                    "<head>\n"+                    "<meta charset=\"UTF-8\">\n"+                    "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n"+                    "<meta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\">\n"+                    "<title>Document</title>\n"+                    "<link rel=\"stylesheet\" href=\"./css/main.css\">"+                    "</head>\n"+                    "<body style='height:100%;position:relative'><div class='logobox' style='width:600px;height:425px;position: absolute;left: 0;right: 0;margin: auto;top: 50%;margin-top: -212px;'><img style='max-width:100%' src='https://s1.ax1x.com/2017/12/14/qjYxe.md.jpg'><h5 style='text-align:center;line-height:90px;font-size: 45px;color:gray'>Welcome to use</h5></div></body>\n"+                    "</html>\n"                )                continue             }else{                console.log(chalk.green(this_[i].text));                fs.mkdirSync(this_[i].src);             }              if(for_css=="css"&&i=="src_css"){                fs.writeFileSync("./src/css/main.css",                "*{padding:0;margin:0}\n"+                "a{text-decoration:none}\n"+                "ul,ol{list-style:none}\n"+                 "img{border:none}\n"+                 "br{font-size:0;line-height:0;clear:both}"                )
                

注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。