Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
SCSS|ES6|ReactJS|Babel|Browserify|cssnano|uglify|imagmein
等常用组件,做到一站式自动化解决方案,同时清晰、可控,定制、修改都超简单##Introduction 说明
npm install gulpman --save-dev
后,可能需要手动安装gulp
、gulp-sass
模块gulp-sass
,建议使用淘宝的cnpm
来完成,避免国内网络导致npm
安装失败index.js
、lib
等目录和文件中源码的ES6语法##Install 安装 cd into your project dir and install:
npm install gulpman --save-dev
##Config 配置
###0. 支持傻瓜模式,无需配置即使用
Config 配置
处的说明,直接去看Usage 使用
###1. 配置 gulpfile.js:
gm:publish
, gm:develop
(开发监视模式)等task到环境中gulp gm:publish
即可执行gulpman预置的任务/**
* Gulpfile.js
*/
var gulp = require('gulp'),
gman = require('gulpman')
// your other tasks ...你的其他task
// xxx ...
/**
* 配置gulpman ======================
* Use config API
* 设置路径、CDN、资源URL前缀等,API超级简单
*/
gman.config({
// 是否使用绝对路径,默认值true, 推荐使用,方便服务器配置。比如`/static/home/main.js`这种风格。
// 如果无服务端情况下,本地调试,推荐设置is_absolute为false, 那么会是类似`../../assets/static/home/main.js`这种风格。
这种情况直接打开html文件就可以正常浏览和运行!
// `is_absolute` 具体取决于项目情况、服务端配置等。
// if set the assets url prefix as absolute or relative, default: true
'is_absolute': true,
// cdn prefix 配置CDN
'cdn_prefix': '', // 支持 字符串/数组/函数
// 配置资源URL前缀,建议 /xxx这种
// usually set as /static, this involves the server config ,such as the static path of nginx
'url_prefix': '/static'
// 模块COMPONENTS目录,同一个模块的html和资源文件在一起。默认 'components'即可
'components': 'components',
// develop和publish下的views目录,跟服务端框架的views目录配置一致,比如express
'runtime_views': 'views',
'dist_views': 'views_dist',
// develop和publish下的assets静态目录,跟服务器配置有关,比如nginx的static目录指向
'runtime_assets': 'assets',
'dist_assets': 'assets_dist',
// 第三方JS类库、模块的目录,推荐设置为`lib`或`bower_components`(这样bower可以直接安装到这个目录)
// 这个目录默认打包时为全局模块目录,可以直接`import xxx from 'xxx'`,而不用加相对路径
// the js library dir, set as a global module. Also you can set as bower_components
'lib': 'lib',
// 可以添加一个自定的全局模块目录,该目录下的js模块,也作为全局模块来require,不需要相对路径。
// the global module dir
'global': 'common'
})
###2. 如何更好的配置CDN
cdn_prefix
支持 字符串、数组、函数mediaFile
和hostFile
hostFile
是当前正在处理的html/CSS文件mediaFile
是指在hostFile
中被引用的资源文件
'cdn_prefix': function (mediaFile, hostFile) {
gulpman.util.warn(mediaFile)
gulpman.util.warn(hostFile)
var c_list = [
'http://s0.com',
'http://s1.com',
'http://s2.com',
'http://s3.com',
'http://s4.com'
]
// 你自可以自实现分配策略
if(hostFile.match(/\.html$/gm)){
return c_list[0]
}else {
return c_list[1]
}
},
###3. 对于is_absolute
的说明
is_absolute
是指输出的html文件中的资源src/url,否使用绝对路径,默认值true,即启用绝对目录。
[常用]当使用服务器配置静态目录的情况下,推荐使用绝对目录。比如配合nginx,指定某个目录为静态资源目录。类似/static/home/main.js
这种风格。
如果无服务端情况下,有需要本地调试,推荐设置is_absolute为false, 即启用相对路径。类似../../assets/static/home/main.js
这种风格。
当is_absolute为false(启用相对路径)的情况下,直接打开输出的views目录下的html文件,就可以正常浏览、运行、调试
###4. gulpman目录说明
使用gulpman按照模块划分后,模块根目录可以是./components
(默认,可配置),如果你有个模块是foo,那么应该有如下目录:./components/foo
,然后跟foo模块相关的html|js|css|fonts|image
等资源文件都放到foo
下,这个结构下,做开发时非常清晰、高效,便于模块组织、资源定位等。
通过gm:develop
命令进入develop
开发模式后,会自动生成模板views
目录,和静态资源assets
目录。
通过gm:publish
命令来构建发布资源,会自动生成生产环境下的模板目录views_dist
,和静态资源目录assets_dist
。
###5. 什么是全局模块目录:
对应Browserify
的打包功能,全局目录
是指可以直接require
或者import
其下的js模块的目录
gulpman.config
的配置中,lib
和global
都是JS的全局模块目录。举个例子说明:
components/lib
目录下有一个模块 foo.js
,就是: components/lib/foo.js
,那么你在你的es6文件中,就可以这样使用:import foo from 'foo'
,不需要写成 import foo from '../lib/foo'
同理global
那个配置也是这样的,推荐将lib目录设置成跟bower
一致的,全部来存放第三方类库,而global
设置的目录,比如叫common
,可以存放自己的公用模块
。这样开发会更加灵活、方便。
注意全局模块不要有同名冲突。
###6. 支持复杂目录和多级目录设定
gulpman.config({
'is_absolute': false,
'components': 'components/cc',
'runtime_views': 'runtime_views/rv',
'dist_views': 'dist_views/dv/dv',
'dist_assets': 'dist_assets/da',
'runtime_assets': 'runtime_assets/ra/ra',
})
##Usage 使用
###1. CLI 执行Task:
# 初始化目录,建立components目录并添加一份html的demo文件
# init components dir and a html demo
gulp gm:init
# develop and watch 开发模式,监视相关文件变动,增量更新
gulp gm:develop
# 指定监视某个component, 提高性能和效率
gulp gm:develop -c component_name
# publish 发布资源,包括合并、压缩资源、rev产生MD5等
gulp gm:publish
# publish命令支持`-a`和`-v`参数指定输出资源/模板目录
gulp gm:publish [-v views_dist] [-a assets_dist]
# clean 清理构建输出的目录和文件
gulp gm:clean
# 编译输出一份运行时资源文件,但是不进入监视状态
# compile for develop, not watch
gulp gm:compile
###2. 如何在gulpman架构下使用React
<script type="text/javascript" src="./lib/react-0.14.6/build/react.min.js"></script>
<script type="text/javascript" src="./lib/react-0.14.6/build/react-dom.min.js"></script>
注意:引入的react文件是为Gulpman预置的,已经修改过来兼容browserify,从而在window中暴露React和ReactDOM对象供开发者调用:
import 'react'
###3. 开发中只监视某个component目录
随着项目变大,开发中如果全局监视所有component资源,效率将会降低,因此可使用gulpman提供的监视子component的方式来开发,提高性能
比如说,只监视components目录下的home模块:
gulp gm:develop -c home
###4. 如何在HTML/CSS中嵌入base64编码的图片
?_gm_inline
即可base64
编码替换到到html中#####html
<p class="play">
<img width="480" alt="Karat 克拉" src="./img/testb64.png?_gm_inline" />
</p>
#####CSS/SCSS
.test {
background: url(./img/testb64.png?_gm_inline) no-repeat;
}
###5. 如何在HTML中嵌入内联CSS/JS
?_gm_inline
即可<script src="./plugin.js?_gm_inline" type="text/javascript"></script>
<link href="./dialog.css?_gm_inline" rel="stylesheet" type="text/css" >
###教程 浏览教程链接
###License MIT
FAQs
Create Modular Front-End Build System. Based on gulp, very easy and light
The npm package gulpman receives a total of 4 weekly downloads. As such, gulpman popularity was classified as not popular.
We found that gulpman demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.