Struct static_files::NpmBuild [−][src]
pub struct NpmBuild { /* fields omitted */ }
Executes npm
commands before collecting resources.
Example usage:
Add build.rs
with call to bundle resources:
use static_files::NpmBuild;
fn main() {
NpmBuild::new("./web")
.install().unwrap() // runs npm install
.run("build").unwrap() // runs npm run build
.target("./web/dist")
.to_resource_dir()
.build().unwrap();
}
Include generated code in main.rs
:
include!(concat!(env!("OUT_DIR"), "/generated.rs"));
Implementations
impl NpmBuild
[src]
impl NpmBuild
[src]pub fn new<P: AsRef<Path>>(package_json_dir: P) -> Self
[src]
pub fn executable(self, executable: &str) -> Self
[src]
Allow the user to set their own npm-like executable (like yarn, for instance)
pub fn change_detection(self) -> Self
[src]
Generates change detection instructions.
It includes package.json
directory, ignores by default node_modules
, package.json
and package-lock.json
and target directory.
Each time npm
changes timestamps on these files, so if we do not ignore them - it runs npm
each time.
It is recommended to put your dist files one level deeper. For example, if you have web
with package.json
and dist
just below that, you better generate you index.html somewhere in web\dist\sub_path\index.html
.
Reason is the same, npm
touches dist
each time and it touches the parent directory which in its turn triggers the build each time.
For complete example see: Angular Router Sample.
If default behavior does not work for you, you can use change-detection directly.
pub fn install(self) -> Result<Self>
[src]
Executes npm install
.
pub fn run(self, cmd: &str) -> Result<Self>
[src]
Executes npm run CMD
.
pub fn target<P: AsRef<Path>>(self, target_dir: P) -> Self
[src]
Sets target (default is node_modules).
pub fn to_resource_dir(self) -> ResourceDir
[src]
Converts to ResourceDir
.
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for NpmBuild
impl RefUnwindSafe for NpmBuild
impl UnwindSafe for NpmBuild
impl UnwindSafe for NpmBuild