需求场景: 希望通过一个webpack文件夹管理多个站点的打包流程.

假设现在我要为站点domain配置打包流程.

npm 添加淘宝镜像

你懂得

vim ~/.npmrc
registry = https://registry.npm.taobao.org

Mac 启动mysql

mysql.server start

mysql -uroot -p

工程目录结构

  1. 所有站点共用的目录为cssjs, 这两个文件夹存放公共的css和js模块.
  2. 打包出来的文件输出在dist/xxx文件夹下
  3. 各个站点的webpack配置文件和入口文件放在www/xxx文件夹下.
.
├── css
│   ├── bar.css
│   ├── bar.scss
│   └── foo.scss
├── dist
│   └── domain
├── js
│   ├── bar.coffee
│   └── foo.js
├── node_modules

├── package.json
├── webpack.config.js
└── www
└── domain
├── entry.js
└── webpack.config.js

管理domain站点

命令: webpack --config www/domain/webpack.config.js

// ./www/domain/webpack.config.js

var webpack = require("webpack");
var path = require('path'); module.exports = { resolve: {
root: [
path.resolve('./css'),
path.resolve('./js'),
],
extensions: ["", ".js", ".coffee"],
}, entry: "./www/domain/entry.js", output: {
path: 'dist/domain',
publicPath: '/static/',
filename: "domain.[hash].js",
}, module: { loaders: [
{
test: /\.vue$/,
loader: 'vue',
}, {
test: /\.css$/,
loaders: ["style", "css"],
},
{
test: /\.scss$/,
loaders: ["style", "css", "sass"],
}, {
test: /\.coffee$/,
loader: "coffee-loader",
}, ], }, };

实际上, webpack.config.js文件也可以放在根目录下, 并且通过命令行向它传入一些参数

这个时候命令可以等效为:webpack --domain domain

// ./webpack.config.js
var webpack = require("webpack");
var path = require('path');
var argv = require('yargs').argv; var domain = argv.domain || 'default'; module.exports = { resolve: {
root: [
path.resolve('./css'),
path.resolve('./js'),
],
extensions: ["", ".js", ".coffee"],
}, entry: "./www/" + domain + "/entry.js", output: {
path: 'dist/' + domain,
publicPath: '/static/',
filename: domain + ".[hash].js",
}, externals: {
// "jquery": "$",
}, plugins: [
// new webpack.ProvidePlugin({$:'jquery', jQuery:'jquery'}),
], module: { // preLoaders: [
// {
// test: /\.js$/,
// loader: 'eslint',
// exclude: [/node_modules/],
// },
// ], loaders: [
{
test: /\.vue$/,
loader: 'vue',
}, {
test: /\.css$/,
loaders: ["style", "css"],
},
{
test: /\.scss$/,
loaders: ["style", "css", "sass"],
}, {
test: /\.coffee$/,
loader: "coffee-loader",
}, // {test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/font-woff'},
// {test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'file'},
// {test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file'},
// {test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=image/svg+xml'},
], }, };

全局模块

npm install -g webpack coffee-script

本地模块

{
"name": "pack",
"version": "1.0.0",
"scripts": {
"domain": "webpack --config www/domain/webpack.config.js"
},
"devDependencies": {
"coffee-loader": "^0.7.2",
"coffee-script": "^1.11.1",
"crypto-js": "^3.1.8",
"css-loader": "^0.25.0",
"file-loader": "^0.9.0",
"node-sass": "^3.11.2",
"sass-loader": "^4.0.2",
"style-loader": "^0.13.1",
"url-loader": "^0.5.7",
"vue": "^2.0.5",
"vue-loader": "^9.8.1",
"webpack": "^1.13.3"
}
}

