包括来自多个模块的CSS (Sass)
Include CSS (Sass) from multiple modules
我正在整理一个将在npm上可用的repo。repo由多个模块组成,类似于react-传单和react-d3。应用程序开发人员将通过require
/import
从npm包中包含模块,例如:
import { ModuleOne, ModuleTwo } from 'myNpmPackage`;
我需要将CSS与每个模块一起打包,并且CSS将从每个模块中的Sass文件编译。
给定myNpmPackage
的文件夹结构,如:
├── src
│ ├── ModuleOne
│ │ ├── index.js
│ │ ├── style.scss
│ ├── ModuleTwo
│ │ ├── index.js
│ │ ├── style.scss
├── package.json
什么是一个好的发布流程,使这些.scss
文件(编译成.css
)可用于myNpmPackage
的消费者,而不要求消费者显式地包括/@import
/link rel="stylesheet"
的CSS?
我正在使用gulp和browserify,并且更愿意坚持使用管道。
UPDATE:我发现parcelify
确实一些我需要的。我将以下内容添加到myNpmPackage/package.json
:
"style": "src/**/*.scss",
"transforms": [
"sass-css-stream"
]
并将parcelify
添加到dependencies
中,使其与myNpmPackage
一起安装。
myNpmPackage
的消费者必须将以下内容添加到gulpfile
中:
parcelify(b, {
bundles: {
style: './build/modules.css'
}
});
parcelify
将使用myNpmPackage/package.json
中的"style"
glob来收集myNpmPackage
模块中的所有.scss
文件并将它们捆绑到./build/modules.css
中。
这已经实现了,但不是理想的,原因有两个:
- 每个模块的CSS文件都包含在消费者应用构建中,即使不是所有模块都包含在内;
- 该策略要求消费者应用程序开发人员将代码添加到他们的
gulpfile
中,而不是"仅仅工作"。
这是一个Webpack设置,它正好满足了你的需要:
- 只包含导入的模块CSS (
ModuleThree
不是)。 - 不需要更新一些
gulpfile.js
或*.config.js
,每个模块require
都有自己的样式表,就像任何其他依赖一样。
Bonus: module2展示了如何延迟加载CSS,还包含了一个背景图像,它将像任何依赖项一样包含在内。
注意:我没有使用ES2015语法,但如果你愿意,你可以使用babel-loader
这部分取决于您自己的开发管道。在构建应用程序时,你可以将所有的SCSS渲染成CSS。因此,假设你有一个渲染了所有样式的CSS文件,你可以使用gulp生态系统中的各种方法将其包含到JavaScript文件中,例如这个插件。
function addStyleString(str) {
var node = document.createElement('style');
node.innerHTML = str;
document.body.appendChild(node);
}
addStyleString('/* CSS File 1 */');
在你的胃管道中:
var gfi = require("gulp-file-insert");
gulp.src('./sample.js')
.pipe(gfi({
"/* CSS File 1 */": "path/to/main.css"
}))
.pipe(gulp.dest('./dist/'));
- CSS-如何定位内容数据标题
- 窗口大小html css
- 如果文本字段为空,则使用JavaScript应用CSS样式
- 动画.CSS重播
- 有没有一种方法可以防止img get请求使用css或js发生
- CSS表格:从列平移到整个表格宽度
- CKEditor-我在editor.css中的风格是't
- 单击更改图标并通过javascript添加一个css类
- 管理web组件的依赖关系;JS、CSS/SASS和模板文件
- gulp-sass @import CSS file
- 如何让 Grunt/Watch/LiveReload 在不刷新整页的情况下重新加载 Sass/CSS
- 如何包含css文件来吸收sass
- 如何使用Gulp最小化和自动前缀SASS/SCSS中的CSS文件
- 包括来自多个模块的CSS (Sass)
- Sass加载器不会将SCSS转换为css
- SASS + CSS Injecting with Gulp and BrowserSync
- Grunt Sass -多个css样式输出
- 在使用sass编译css文件后,使用grunt-contrib-watch来连接它们
- 有没有一种方法可以完全在浏览器中从SASS构建CSS
- Gulp sass和浏览器同步重新加载浏览器而不是注入css