博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webpack 1.x 配合npm scripts管理多站点
阅读量:5755 次
发布时间:2019-06-18

本文共 3810 字,大约阅读时间需要 12 分钟。

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

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

npm 添加淘宝镜像

你懂得

vim ~/.npmrcregistry = 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.jsvar 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.jsvar 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"  }}

转载于:https://www.cnblogs.com/xiangnan/p/6046406.html

你可能感兴趣的文章
《深入理解SPARK:核心思想与源码分析》(第1章)
查看>>
PostgreSQL standby replication error : invalid record length at %u
查看>>
从零开始_学_数据结构(二)——树的基本概念
查看>>
Android学习笔记(28):三种选择器DatePicker_TimePicker_NumberPicker
查看>>
Android学习笔记(31):滚动视图ScrollView
查看>>
Magento1.9.1.0重要改进之一--邮件异步队列发送
查看>>
JAVA泛型
查看>>
java实现微信图文消息的发送
查看>>
Java---MD5Util加密
查看>>
java synchronized详解
查看>>
关于悲观锁和乐观锁的区别(最直观理解)
查看>>
hugo-最好用的静态网站生成器
查看>>
upgrade module on pypi
查看>>
剖析一个由sendfile引发的linux内核BUG
查看>>
MySQL5.5加主键锁读问题—续
查看>>
CCString
查看>>
Camera2挖坑日记---如何解决预览画面变形
查看>>
View的事件体系
查看>>
[译] 小 Tips 让你的交互动画从 “还不错” 变成 “超级棒”
查看>>
Golang通道Channel详解
查看>>