webpack 1.x 配合npm scripts管理多站点的更多相关文章

  1. npm scripts + webpack 实践经验(React、Nodejs)

    最近用Webpack+npm scripts+Mongodb+Nodejs+React写了个后台项目,在用Webpack构建过程中遇到了许多坑,就写出来分享一下. 构建工具五花八门,想当年刚学会Gru ...

  2. 【转】npm包管理器那些事

    原文链接:http://www.cnblogs.com/shuoer/p/7782125.html npm包管理器那些事! 今天和朋友针对npm包全局安装和本地项目安装这个梗展开的激烈的讨论,故此做一 ...

  3. windows下npm scripts不能执行的问题

    最近在学webpack为了方便把运行脚本写入package.json文件中,如下: "scripts": { "start": "webpack-de ...

  4. npm scripts 使用指南

    转载自:http://www.ruanyifeng.com/blog/2016/10/npm_scripts.html Node 开发离不开 npm,而脚本功能是 npm 最强大.最常用的功能之一. ...

  5. 谈谈npm依赖管理

    引言 现在的前端开发几乎都离不开nodejs的包管理器npm,比如前端在搭建本地开发服务以及打包编译前端代码等都会用到.在前端开发过程中,经常用到npm install来安装所需的依赖,至于其中的技术 ...

  6. nodeJS---模块与npm包管理工具

    nodeJS---模块与npm包管理工具 一:从模块外部访问另一个模块内的成员; 假如我现在还在D盘中的node文件夹内中的app.js代码改成如下: var msg = 'hello'; var f ...

  7. 我为何放弃Gulp与Grunt,转投npm scripts(上)

    本文来源于我在InfoQ中文站翻译的文章.原文地址是:http://www.infoq.com/cn/news/2016/02/gulp-grunt-npm-scripts-part1 Cory Ho ...

  8. NPM包管理器入门(附加cnpm : 无法加载文件错误解决方案)

    NPM 包管理器 1.作用: 快速构建nodejs工程 快速安装和依赖第三个模块 2.使用方法 快速构建 npm init 会得到一package.json文件 { "name": ...

  9. nrm NPM源管理工具

    nrm NPM源管理工具 工具 前端 npm cnpm 今天经过同事介绍,发现一个好玩的东西——nrm(NPM registry manager) nrm 是一个可以快速切换NPM源的node插件.由 ...

随机推荐

  1. WPF绘制光滑连续贝塞尔曲线

    1.需求 WPF本身没有直接把点集合绘制成曲线的函数.可以通过贝塞尔曲线函数来绘制. 贝塞尔曲线类是:BezierSegment,三次贝塞尔曲线,通过两个控制点来控制开始和结束方向. Quadrati ...

  2. 菜鸟容易中的招__setattr__

    class Counter: def __init__(self): self.counter = 0 # 这里会触发 __setattr__ 调用 def __setattr__(self, nam ...

  3. Html5 监听拦截Android返回键方法详解

    浏览器窗口有一个history对象,用来保存浏览历史. 如果当前窗口先后访问了三个网址,那么history对象就包括三项,history.length属性等于3. history对象提供了一系列方法, ...

  4. Redis、Memcache与MongoDB的区别

    >>Memcached Memcached的优点:Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key.value的字节大小以及服务器硬件性能,日常环境 ...

  5. mysql事务,视图,权限管理,索引,存储引擎(胖胖老师)

    1: 视图什么是视图    视图是一个虚拟表, 它的内容来源于查询的实表, 本身没有真正的数据;视图的作用    对于复杂的查询时,每次查询时都需要编写一些重复的查询代码让编写sql的效率低下, 为了 ...

  6. [SDOI2011]消耗战

    题目描述 在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达.现在,我军已经侦查到敌军的总部在编号为1的岛屿,而且他们已经没有足够多的能源维系战斗,我军胜利在望.已知 ...

  7. ●洛谷P1083 借教室

    题链: https://www.luogu.org/problemnew/show/P1083题解: 二分,差分 显然具有二分性: 如果只考虑1~p个人,就会在某一天无法满足, 那么显然只考虑1~[p ...

  8. C语言中#define的用法

    今天整理了一些#define的用法,与大家共享! 1.简单的define定义 #define MAXTIME 1000 一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写 if(i& ...

  9. js 当前时间刷新

    <p>每隔1秒钟,打印当前时间</p> <div id="time"></div> <script> function ...

  10. IOS WebViewJavascriptBridge 使用以及原理分析

    本文转自:https://www.jianshu.com/p/b8d4285395c6 概述 从两个方面来讲: js不能直接调用oc的方法 oc可以通过如下函数调用js代码 - (void)evalu ...