webpack 1.x 配合npm scripts管理多站点
需求场景: 希望通过一个webpack文件夹管理多个站点的打包流程.
假设现在我要为站点domain
配置打包流程.
npm 添加淘宝镜像
你懂得
vim ~/.npmrc
registry = https://registry.npm.taobao.org
Mac 启动mysql
mysql.server start
mysql -uroot -p
工程目录结构
- 所有站点共用的目录为
css
和js
, 这两个文件夹存放公共的css和js模块. - 打包出来的文件输出在
dist/xxx
文件夹下 - 各个站点的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管理多站点的更多相关文章
- npm scripts + webpack 实践经验(React、Nodejs)
最近用Webpack+npm scripts+Mongodb+Nodejs+React写了个后台项目,在用Webpack构建过程中遇到了许多坑,就写出来分享一下. 构建工具五花八门,想当年刚学会Gru ...
- 【转】npm包管理器那些事
原文链接:http://www.cnblogs.com/shuoer/p/7782125.html npm包管理器那些事! 今天和朋友针对npm包全局安装和本地项目安装这个梗展开的激烈的讨论,故此做一 ...
- windows下npm scripts不能执行的问题
最近在学webpack为了方便把运行脚本写入package.json文件中,如下: "scripts": { "start": "webpack-de ...
- npm scripts 使用指南
转载自:http://www.ruanyifeng.com/blog/2016/10/npm_scripts.html Node 开发离不开 npm,而脚本功能是 npm 最强大.最常用的功能之一. ...
- 谈谈npm依赖管理
引言 现在的前端开发几乎都离不开nodejs的包管理器npm,比如前端在搭建本地开发服务以及打包编译前端代码等都会用到.在前端开发过程中,经常用到npm install来安装所需的依赖,至于其中的技术 ...
- nodeJS---模块与npm包管理工具
nodeJS---模块与npm包管理工具 一:从模块外部访问另一个模块内的成员; 假如我现在还在D盘中的node文件夹内中的app.js代码改成如下: var msg = 'hello'; var f ...
- 我为何放弃Gulp与Grunt,转投npm scripts(上)
本文来源于我在InfoQ中文站翻译的文章.原文地址是:http://www.infoq.com/cn/news/2016/02/gulp-grunt-npm-scripts-part1 Cory Ho ...
- NPM包管理器入门(附加cnpm : 无法加载文件错误解决方案)
NPM 包管理器 1.作用: 快速构建nodejs工程 快速安装和依赖第三个模块 2.使用方法 快速构建 npm init 会得到一package.json文件 { "name": ...
- nrm NPM源管理工具
nrm NPM源管理工具 工具 前端 npm cnpm 今天经过同事介绍,发现一个好玩的东西——nrm(NPM registry manager) nrm 是一个可以快速切换NPM源的node插件.由 ...
随机推荐
- js正则表达式入门以及常见用例
学习正则表达式的最好方法是从例子开始,理解例子之后再自己对例子进行修改,实验.下面给出了不少简单的例子,并对它们作了详细的说明. 假设你在一篇英文小说里查找hi,你可以使用正则表达式hi. 这几乎是最 ...
- Python系列之 - python循环语句
前两篇说的是数据类型和数据运算,本篇来讲讲条件语句和循环语句. 1. 条件语句 条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执 ...
- Python模块 - configparser
configparser模块用来对配置文件进行操作 1.获取所有块 import configparser config = configparser.ConfigParser() config.re ...
- 报错django.db.migrations.exceptions.InconsistentMigrationHistory
Pycharm强大的功能总是让我很是着迷,比如它的makemigrations 和 migrate. 然而某一次,当我再次敲下这熟悉的命令时,它报错了.... Traceback (most rece ...
- Headless Chrome:服务端渲染JS站点的一个方案【中篇】【翻译】
接上篇 防止重新渲染 其实说不对客户端代码做任何修改是忽悠人的.在我们的Express 应用中,通过Puppteer加载页面,提供给客户端响应,但是这个过程是有一些问题的. js脚本在服务端的Head ...
- 机器学习基石:Homework #0 SVD相关&常用矩阵求导公式
- TensorFlow学习笔记(MNIST报错修正 适用Tensorflow1.3)
在Tensorflow实战Google框架下的深度学习这本书的MNIST的图像识别例子中,每次都要报错 错误如下: Only call `sparse_softmax_cross_entropy_ ...
- [Codeforces 750E]New Year and Old Subsequence
Description 题库链接 给出一个长度为 \(n\) 的仅包含数字的字符串. \(q\) 次询问,每次询问该串 \([a,b]\) 段内删去几个数能够使其不含 \(2016\) 的子串,但存在 ...
- [Luogu 3414]SAC#1 - 组合数
Description 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌! 今天他萌上了组合数.现在他很想知道simga(C(n,i))是多少:其中C是组合数(即C(n,i)表示n个物品无顺序选取i个的方案 ...
- [CQOI2010]内部白点
Description 无限大正方形网格里有n个黑色的顶点,所有其他顶点都是白色的(网格的顶点即坐标为整数的点,又称整点).每秒钟,所有内部白点同时变黑,直到不存在内部白点为止.你的任务是统计最后网格 ...