[NPM] Create a node script to replace a complex npm script

In this lesson we will look at pulling out complex npm script logic into an external JavaScript file. Instead of writing bash scripts you can leverage your JavaScript abilities to automate your build process. We’ll use some helper node modules such as shelljs, opn-cli, and babel-cli.

Install:

npm i -D shelljs babel-cli

From:

"test": "BABEL_ENV=test mocha spec/ --require babel-register",

To:

1. create a "scripts/test.js" file.

2. Add content:

import { exec } from "shelljs";

const isWindows = process.platform === "win32";
const environment = isWindows ?
    "set BABEL_ENV=test&&" :
    "BABEL_ENV=test";

exec( `${ environment } mocha spec/ --require babel-register` );

3. Change package.json

"test": "babel-node ./scripts/test.js",


From:

    "build": "npm-run-all build:*",
    "prebuild": "rm -rf public/$npm_package_version",
    "build:html": "pug --obj data.json src/index.pug --out public/$npm_package_version/",
    "build:css": "node-sass src/index.scss | postcss -c .postcssrc.json | cssmin > public/$npm_package_version/index.min.css",
    "build:js": "mustache data.json src/index.mustache.js | uglifyjs > public/$npm_package_version/index.min.js",

To:

1. create "scripts/build.js".

2. Add content:

import { rm, exec } from "shelljs";

const version = process.env.npm_package_version;

rm( "-rf", `public/${ version }` );
exec( `pug --obj data.json src/index.pug --out public/${ version }/` );
exec( `node-sass src/index.scss | postcss -c .postcssrc.json | cssmin > public/${ version }/index.min.css` );
exec( `mustache data.json src/index.mustache.js | uglifyjs > public/${ version }/index.min.js` );

3. Change package.json:

"build": "babel-node ./scripts/build.js",


From:

    "server": "npm-run-all --parallel server:*",
    "server:create": "http-server public/$npm_package_version -p $npm_package_config_port",
    "server:launch": "open http://localhost:$npm_package_config_port",

To:

1. Create "scripts/server.js".

2. Add content:

import { exec } from "shelljs";

const {
    npm_package_version: version,
    npm_package_config_port: port
} = process.env;

exec( `http-server public/${ version } -p ${ port }`, { async: true } );
exec( `opn http://localhost:${ port }` );

3. Change package.json file:

"server": "babel-node ./scripts/server.js",

Be careful that in Windows single quote doesn‘t work, we need to replace single quote to

\"
时间: 2024-10-04 17:31:22

[NPM] Create a node script to replace a complex npm script的相关文章

Node: Updating npm's bundled node gyp

Linux, Mac OS X, Solaris, etc. Unix is easy. Just run the following command. Use sudo if necessary. $ [sudo] npm explore npm -g -- npm install [email protected] From: http://lovewindy.com/node-updating-npms-bundled-node-gyp/ Node: Updating npm's bund

快速搭建 Node.js 开发环境以及加速 npm

在公交车上刷微博,还是有很多同学在咨询: 如何快速搭建 node 开发环境 npm 超慢 github 无法打开的问题 于是我觉得应该写一篇文章解答所有这些起步问题,让新同学也能顺顺利利入门. 快速搭建 Node.js 开发环境 如果你想长期做 node 开发, 或者想快速更新 node 版本, 或者想快速切换 node 版本, 那么在非 Windows(如 osx, linux) 环境下, 请使用 nvm 来安装你的 node 开发环境, 保持系统的干净. 如果你使用 Windows 做开发,

io.js - 兼容 NPM 平台的 Node.js 新分支

io.js(JavaScript I/O)是兼容 NPM 平台的 Node.js 新分支,由 Node.js 的核心开发者在 Node.js 的基础上,引入更多的 ES6 特性,它的目的是提供更快的和可预测的发布周期.在1月中旬正式发v1.0版本,更新迅速,目前最新版本是v1.0.4. 官方网站      GitHub 您可能感兴趣的相关文章 网站开发中很有用的 jQuery 效果[附源码] 分享35个让人惊讶的 CSS3 动画效果演示 十分惊艳的8个 HTML5 & JavaScript 特效

在node.js的命令行里通过npm安装phonegap出现connect etimeout问题

在node.js的命令行里(Node.js command prompt)执行npm install -g phonegap命令安装phonegap3.0,出现etimeout问题. 我是通过设置代理访问外网,而命令行里没有设置代理,所以在命令行里无法连接网络,无法安装成功.出现这种情况需要在命令行里设置代理. windows的命令行下设置网络代理,在命令行下,执行如下命令: set http_proxy=http://proxy.com:port/ set http_proxy_user=us

Node.js相关——package概念及NPM

1. package 包 CommonJS的包规范允许我们将一组相关的模块组合到一起,形成一组完整的工具.CommonJS的包规范由 包结构 和 包描述文件 两个部分组成. 1.1 包结构 包实际上就是一个压缩文件,解压以后还原为目录.符合规范的目录,应该包含如下文件. package.json  描述文件,必需 bin  文件夹,内存放可执行二进制文件,一般在工具包中存在,非必需 lib 文件夹,内存放js代码,非必需 doc   文件夹,内存放文档,非必需 test 文件夹,供单元测试,非必

解决pip install package时Fatal error in launcher: Unable to create process using '"e:\python36\python3.exe" "E:\python36\Script\pip3.exe"问题

pip 运行报错: 关于:Fatal error in launcher: Unable to create process using '"e:\python36\python3.exe"  "E:\python36\Script\pip3.exe"问题 由于安装tensorflow,下载 了Anaconda2环境,自此python有了2.7 和3.6两个版本,同时在tensorflow虚拟环境中安装了python3.5版本用来运行tensorflow. 今天本想

Response.Write("<script>alert('弹出对话框!')</script>") 后跟Response.Redirect("page.aspx");不能弹出对话框,直接跳转页面了 如何解?

Response.Write和Response.Redirect一起用的时候就会这样,write脚本和redirect脚本不能同时使用,这样不会执行脚本,最好使用ClientScript 改进方法: Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "", "<script language=javascript >alert('弹出对话框!');</script>");

已经安装了node和npm,输入node -v 未找到命令

昨天虚拟机上安装了nvm.node.npm,今天打开输入node -v,就显示未找到命令 输入nvm --version 发现还是有nvm版本的,不然都要以为刚配好的虚拟机又要重新安装... 再输入 nvm use 8 (我用的node版本8.3.0) 显示当前使用的就是8.3.0版本 此时再输入node -v  就会显示node版本号了 然而每次重新打开虚拟机都要重新设置一下才能使用node,所以我们需要用命令默认node版本 nvm alias default 8.3.0 这样就设置好了!

[坑况]——windows升级node最新版本报错【npm install -g n】

我本来是下载一个vue-cli的,然后技术日新月异,告知我要先把我的node升级到8以上(目前是v6.1.13) 升级就升级,升级就报错 尝试第一种方法,网上最多的一种方法,估计也是成功最多的一种吧(要是我也成功了的话,我就不需要写这篇文章了) 1 1. 第一步 2 npm -g install n 3 2. 第二步 4 n stable (更新至最新稳定版本) 5 6 附带常用命令 7 n //会列出所有安装的版本供你切换 8 9 n latest //安装最新版本 10 11 n stabl